mips/kvm: Fix ABI for use of 64-bit registers.
authorDavid Daney <david.daney@cavium.com>
Thu, 23 May 2013 16:49:06 +0000 (09:49 -0700)
committerGleb Natapov <gleb@redhat.com>
Mon, 3 Jun 2013 07:58:52 +0000 (10:58 +0300)
All registers are 64-bits wide, 32-bit guests use the least
significant portion of the register storage fields.

Signed-off-by: David Daney <david.daney@cavium.com>
Acked-by: Sanjay Lal <sanjayl@kymasys.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/mips/include/uapi/asm/kvm.h

index 0e8f5658c03e44a47fa52a4efcb54acb4f618f16..86812fb61842b8fc1c26cae0ddaeec91b9a1a8f4 100644 (file)
 #define N_MIPS_COPROC_REGS      32
 #define N_MIPS_COPROC_SEL      8
 
-/* for KVM_GET_REGS and KVM_SET_REGS */
+/*
+ * for KVM_GET_REGS and KVM_SET_REGS
+ *
+ * If Config[AT] is zero (32-bit CPU), the register contents are
+ * stored in the lower 32-bits of the struct kvm_regs fields and sign
+ * extended to 64-bits.
+ */
 struct kvm_regs {
-       __u32 gprs[32];
-       __u32 hi;
-       __u32 lo;
-       __u32 pc;
+       __u64 gprs[32];
+       __u64 hi;
+       __u64 lo;
+       __u64 pc;
 
        __u32 cp0reg[N_MIPS_COPROC_REGS][N_MIPS_COPROC_SEL];
 };