mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 05:35:39 +00:00
memory: Add internal memory_region_set_ops helper function
This is a common operation used at multiple places, add a helper function for it. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <25045c95c083e31c6773521ecfe41900738b7bb5.1770042013.git.balaton@eik.bme.hu> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
committed by
Philippe Mathieu-Daudé
parent
5cf3908f70
commit
5cb466d7ca
@@ -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. */
|
||||
@@ -3780,9 +3785,7 @@ bool memory_region_init_rom_device(MemoryRegion *mr,
|
||||
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user