Hi Peter, >> + >> +static uint64_t clock_read(void *opaque, hwaddr addr, unsigned int size) >> +{ >> + qemu_log_mask(LOG_UNIMP, "%s: 0x%" HWADDR_PRIx " [%u]\n", >> + __func__, addr, size); >> + return 1; >> +} >> + >> +static void clock_write(void *opaque, hwaddr addr, uint64_t data, >> + unsigned int size) >> +{ >> + qemu_log_mask(LOG_UNIMP, "%s: 0x%" HWADDR_PRIx " <- 0x%" PRIx64 " >> [%u]\n", >> + __func__, addr, data, size); >> +} >> + >> +static const MemoryRegionOps clock_ops = { >> + .read = clock_read, >> + .write = clock_write >> +}; > > You don't need to roll your own "do nothing but log" device: > you can use the TYPE_UNIMPLEMENTED_DEVICE to do this. > Until we have a more proper STUB for POWER/CLOCK/MPU peripherals we actually need this, because the unimplemented device will return 0 on reads which will cause guest code to stall.
Agree to and regarded the rest of your remarks. Steffen