diff --git a/qemu/aarch64.h b/qemu/aarch64.h index ee59f99d..bc7bda24 100644 --- a/qemu/aarch64.h +++ b/qemu/aarch64.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_aarch64 #define cpu_address_space_init cpu_address_space_init_aarch64 #define cpu_exec_init_all cpu_exec_init_all_aarch64 +#define cpu_get_address_space cpu_get_address_space_aarch64 #define vm_start vm_start_aarch64 #define resume_all_vcpus resume_all_vcpus_aarch64 #define a15_l2ctlr_read a15_l2ctlr_read_aarch64 diff --git a/qemu/aarch64eb.h b/qemu/aarch64eb.h index 0033ca2e..1693d98c 100644 --- a/qemu/aarch64eb.h +++ b/qemu/aarch64eb.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_aarch64eb #define cpu_address_space_init cpu_address_space_init_aarch64eb #define cpu_exec_init_all cpu_exec_init_all_aarch64eb +#define cpu_get_address_space cpu_get_address_space_aarch64eb #define vm_start vm_start_aarch64eb #define resume_all_vcpus resume_all_vcpus_aarch64eb #define a15_l2ctlr_read a15_l2ctlr_read_aarch64eb diff --git a/qemu/arm.h b/qemu/arm.h index f67c393d..1948188d 100644 --- a/qemu/arm.h +++ b/qemu/arm.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_arm #define cpu_address_space_init cpu_address_space_init_arm #define cpu_exec_init_all cpu_exec_init_all_arm +#define cpu_get_address_space cpu_get_address_space_arm #define vm_start vm_start_arm #define resume_all_vcpus resume_all_vcpus_arm #define a15_l2ctlr_read a15_l2ctlr_read_arm diff --git a/qemu/armeb.h b/qemu/armeb.h index 06171dd4..4c6f3026 100644 --- a/qemu/armeb.h +++ b/qemu/armeb.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_armeb #define cpu_address_space_init cpu_address_space_init_armeb #define cpu_exec_init_all cpu_exec_init_all_armeb +#define cpu_get_address_space cpu_get_address_space_armeb #define vm_start vm_start_armeb #define resume_all_vcpus resume_all_vcpus_armeb #define a15_l2ctlr_read a15_l2ctlr_read_armeb diff --git a/qemu/exec.c b/qemu/exec.c index 48f4f1df..4d9e1992 100644 --- a/qemu/exec.c +++ b/qemu/exec.c @@ -412,6 +412,12 @@ void cpu_address_space_init(CPUState *cpu, AddressSpace *as, int asidx) memory_listener_register(as->uc, &newas->tcg_as_listener, as); } } + +AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx) +{ + /* Return the AddressSpace corresponding to the specified index */ + return cpu->cpu_ases[asidx].as; +} #endif void cpu_exec_init(CPUState *cpu, void *opaque) diff --git a/qemu/header_gen.py b/qemu/header_gen.py index ea45cecd..8267baef 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -55,6 +55,7 @@ symbols = ( 'memory_register_types', 'cpu_address_space_init', 'cpu_exec_init_all', + 'cpu_get_address_space', 'vm_start', 'resume_all_vcpus', 'a15_l2ctlr_read', diff --git a/qemu/include/exec/exec-all.h b/qemu/include/exec/exec-all.h index c795b877..7148da04 100644 --- a/qemu/include/exec/exec-all.h +++ b/qemu/include/exec/exec-all.h @@ -101,6 +101,15 @@ void QEMU_NORETURN cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc); * Note that with KVM only one address space is supported. */ void cpu_address_space_init(CPUState *cpu, AddressSpace *as, int asidx); +/** + * cpu_get_address_space: + * @cpu: CPU to get address space from + * @asidx: index identifying which address space to get + * + * Return the requested address space of this CPU. @asidx + * specifies which address space to read. + */ +AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx); /* cputlb.c */ /** * tlb_flush_page: diff --git a/qemu/m68k.h b/qemu/m68k.h index e20aad29..0cd208ef 100644 --- a/qemu/m68k.h +++ b/qemu/m68k.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_m68k #define cpu_address_space_init cpu_address_space_init_m68k #define cpu_exec_init_all cpu_exec_init_all_m68k +#define cpu_get_address_space cpu_get_address_space_m68k #define vm_start vm_start_m68k #define resume_all_vcpus resume_all_vcpus_m68k #define a15_l2ctlr_read a15_l2ctlr_read_m68k diff --git a/qemu/mips.h b/qemu/mips.h index 2e851ca2..81d1dd2f 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_mips #define cpu_address_space_init cpu_address_space_init_mips #define cpu_exec_init_all cpu_exec_init_all_mips +#define cpu_get_address_space cpu_get_address_space_mips #define vm_start vm_start_mips #define resume_all_vcpus resume_all_vcpus_mips #define a15_l2ctlr_read a15_l2ctlr_read_mips diff --git a/qemu/mips64.h b/qemu/mips64.h index 814f54d7..e93a1c06 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_mips64 #define cpu_address_space_init cpu_address_space_init_mips64 #define cpu_exec_init_all cpu_exec_init_all_mips64 +#define cpu_get_address_space cpu_get_address_space_mips64 #define vm_start vm_start_mips64 #define resume_all_vcpus resume_all_vcpus_mips64 #define a15_l2ctlr_read a15_l2ctlr_read_mips64 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index 2b239d1f..45a117e2 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_mips64el #define cpu_address_space_init cpu_address_space_init_mips64el #define cpu_exec_init_all cpu_exec_init_all_mips64el +#define cpu_get_address_space cpu_get_address_space_mips64el #define vm_start vm_start_mips64el #define resume_all_vcpus resume_all_vcpus_mips64el #define a15_l2ctlr_read a15_l2ctlr_read_mips64el diff --git a/qemu/mipsel.h b/qemu/mipsel.h index d7ffadd8..2d8dd39f 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_mipsel #define cpu_address_space_init cpu_address_space_init_mipsel #define cpu_exec_init_all cpu_exec_init_all_mipsel +#define cpu_get_address_space cpu_get_address_space_mipsel #define vm_start vm_start_mipsel #define resume_all_vcpus resume_all_vcpus_mipsel #define a15_l2ctlr_read a15_l2ctlr_read_mipsel diff --git a/qemu/powerpc.h b/qemu/powerpc.h index 132c5b32..7cdcb05e 100644 --- a/qemu/powerpc.h +++ b/qemu/powerpc.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_powerpc #define cpu_address_space_init cpu_address_space_init_powerpc #define cpu_exec_init_all cpu_exec_init_all_powerpc +#define cpu_get_address_space cpu_get_address_space_powerpc #define vm_start vm_start_powerpc #define resume_all_vcpus resume_all_vcpus_powerpc #define a15_l2ctlr_read a15_l2ctlr_read_powerpc diff --git a/qemu/sparc.h b/qemu/sparc.h index 0f737cec..fb76eced 100644 --- a/qemu/sparc.h +++ b/qemu/sparc.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_sparc #define cpu_address_space_init cpu_address_space_init_sparc #define cpu_exec_init_all cpu_exec_init_all_sparc +#define cpu_get_address_space cpu_get_address_space_sparc #define vm_start vm_start_sparc #define resume_all_vcpus resume_all_vcpus_sparc #define a15_l2ctlr_read a15_l2ctlr_read_sparc diff --git a/qemu/sparc64.h b/qemu/sparc64.h index b3117e2d..ae0536ef 100644 --- a/qemu/sparc64.h +++ b/qemu/sparc64.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_sparc64 #define cpu_address_space_init cpu_address_space_init_sparc64 #define cpu_exec_init_all cpu_exec_init_all_sparc64 +#define cpu_get_address_space cpu_get_address_space_sparc64 #define vm_start vm_start_sparc64 #define resume_all_vcpus resume_all_vcpus_sparc64 #define a15_l2ctlr_read a15_l2ctlr_read_sparc64 diff --git a/qemu/x86_64.h b/qemu/x86_64.h index 298d8bfe..6f9c1d63 100644 --- a/qemu/x86_64.h +++ b/qemu/x86_64.h @@ -49,6 +49,7 @@ #define memory_register_types memory_register_types_x86_64 #define cpu_address_space_init cpu_address_space_init_x86_64 #define cpu_exec_init_all cpu_exec_init_all_x86_64 +#define cpu_get_address_space cpu_get_address_space_x86_64 #define vm_start vm_start_x86_64 #define resume_all_vcpus resume_all_vcpus_x86_64 #define a15_l2ctlr_read a15_l2ctlr_read_x86_64