--- nono/vm/xiospace.h 2026/04/29 17:04:33 1.1.1.2 +++ nono/vm/xiospace.h 2026/04/29 17:04:50 1.1.1.6 @@ -1,27 +1,31 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once #include "device.h" +#include class XIOSpaceDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; public: XIOSpaceDevice(); - virtual ~XIOSpaceDevice(); + virtual ~XIOSpaceDevice() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Read32(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Write32(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + bool Init() override; + + uint64 Read8(uint32 addr) override; + uint64 Read16(uint32 addr) override; + uint64 Read32(uint32 addr) override; + uint64 Write8(uint32 addr, uint32 data) override; + uint64 Write16(uint32 addr, uint32 data) override; + uint64 Write32(uint32 addr, uint32 data) override; + uint64 Peek8(uint32 addr) override; private: // アドレス addr に対応する IODevice* を返す。 @@ -35,5 +39,7 @@ class XIOSpaceDevice void AddDevice(IODevice *dev); - IODevice *table[2048] {}; + std::array table {}; }; + +extern std::unique_ptr gXIOSpace;