summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2010-08-03 14:05:46 +0200
committerAvi Kivity <avi@redhat.com>2010-10-24 10:51:53 +0200
commita4d4a7c1880db98a521bc27c15348185fa30c256 (patch)
treed9af153679aa4a21e5d3170767e743974b2a42e1
parentKVM: x86 emulator: use single stage decoding for mov instructions (diff)
downloadlinux-a4d4a7c1880db98a521bc27c15348185fa30c256.tar.xz
linux-a4d4a7c1880db98a521bc27c15348185fa30c256.zip
KVM: x86 emulator: fix group 11 decoding for reg != 0
These are all undefined. Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to '')
-rw-r--r--arch/x86/kvm/emulate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index c0715ae05a54..9940d1661544 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2449,6 +2449,10 @@ static struct group_dual group9 = { {
N, N, N, N, N, N, N, N,
} };
+static struct opcode group11[] = {
+ I(DstMem | SrcImm | ModRM | Mov, em_mov), X7(D(Undefined)),
+};
+
static struct opcode opcode_table[256] = {
/* 0x00 - 0x07 */
D6ALU(Lock),
@@ -2525,7 +2529,7 @@ static struct opcode opcode_table[256] = {
I(ImplicitOps | Stack | SrcImmU16, em_ret_near_imm),
D(ImplicitOps | Stack),
D(DstReg | SrcMemFAddr | ModRM | No64), D(DstReg | SrcMemFAddr | ModRM | No64),
- I2bv(DstMem | SrcImm | ModRM | Mov, em_mov),
+ G(ByteOp, group11), G(0, group11),
/* 0xC8 - 0xCF */
N, N, N, D(ImplicitOps | Stack),
D(ImplicitOps), D(SrcImmByte), D(ImplicitOps | No64), D(ImplicitOps),