#include #include #include namespace weee::core { serial_interface::serial_interface(mem &mem) { mem.register_read32_handler(0x0c006400, 0x0c0064ff, [&](ircolib::u32 addr) { return read32(addr); }); mem.register_write32_handler(0x0c006400, 0x0c0064ff, [&](ircolib::u32 addr, ircolib::u32 value) { return write32(addr, value); }); } ircolib::u32 serial_interface::read32(ircolib::u32 addr) { switch (addr) { case 0x30: return sipoll.raw; case 0x34: return sicomcsr.raw; case 0x38: return sisr.raw; case 0x3C: return clock_lk.raw; default: ircolib::panic("serial_interface::read32 from unimplemented addr 0x{:08X}", addr); return 0; } } void serial_interface::write32(ircolib::u32 addr, ircolib::u32 value) { switch (addr) { case 0x30: sipoll.raw = value; break; case 0x34: sicomcsr.raw = value; break; case 0x38: sisr.raw = value; break; case 0x3C: clock_lk.raw = value; break; default: ircolib::panic("serial_interface::write32 to unimplemented addr 0x{:08X} with value 0x{:08X}", addr, value); } } } // namespace weee::core