|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // LUNA88K のシステムコントローラのような何か ! 8: ! 9: #pragma once ! 10: ! 11: #include "device.h" ! 12: ! 13: class SysCtlrDevice ! 14: : public IODevice ! 15: { ! 16: using inherited = IODevice; ! 17: public: ! 18: SysCtlrDevice(); ! 19: ~SysCtlrDevice() override; ! 20: ! 21: bool MonitorUpdate() override; ! 22: ! 23: uint64 Read32(uint32 addr) override; ! 24: uint64 Write32(uint32 addr, uint32 data) override; ! 25: uint64 Peek8(uint32 addr) override; ! 26: ! 27: uint8 GetIntMask(int id) const { return intmask[id]; } ! 28: void TellIntLevel(int id, int level) { intlevel[id] |= level; } ! 29: private: ! 30: uint8 intmask[4] {}; ! 31: // 発生した割り込みのレベルビットマップ ! 32: uint8 intlevel[4] {}; ! 33: }; ! 34: ! 35: extern std::unique_ptr<SysCtlrDevice> gSysCtlr;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.