Files
kaizen/src/backend/core/MMIO.cpp
T
2026-03-23 12:11:07 +01:00

70 lines
1.3 KiB
C++

#include <core/MMIO.hpp>
#include <core/Mem.hpp>
namespace n64 {
void MMIO::Reset() {
rsp.Reset();
rdp.Reset();
mi.Reset();
vi.Reset();
ai.Reset();
pi.Reset();
ri.Reset();
si.Reset();
}
u32 MMIO::Read(u32 addr) {
switch (addr) {
case RSP_REGION:
return rsp.Read(addr);
case RDP_REGION:
return rdp.Read(addr);
case MI_REGION:
return mi.Read(addr);
case VI_REGION:
return vi.Read(addr);
case AI_REGION:
return ai.Read(addr);
case PI_REGION:
return pi.Read(addr);
case RI_REGION:
return ri.Read(addr);
case SI_REGION:
return si.Read(addr);
default:
panic("Unhandled mmio read at addr {:08X}", addr);
}
}
void MMIO::Write(const u32 addr, const u32 val) {
switch (addr) {
case RSP_REGION:
rsp.Write(addr, val);
break;
case RDP_REGION:
rdp.Write(addr, val);
break;
case MI_REGION:
mi.Write(addr, val);
break;
case VI_REGION:
vi.Write(addr, val);
break;
case AI_REGION:
ai.Write(addr, val);
break;
case PI_REGION:
pi.Write(addr, val);
break;
case RI_REGION:
ri.Write(addr, val);
break;
case SI_REGION:
si.Write(addr, val);
break;
default:
panic("Unhandled mmio write at addr {:08X} with val {:08X}", addr, val);
}
}
} // namespace n64