Introduce internal helper function to remove duplicated code from
different memory_region_init_ram_*ptr functions.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
system/memory.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/system/memory.c b/system/memory.c
index 2cda814bd6..f1db72eb42 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -1649,31 +1649,30 @@ bool memory_region_init_ram_from_fd(MemoryRegion *mr, Object *owner,
}
#endif
+static void memory_region_set_ram_ptr(MemoryRegion *mr, uint64_t size,
+ void *ptr)
+{
+ /* qemu_ram_alloc_from_ptr cannot fail with ptr != NULL. */
+ assert(ptr != NULL);
+ RAMBlock *rb = qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort);
+ memory_region_set_ram_block(mr, rb);
+}
+
void memory_region_init_ram_ptr(MemoryRegion *mr, Object *owner,
const char *name, uint64_t size,
void *ptr)
{
- RAMBlock *rb;
-
memory_region_init(mr, owner, name, size);
- /* qemu_ram_alloc_from_ptr cannot fail with ptr != NULL. */
- assert(ptr != NULL);
- rb = qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort);
- memory_region_set_ram_block(mr, rb);
+ memory_region_set_ram_ptr(mr, size, ptr);
}
void memory_region_init_ram_device_ptr(MemoryRegion *mr, Object *owner,
const char *name, uint64_t size,
void *ptr)
{
- RAMBlock *rb;
-
memory_region_init_io(mr, owner, &ram_device_mem_ops, mr, name, size);
mr->ram_device = true;
- /* qemu_ram_alloc_from_ptr cannot fail with ptr != NULL. */
- assert(ptr != NULL);
- rb = qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort);
- memory_region_set_ram_block(mr, rb);
+ memory_region_set_ram_ptr(mr, size, ptr);
}
void memory_region_init_alias(MemoryRegion *mr, Object *owner,
--
2.41.3