|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2018 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #include "device.h" ! 9: ! 10: class XIOSpaceDevice ! 11: : public IODevice ! 12: { ! 13: typedef IODevice inherited; ! 14: public: ! 15: XIOSpaceDevice(); ! 16: virtual ~XIOSpaceDevice(); ! 17: ! 18: virtual uint64 Read8(uint32 addr); ! 19: virtual uint64 Read16(uint32 addr); ! 20: virtual uint64 Read32(uint32 addr); ! 21: virtual uint64 Write8(uint32 addr, uint32 data); ! 22: virtual uint64 Write16(uint32 addr, uint32 data); ! 23: virtual uint64 Write32(uint32 addr, uint32 data); ! 24: virtual uint64 Peek8(uint32 addr); ! 25: ! 26: private: ! 27: // アドレス addr に対応する IODevice* を返す。 ! 28: // addr は 24bit マスクされていること。 ! 29: inline IODevice *SearchDevice(uint32 addr) ! 30: { ! 31: uint idx = addr / 8192; ! 32: __assume(idx < 2048); ! 33: return table[idx]; ! 34: } ! 35: ! 36: void AddDevice(IODevice *dev); ! 37: ! 38: IODevice *table[2048] {}; ! 39: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.