summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/kvm_ppc.h
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2012-09-25 20:32:30 +0000
committerAlexander Graf <agraf@suse.de>2012-10-05 23:38:54 +0200
commita8bd19ef4dd49f0eef86a4a8eb43d60f967236b8 (patch)
tree29a4c8141e1e68d20c832b5d05e064e5ad83f028 /arch/powerpc/include/asm/kvm_ppc.h
parenta136a8bdc02fc14625ac45ee846cc646fc46597e (diff)
downloadblackbird-op-linux-a8bd19ef4dd49f0eef86a4a8eb43d60f967236b8.tar.gz
blackbird-op-linux-a8bd19ef4dd49f0eef86a4a8eb43d60f967236b8.zip
KVM: PPC: Book3S: Get/set guest FP regs using the GET/SET_ONE_REG interface
This enables userspace to get and set all the guest floating-point state using the KVM_[GS]ET_ONE_REG ioctls. The floating-point state includes all of the traditional floating-point registers and the FPSCR (floating point status/control register), all the VMX/Altivec vector registers and the VSCR (vector status/control register), and on POWER7, the vector-scalar registers (note that each FP register is the high-order half of the corresponding VSR). Most of these are implemented in common Book 3S code, except for VSX on POWER7. Because HV and PR differ in how they store the FP and VSX registers on POWER7, the code for these cases is not common. On POWER7, the FP registers are the upper halves of the VSX registers vsr0 - vsr31. PR KVM stores vsr0 - vsr31 in two halves, with the upper halves in the arch.fpr[] array and the lower halves in the arch.vsr[] array, whereas HV KVM on POWER7 stores the whole VSX register in arch.vsr[]. Signed-off-by: Paul Mackerras <paulus@samba.org> [agraf: fix whitespace, vsx compilation] Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/include/asm/kvm_ppc.h')
-rw-r--r--arch/powerpc/include/asm/kvm_ppc.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 709f0ddae1f1..51604a16c8a5 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -200,6 +200,8 @@ static inline u32 kvmppc_set_field(u64 inst, int msb, int lsb, int value)
union kvmppc_one_reg {
u32 wval;
u64 dval;
+ vector128 vval;
+ u64 vsxval[2];
};
#define one_reg_size(id) \
OpenPOWER on IntegriCloud