--- nono/vm/gvram.h 2026/04/29 17:04:28 1.1 +++ nono/vm/gvram.h 2026/04/29 17:05:41 1.1.1.10 @@ -1,28 +1,33 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + +// +// GVRAM // #pragma once #include "device.h" -class GVRAMDevice - : public IODevice +class GVRAMDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; + static const uint32 baseaddr = 0xc0'0000; public: GVRAMDevice(); - virtual ~GVRAMDevice(); + ~GVRAMDevice() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + bool Init() override; + + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; private: - uint8 *mem = NULL; -}; + inline uint32 Decoder(uint32 addr) const; -extern GVRAMDevice *gGVRAM; + std::unique_ptr mem {}; +};