|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2018 [email protected]
4: //
5:
6: #include "gvram.h"
7: #include "vicon.h"
8:
9: //
10: // GVRAM
11: //
12: // GVRAM はワード単位でホストバイトオーダ配置なので、
13: // バイトアクセス時は HB() マクロを使用のこと。
14: //
15:
16: GVRAMDevice *gGVRAM;
17:
18: GVRAMDevice::GVRAMDevice()
19: {
20: logname = "gvram";
21: devname = "GVRAM";
22: devaddr = 0xc00000;
23: devlen = 0x200000; // XXX とりあえず
24:
25: mem = new uint8[devlen];
26: }
27:
28: GVRAMDevice::~GVRAMDevice()
29: {
30: delete[] mem;
31: }
32:
33: uint64
34: GVRAMDevice::Read8(uint32 addr)
35: {
36: uint32 offset = addr - devaddr;
37: return mem[HB(offset)];
38: }
39:
40: uint64
41: GVRAMDevice::Read16(uint32 addr)
42: {
43: uint32 offset = addr - devaddr;
44: return *(uint16 *)&mem[offset];
45: }
46:
47: uint64
48: GVRAMDevice::Write8(uint32 addr, uint32 data)
49: {
50: uint32 offset = addr - devaddr;
51: mem[HB(offset)] = data;
52: return 0;
53: }
54:
55: uint64
56: GVRAMDevice::Write16(uint32 addr, uint32 data)
57: {
58: uint32 offset = addr - devaddr;
59: *(uint16 *)&mem[offset] = data;
60: return 0;
61: }
62:
63: uint64
64: GVRAMDevice::Peek8(uint32 addr)
65: {
66: return mem[HB(addr - devaddr)];
67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.