|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // LUNA* の RAM のうち 16MB に満たないメモリブロックを担当する人
9: //
10:
11: #pragma once
12:
13: #include "device.h"
14:
15: class MainRAMDevice;
16:
17: class PartialRAMDevice : public IOContainerDevice
18: {
19: using inherited = IOContainerDevice;
20: public:
21: PartialRAMDevice();
22: virtual ~PartialRAMDevice() override;
23:
24: bool Init() override;
25:
26: uint64 Read8(uint32 addr) override;
27: uint64 Read16(uint32 addr) override;
28: uint64 Read32(uint32 addr) override;
29: uint64 Write8(uint32 addr, uint32 data) override;
30: uint64 Write16(uint32 addr, uint32 data) override;
31: uint64 Write32(uint32 addr, uint32 data) override;
32: uint64 Peek8(uint32 addr) override;
33:
34: protected:
35: IODevice *GetDevice(uint32 addr) const override;
36:
37: private:
38: inline IODevice *SearchDevice(uint32 addr) const;
39:
40: uint32 ram_size {};
41:
42: MainRAMDevice *ramdev {};
43: IODevice *nopdev {};
44: };
45:
46: static inline PartialRAMDevice *GetPartialRAMDevice() {
47: return Object::GetObject<PartialRAMDevice>(OBJ_PARTIAL_RAM);
48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.