aboutsummaryrefslogtreecommitdiff
path: root/include/hw
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2018-06-13 16:22:18 +1000
committerDavid Gibson <david@gibson.dropbear.id.au>2018-06-16 16:32:50 +1000
commit7388efafc27c2f45d22c8edbc14b3154c0381c2e (patch)
tree690c9d5bdea6f3d089a75e63bc2adce5912cdbe2 /include/hw
parent51c047283c567ea27084827c979681f3e28b920e (diff)
downloadqemu-7388efafc27c2f45d22c8edbc14b3154c0381c2e.zip
qemu-7388efafc27c2f45d22c8edbc14b3154c0381c2e.tar.gz
qemu-7388efafc27c2f45d22c8edbc14b3154c0381c2e.tar.bz2
target/ppc, spapr: Move VPA information to machine_data
CPUPPCState currently contains a number of fields containing the state of the VPA. The VPA is a PAPR specific concept covering several guest/host shared memory areas used to communicate some information with the hypervisor. As a PAPR concept this is really machine specific information, although it is per-cpu, so it doesn't really belong in the core CPU state structure. There's also other information that's per-cpu, but platform/machine specific. So create a (void *)machine_data in PowerPCCPU which can be used by the machine to locate per-cpu data. Intialization, lifetime and cleanup of machine_data is entirely up to the machine type. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Greg Kurz <groug@kaod.org> Tested-by: Greg Kurz <groug@kaod.org>
Diffstat (limited to 'include/hw')
-rw-r--r--include/hw/ppc/spapr_cpu_core.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 47dcfda..8ceea29 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -41,4 +41,15 @@ typedef struct sPAPRCPUCoreClass {
const char *spapr_get_cpu_core_type(const char *cpu_type);
void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, target_ulong r3);
+typedef struct sPAPRCPUState {
+ uint64_t vpa_addr;
+ uint64_t slb_shadow_addr, slb_shadow_size;
+ uint64_t dtl_addr, dtl_size;
+} sPAPRCPUState;
+
+static inline sPAPRCPUState *spapr_cpu_state(PowerPCCPU *cpu)
+{
+ return (sPAPRCPUState *)cpu->machine_data;
+}
+
#endif