add memory_region_add_subregion_overlap

This commit is contained in:
Takacs, Philipp
2022-12-16 13:46:24 +01:00
parent aee4038526
commit cd85f589a2
19 changed files with 32 additions and 2 deletions

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_aarch64
#define memory_region_add_subregion memory_region_add_subregion_aarch64
#define memory_region_del_subregion memory_region_del_subregion_aarch64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_aarch64
#define memory_region_find memory_region_find_aarch64
#define memory_listener_register memory_listener_register_aarch64
#define memory_listener_unregister memory_listener_unregister_aarch64

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_arm
#define memory_region_add_subregion memory_region_add_subregion_arm
#define memory_region_del_subregion memory_region_del_subregion_arm
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_arm
#define memory_region_find memory_region_find_arm
#define memory_listener_register memory_listener_register_arm
#define memory_listener_unregister memory_listener_unregister_arm

View File

@@ -1186,6 +1186,7 @@ MemoryRegion *memory_map(struct uc_struct *uc, hwaddr begin, size_t size, uint32
MemoryRegion *memory_map_ptr(struct uc_struct *uc, hwaddr begin, size_t size, uint32_t perms, void *ptr);
MemoryRegion *memory_map_io(struct uc_struct *uc, ram_addr_t begin, size_t size, uc_cb_mmio_read_t read_cb,
uc_cb_mmio_write_t write_cb, void *user_data_read, void *user_data_write);
MemoryRegion *memory_cow(struct uc_struct *uc, MemoryRegion *parrent, hwaddr begin, size_t size);
void memory_unmap(struct uc_struct *uc, MemoryRegion *mr);
int memory_free(struct uc_struct *uc);

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_m68k
#define memory_region_add_subregion memory_region_add_subregion_m68k
#define memory_region_del_subregion memory_region_del_subregion_m68k
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_m68k
#define memory_region_find memory_region_find_m68k
#define memory_listener_register memory_listener_register_m68k
#define memory_listener_unregister memory_listener_unregister_m68k

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_mips
#define memory_region_add_subregion memory_region_add_subregion_mips
#define memory_region_del_subregion memory_region_del_subregion_mips
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_mips
#define memory_region_find memory_region_find_mips
#define memory_listener_register memory_listener_register_mips
#define memory_listener_unregister memory_listener_unregister_mips

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_mips64
#define memory_region_add_subregion memory_region_add_subregion_mips64
#define memory_region_del_subregion memory_region_del_subregion_mips64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_mips64
#define memory_region_find memory_region_find_mips64
#define memory_listener_register memory_listener_register_mips64
#define memory_listener_unregister memory_listener_unregister_mips64

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_mips64el
#define memory_region_add_subregion memory_region_add_subregion_mips64el
#define memory_region_del_subregion memory_region_del_subregion_mips64el
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_mips64el
#define memory_region_find memory_region_find_mips64el
#define memory_listener_register memory_listener_register_mips64el
#define memory_listener_unregister memory_listener_unregister_mips64el

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_mipsel
#define memory_region_add_subregion memory_region_add_subregion_mipsel
#define memory_region_del_subregion memory_region_del_subregion_mipsel
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_mipsel
#define memory_region_find memory_region_find_mipsel
#define memory_listener_register memory_listener_register_mipsel
#define memory_listener_unregister memory_listener_unregister_mipsel

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_ppc
#define memory_region_add_subregion memory_region_add_subregion_ppc
#define memory_region_del_subregion memory_region_del_subregion_ppc
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_ppc
#define memory_region_find memory_region_find_ppc
#define memory_listener_register memory_listener_register_ppc
#define memory_listener_unregister memory_listener_unregister_ppc

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_ppc64
#define memory_region_add_subregion memory_region_add_subregion_ppc64
#define memory_region_del_subregion memory_region_del_subregion_ppc64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_ppc64
#define memory_region_find memory_region_find_ppc64
#define memory_listener_register memory_listener_register_ppc64
#define memory_listener_unregister memory_listener_unregister_ppc64

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_riscv32
#define memory_region_add_subregion memory_region_add_subregion_riscv32
#define memory_region_del_subregion memory_region_del_subregion_riscv32
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_riscv32
#define memory_region_find memory_region_find_riscv32
#define memory_listener_register memory_listener_register_riscv32
#define memory_listener_unregister memory_listener_unregister_riscv32

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_riscv64
#define memory_region_add_subregion memory_region_add_subregion_riscv64
#define memory_region_del_subregion memory_region_del_subregion_riscv64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_riscv64
#define memory_region_find memory_region_find_riscv64
#define memory_listener_register memory_listener_register_riscv64
#define memory_listener_unregister memory_listener_unregister_riscv64

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_s390x
#define memory_region_add_subregion memory_region_add_subregion_s390x
#define memory_region_del_subregion memory_region_del_subregion_s390x
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_s390x
#define memory_region_find memory_region_find_s390x
#define memory_listener_register memory_listener_register_s390x
#define memory_listener_unregister memory_listener_unregister_s390x

View File

@@ -1116,9 +1116,11 @@ static void memory_region_update_container_subregions(MemoryRegion *subregion)
memory_region_transaction_begin();
QTAILQ_FOREACH(other, &mr->subregions, subregions_link) {
if (subregion->priority >= other->priority) {
QTAILQ_INSERT_BEFORE(other, subregion, subregions_link);
goto done;
}
}
QTAILQ_INSERT_TAIL(&mr->subregions, subregion, subregions_link);
done:
@@ -1141,6 +1143,16 @@ void memory_region_add_subregion(MemoryRegion *mr,
hwaddr offset,
MemoryRegion *subregion)
{
subregion->priority = 0;
memory_region_add_subregion_common(mr, offset, subregion);
}
void memory_region_add_subregion_overlap(MemoryRegion *mr,
hwaddr offset,
MemoryRegion *subregion,
int priority)
{
subregion->priority = priority;
memory_region_add_subregion_common(mr, offset, subregion);
}

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_sparc
#define memory_region_add_subregion memory_region_add_subregion_sparc
#define memory_region_del_subregion memory_region_del_subregion_sparc
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_sparc
#define memory_region_find memory_region_find_sparc
#define memory_listener_register memory_listener_register_sparc
#define memory_listener_unregister memory_listener_unregister_sparc

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_sparc64
#define memory_region_add_subregion memory_region_add_subregion_sparc64
#define memory_region_del_subregion memory_region_del_subregion_sparc64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_sparc64
#define memory_region_find memory_region_find_sparc64
#define memory_listener_register memory_listener_register_sparc64
#define memory_listener_unregister memory_listener_unregister_sparc64

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_tricore
#define memory_region_add_subregion memory_region_add_subregion_tricore
#define memory_region_del_subregion memory_region_del_subregion_tricore
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_tricore
#define memory_region_find memory_region_find_tricore
#define memory_listener_register memory_listener_register_tricore
#define memory_listener_unregister memory_listener_unregister_tricore

View File

@@ -142,6 +142,7 @@
#define memory_region_get_ram_addr memory_region_get_ram_addr_x86_64
#define memory_region_add_subregion memory_region_add_subregion_x86_64
#define memory_region_del_subregion memory_region_del_subregion_x86_64
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_x86_64
#define memory_region_find memory_region_find_x86_64
#define memory_listener_register memory_listener_register_x86_64
#define memory_listener_unregister memory_listener_unregister_x86_64

View File

@@ -142,6 +142,7 @@ memory_region_from_host \
memory_region_get_ram_addr \
memory_region_add_subregion \
memory_region_del_subregion \
memory_region_add_subregion_overlap \
memory_region_find \
memory_listener_register \
memory_listener_unregister \