#include #include #include namespace weee::core { exi::exi(mem &mem) { mem.register_read32_handler(0x0c006800, 0x0c00683f, [&](ircolib::u32 addr) { return read32(addr); }); mem.register_write32_handler(0x0c006800, 0x0c00683f, [&](ircolib::u32 addr, ircolib::u32 value) { return write32(addr, value); }); } ircolib::u32 exi::read32(ircolib::u32 addr) { switch (addr) { case 0: return param0.raw; case 0x14: return param1.raw; case 0x28: return param2.raw; default: ircolib::panic("exi::read32 from unimplemented addr 0x{:08X}", addr); return 0; } } void exi::write32(ircolib::u32 addr, ircolib::u32 value) { switch (addr) { case 0: param0.raw = value; break; case 0x14: param1.raw = value; break; case 0x28: param2.raw = value; break; default: ircolib::panic("exi::write32 to unimplemented addr 0x{:08X} with value 0x{:08X}", addr, value); } } } // namespace weee::core