exec.c: Allow target CPUs to define multiple AddressSpaces
Allow multiple calls to cpu_address_space_init(); each call adds an entry to the cpu->ases array at the specified index. It is up to the target-specific CPU code to actually use these extra address spaces. Since this multiple AddressSpace support won't work with KVM, add an assertion to avoid confusing failures. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Acked-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
parent
56943e8cc1
commit
12ebc9a76d
5 changed files with 23 additions and 10 deletions
|
|
@ -96,6 +96,10 @@ void cpu_reloading_memory_map(void);
|
|||
* The target-specific code which registers ASes is responsible
|
||||
* for defining what semantics address space 0, 1, 2, etc have.
|
||||
*
|
||||
* Before the first call to this function, the caller must set
|
||||
* cpu->num_ases to the total number of address spaces it needs
|
||||
* to support.
|
||||
*
|
||||
* Note that with KVM only one address space is supported.
|
||||
*/
|
||||
void cpu_address_space_init(CPUState *cpu, AddressSpace *as, int asidx);
|
||||
|
|
|
|||
|
|
@ -236,6 +236,7 @@ struct kvm_run;
|
|||
* so that interrupts take effect immediately.
|
||||
* @cpu_ases: Pointer to array of CPUAddressSpaces (which define the
|
||||
* AddressSpaces this CPU has)
|
||||
* @num_ases: number of CPUAddressSpaces in @cpu_ases
|
||||
* @as: Pointer to the first AddressSpace, for the convenience of targets which
|
||||
* only have a single AddressSpace
|
||||
* @env_ptr: Pointer to subclass-specific CPUArchState field.
|
||||
|
|
@ -285,6 +286,7 @@ struct CPUState {
|
|||
struct qemu_work_item *queued_work_first, *queued_work_last;
|
||||
|
||||
CPUAddressSpace *cpu_ases;
|
||||
int num_ases;
|
||||
AddressSpace *as;
|
||||
|
||||
void *env_ptr; /* CPUArchState */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue