exec.c: Add cpu_get_address_space()

Add a function to return the AddressSpace for a CPU based on
its numerical index. (Callers outside exec.c don't have access
to the CPUAddressSpace struct so can't just fish it out of the
CPUState struct directly.)

Backports commit 651a5bc03705102de519ebf079a40ecc1da991db from qemu
This commit is contained in:
Peter Maydell 2018-02-17 23:21:19 -05:00 committed by Lioncash
parent 2fe995a0da
commit 1dfba71bef
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
16 changed files with 29 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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',

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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