On 21 August 2018 at 12:43, Steffen Görtz <[email protected]> wrote: > 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.
Oh, I see. I hadn't noticed that it was doing read-as-all-ones. thanks -- PMM
