]>
git.proxmox.com Git - mirror_qemu.git/blob - include/hw/ppc/spapr_nested.h
d3834864764f1dbc8f2112ae8dea1f98d19c53a5
1 #ifndef HW_SPAPR_NESTED_H
2 #define HW_SPAPR_NESTED_H
4 #include "qemu/osdep.h"
5 #include "target/ppc/cpu.h"
8 * Register state for entering a nested guest with H_ENTER_NESTED.
9 * New member must be added at the end.
11 struct kvmppc_hv_guest_state
{
12 uint64_t version
; /* version of this structure layout, must be first */
15 /* These registers are hypervisor privileged (at least for writing) */
34 /* These are OS privileged but need to be set late in guest entry */
41 /* Version 1 ends here */
44 /* Version 2 ends here */
47 /* Latest version of hv_guest_state structure */
48 #define HV_GUEST_STATE_VERSION 2
50 /* Linux 64-bit powerpc pt_regs struct, used by nested HV */
51 struct kvmppc_pt_regs
{
55 uint64_t orig_gpr3
; /* Used for restarting system calls */
60 uint64_t softe
; /* Soft enabled/disabled */
61 uint64_t trap
; /* Reason for being here */
62 uint64_t dar
; /* Fault registers */
63 uint64_t dsisr
; /* on 4xx/Book-E used for ESR */
64 uint64_t result
; /* Result of a system call */
68 * nested_ppc_state is used to save the host CPU state before switching it to
69 * the guest CPU state, to be restored on H_ENTER_NESTED exit.
71 struct nested_ppc_state
{
99 void spapr_register_nested(void);
100 void spapr_exit_nested(PowerPCCPU
*cpu
, int excp
);
102 #endif /* HW_SPAPR_NESTED_H */