--- nono/m88xx0/m88200.h 2026/04/29 17:05:22 1.1.1.9 +++ nono/m88xx0/m88200.h 2026/04/29 17:05:30 1.1.1.11 @@ -11,7 +11,6 @@ #include "device.h" #include "bus.h" #include "mainbus.h" -#include "monitor.h" #include class MPU88xx0Device; @@ -142,9 +141,9 @@ class m88200CacheSet // 更新用に最も古いラインを選んで差し出す int SelectOldestLine() const; - void Update(int line, Status status); + void Update(uint line, Status status); - void Write(int line, uint32 paddr, uint32 data, int size); + void Write(uint line, uint32 paddr, uint32 data, uint size); // キャッシュを検索して、ヒットした line を返す。 int Lookup(uint32 tagaddr) const; @@ -170,9 +169,9 @@ class m88200 : public Device MPU88xx0Device *parent {}; // モニター - Monitor reg_monitor { this }; - Monitor atc_monitor { this }; - Monitor cache_monitor { this }; + Monitor *reg_monitor {}; + Monitor *atc_monitor {}; + Monitor *cache_monitor {}; public: // @@ -401,19 +400,18 @@ class m88200 : public Device // アクセス関数 // private: - template uint64 load(uint32 addr); - template uint64 store(uint32 addr, uint32 data); - template uint64 xmem(uint32 addr, uint32 data); + template uint64 load(uint32 addr); + template uint64 store(uint32 addr, uint32 data); + template uint64 xmem(uint32 addr, uint32 data); public: - uint64 load_8(uint32 addr); - uint64 load_16(uint32 addr); - uint64 load_32(uint32 addr); - uint64 store_8(uint32 addr, uint32 data); - uint64 store_16(uint32 addr, uint32 data); - uint64 store_32(uint32 addr, uint32 data); - uint64 xmem_8(uint32 addr, uint32 data); - uint64 xmem_16(uint32 addr, uint32 data); - uint64 xmem_32(uint32 addr, uint32 data); + uint64 load_1(uint32 addr); + uint64 load_2(uint32 addr); + uint64 load_4(uint32 addr); + uint64 store_1(uint32 addr, uint32 data); + uint64 store_2(uint32 addr, uint32 data); + uint64 store_4(uint32 addr, uint32 data); + uint64 xmem_1(uint32 addr, uint32 data); + uint64 xmem_4(uint32 addr, uint32 data); // // 現在のアクセス中の状態。 @@ -563,22 +561,22 @@ class m88200 : public Device private: std::array setarray {}; // キャッシュラインにメモリから読み込む - uint64 ReadLine(m88200CacheSet& set, int line, uint32 tagaddr); + uint64 ReadLine(m88200CacheSet& set, uint line, uint32 tagaddr); // キャッシュラインをメモリに書き出す - uint64 CopyBackLine(m88200CacheSet& set, int line); + uint64 CopyBackLine(m88200CacheSet& set, uint line); public: // キャッシュに対して paddr の読み込みを行う uint64 CacheRead(uint32 paddr); // キャッシュに対して paddr への書き込みを行う - uint64 CacheWrite(uint32 paddr, uint32 data, int size); - uint64 CacheWriteHit(m88200CacheSet& set, int line, - uint32 paddr, uint32 data, int size); - uint64 CacheXmem(uint32 paddr, uint32 data, int size); + uint64 CacheWrite(uint32 paddr, uint32 data, uint size); + uint64 CacheWriteHit(m88200CacheSet& set, uint line, + uint32 paddr, uint32 data, uint size); + uint64 CacheXmem(uint32 paddr, uint32 data, uint size); // モニタスクリーン作成用 - void MonitorCacheSet(TextScreen&, int y, int setidx); - void MonitorCacheOverview(TextScreen&, int y, int cursor, bool is_gui); + void MonitorCacheSet(TextScreen&, int y, uint setidx); + void MonitorCacheOverview(TextScreen&, int y, uint cursor, bool is_gui); void MonitorCacheOverview(TextScreen& s, int y, bool is_gui) { MonitorCacheOverview(s, y, -1, is_gui); } @@ -595,9 +593,9 @@ class m88200 : public Device void MBusAcquire(); void MBusRelease() { } // 他 CMMU にスヌープさせる (バスマスタ側) - void MBusMakeSnoop(uint32, int); + void MBusMakeSnoop(uint32, uint); // バススヌープを行う (スレーブ側) - void Snoop(uint32, int); + void Snoop(uint32, uint); MainbusDevice *mainbus {};