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