1 #ifndef HW_SPAPR_NESTED_H
2 #define HW_SPAPR_NESTED_H
4 #include "target/ppc/cpu.h"
7 * Register state for entering a nested guest with H_ENTER_NESTED.
8 * New member must be added at the end.
10 struct kvmppc_hv_guest_state
{
11 uint64_t version
; /* version of this structure layout, must be first */
14 /* These registers are hypervisor privileged (at least for writing) */
33 /* These are OS privileged but need to be set late in guest entry */
40 /* Version 1 ends here */
43 /* Version 2 ends here */
46 /* Latest version of hv_guest_state structure */
47 #define HV_GUEST_STATE_VERSION 2
49 /* Linux 64-bit powerpc pt_regs struct, used by nested HV */
50 struct kvmppc_pt_regs
{
54 uint64_t orig_gpr3
; /* Used for restarting system calls */
59 uint64_t softe
; /* Soft enabled/disabled */
60 uint64_t trap
; /* Reason for being here */
61 uint64_t dar
; /* Fault registers */
62 uint64_t dsisr
; /* on 4xx/Book-E used for ESR */
63 uint64_t result
; /* Result of a system call */
67 * nested_ppc_state is used to save the host CPU state before switching it to
68 * the guest CPU state, to be restored on H_ENTER_NESTED exit.
70 struct nested_ppc_state
{
98 void spapr_register_nested(void);
99 void spapr_exit_nested(PowerPCCPU
*cpu
, int excp
);
101 #endif /* HW_SPAPR_NESTED_H */