diff options
author | Avi Kivity <avi@redhat.com> | 2011-03-29 11:41:27 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-05-11 13:56:59 +0200 |
commit | 1253791df91b064c039282feea094e5943294924 (patch) | |
tree | 36cd958089c9f011a1085b3ae82556fa0d16b480 /arch/x86/include/asm/kvm_emulate.h | |
parent | KVM: x86 emulator: Specialize decoding for insns with 66/f2/f3 prefixes (diff) | |
download | linux-1253791df91b064c039282feea094e5943294924.tar.xz linux-1253791df91b064c039282feea094e5943294924.zip |
KVM: x86 emulator: SSE support
Add support for marking an instruction as SSE, switching registers used
to the SSE register file.
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/include/asm/kvm_emulate.h')
-rw-r--r-- | arch/x86/include/asm/kvm_emulate.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h index 4c0e68226113..48693f0d3842 100644 --- a/arch/x86/include/asm/kvm_emulate.h +++ b/arch/x86/include/asm/kvm_emulate.h @@ -162,9 +162,11 @@ struct x86_emulate_ops { void (*put_fpu)(struct x86_emulate_ctxt *ctxt); /* reenables preempt */ }; +typedef u32 __attribute__((vector_size(16))) sse128_t; + /* Type, address-of, and value of an instruction's operand. */ struct operand { - enum { OP_REG, OP_MEM, OP_IMM, OP_NONE } type; + enum { OP_REG, OP_MEM, OP_IMM, OP_XMM, OP_NONE } type; unsigned int bytes; union { unsigned long orig_val; @@ -176,11 +178,13 @@ struct operand { ulong ea; unsigned seg; } mem; + unsigned xmm; } addr; union { unsigned long val; u64 val64; char valptr[sizeof(unsigned long) + 2]; + sse128_t vec_val; }; }; |