|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2018 [email protected]
4: //
5:
6: #pragma once
7:
8: #include "device.h"
9: #include <mutex>
10:
11: class ZRAMDevice
12: : public IODevice
13: {
14: typedef IODevice inherited;
15: public:
16: ZRAMDevice();
17: virtual ~ZRAMDevice();
18:
19: virtual uint64 Read8(uint32 addr);
20: virtual uint64 Read16(uint32 addr);
21: virtual uint64 Read32(uint32 addr);
22: virtual uint64 Write8(uint32 addr, uint32 data);
23: virtual uint64 Write16(uint32 addr, uint32 data);
24: virtual uint64 Write32(uint32 addr, uint32 data);
25: virtual uint64 Peek8(uint32 addr);
26:
27: private:
1.1.1.2 ! root 28: // アドレスデコーダ
! 29: uint64 Decoder(uint32 addr) const;
! 30:
! 31: std::unique_ptr<uint8[]> ram {};
1.1 root 32:
33: // アクセス競合を防ぐロック。
34: // Lance は裏スレッドからアクセスにくるので。
35: std::mutex mtx {};
36: };
37:
1.1.1.2 ! root 38: extern std::unique_ptr<ZRAMDevice> gZRAM;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.