--- nono/vm/mpu.h 2026/04/29 17:05:09 1.1.1.11 +++ nono/vm/mpu.h 2026/04/29 17:05:16 1.1.1.13 @@ -5,7 +5,7 @@ // // -// MPU 共通部 +// メイン MPU (680x0/88xx0) 共通部 // #pragma once @@ -14,11 +14,15 @@ #include "event.h" #include "message.h" +class Debugger; +class MainbusDevice; +class Syncer; + class MPUDevice : public Device { using inherited = Device; public: - MPUDevice(const std::string& objname_); + MPUDevice(); virtual ~MPUDevice() override; bool Init() override; @@ -39,6 +43,9 @@ class MPUDevice : public Device // MPU クロック [kHz] を取得する。 int GetClockSpeed() const { return clock_khz; } + // MPU クロック [nsec] を取得する。 + uint64 GetClock_nsec() const { return clock_nsec; } + // アクセスウェイトを加算 virtual void AddCycle(int32 cycle) = 0; @@ -61,7 +68,13 @@ class MPUDevice : public Device virtual void SetTrace(bool trace_on) = 0; int clock_khz {}; // MPU クロック [kHz] - int clock_nsec {}; // MPU クロック [nsec] + uint64 clock_nsec {}; // MPU クロック [nsec] + + bool resetting {}; // リセット処理中フラグ + + Debugger *debugger {}; + MainbusDevice *mainbus {}; + Syncer *syncer {}; // 1命令実行イベント Event exec_event { this }; @@ -70,4 +83,9 @@ class MPUDevice : public Device static const char * const rmstr[4]; }; +// XXX 互換性のためまだしばらく必要 extern MPUDevice *gMPU; + +static inline MPUDevice *GetMPUDevice() { + return Object::GetObject(OBJ_MPU); +}