This is a common operation used at multiple places, add a helper function for it.
Signed-off-by: BALATON Zoltan <[email protected]> --- system/memory.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/system/memory.c b/system/memory.c index 8b84661ae3..a003095632 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1559,6 +1559,15 @@ MemTxResult memory_region_dispatch_write(MemoryRegion *mr, } } +static void memory_region_set_ops(MemoryRegion *mr, + const MemoryRegionOps *ops, + void *opaque) +{ + mr->ops = ops ?: &unassigned_mem_ops; + mr->opaque = opaque; + mr->terminates = true; +} + void memory_region_init_io(MemoryRegion *mr, Object *owner, const MemoryRegionOps *ops, @@ -1567,9 +1576,7 @@ void memory_region_init_io(MemoryRegion *mr, uint64_t size) { memory_region_init(mr, owner, name, size); - mr->ops = ops ? ops : &unassigned_mem_ops; - mr->opaque = opaque; - mr->terminates = true; + memory_region_set_ops(mr, ops, opaque); } bool memory_region_init_ram_nomigrate(MemoryRegion *mr, @@ -1710,10 +1717,8 @@ void memory_region_init_ram_device_ptr(MemoryRegion *mr, { memory_region_init(mr, owner, name, size); mr->ram = true; - mr->terminates = true; mr->ram_device = true; - mr->ops = &ram_device_mem_ops; - mr->opaque = mr; + memory_region_set_ops(mr, &ram_device_mem_ops, mr); mr->destructor = memory_region_destructor_ram; /* qemu_ram_alloc_from_ptr cannot fail with ptr != NULL. */ @@ -1759,9 +1764,7 @@ bool memory_region_init_rom_device_nomigrate(MemoryRegion *mr, Error *err = NULL; assert(ops); memory_region_init(mr, owner, name, size); - mr->ops = ops; - mr->opaque = opaque; - mr->terminates = true; + memory_region_set_ops(mr, ops, opaque); mr->rom_device = true; mr->destructor = memory_region_destructor_ram; mr->ram_block = qemu_ram_alloc(size, 0, mr, &err); -- 2.41.3
