extern "C" void LIBH_write(uint64_t addr, uint8_t *buf, int size) { if (addr >= 0x80000000 && addr < 0x80001000) { // GPIO } else if (uart0.isAddrValid(addr)) { uart0.write(addr, buf, size); } else if (irqctrl.isAddrValid(addr)) { irqctrl.write(addr, buf, size); } else if (addr >= 0x80005000 && addr < 0x80006000) { // GP timers } else { std::cout << "Unmapped access\n"; } }