--- nono/vm/mpu.h 2026/04/29 17:04:36 1.1.1.3 +++ nono/vm/mpu.h 2026/04/29 17:04:42 1.1.1.4 @@ -9,6 +9,7 @@ #pragma once #include "device.h" +#include "event.h" class MPUDevice : public Device { @@ -17,6 +18,8 @@ class MPUDevice : public Device MPUDevice(); ~MPUDevice() override; + virtual void ResetHard() override; + // MPU を request サイクル分実行する virtual uint32 Run(uint64 request) = 0; @@ -37,8 +40,15 @@ class MPUDevice : public Device virtual uint32 GetLaddr() const = 0; virtual uint32 GetPaddr() const = 0; + // アクセスウェイトを加算 + virtual void AddCycle(uint64 cycle) = 0; + // 割り込み発生を MPU に通知 (オートベクタ) virtual void Interrupt(Object *src, int level) = 0; + + protected: + // リセット例外を起こすイベント + Event reset_event {}; }; extern std::unique_ptr gMPU;