--- nono/vm/spc.h 2026/04/29 17:04:32 1.1.1.3 +++ nono/vm/spc.h 2026/04/29 17:04:36 1.1.1.4 @@ -1,14 +1,15 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once #include "device.h" -#include "scsidev.h" -#include "scheduler.h" #include "fixedqueue.h" +#include "scheduler.h" +#include "scsidev.h" #include "vm.h" struct SPC @@ -127,28 +128,27 @@ struct SPC class SPCDevice : public SCSIHostDevice { - typedef SCSIHostDevice inherited; + using inherited = SCSIHostDevice; public: SPCDevice(); - virtual ~SPCDevice(); + ~SPCDevice() override; - virtual bool Init(); - virtual void ResetHard(); - virtual void ResetSoft(); - void Reset(); + bool Init() override; + void ResetHard() override; + void ResetSoft() override; - virtual bool MonitorUpdate(); + bool MonitorUpdate() override; // SCSIBus コールバック // バスフリーになった (全員に通知される) - virtual void BusFreeCB(int id); + void BusFreeCB(int id) override; // ターゲットがセレクションに応答した (イニシエータのみ通知される) - virtual void SelectionAckCB(); + void SelectionAckCB() override; // 情報転送フェーズで REQ を立てた (イニシエータのみ通知される) - virtual void TransferReqCB(); + void TransferReqCB() override; protected: // BusIO インタフェース @@ -158,6 +158,8 @@ class SPCDevice : public SCSIHostDevice uint64 Peek(uint32 addr); private: + void Reset(); + void MonitorReg(int x, int y, uint32 reg, const char * const *names); // SCTL レジスタへの書き込み