[PATCH non-atomic-injection] x86 emulator: Add 2 operand imul instruction (opcode 0x0f 0xaf)

Mohammed Gamal
2010-08-18T17:40:23Z

Signed-off-by: Mohammed Gamal <m.gamal005@gmail.com>
---
arch/x86/kvm/emulate.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index cb3282c..3311c68 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2474,7 +2474,7 @@ static struct opcode twobyte_table[256] = {
N, D(DstMem | SrcReg | ModRM | BitOp | Lock),
D(DstMem | SrcReg | Src2ImmByte | ModRM),
D(DstMem | SrcReg | Src2CL | ModRM),
- D(ModRM), N,
+ D(ModRM), D(DstReg | SrcMem | ModRM),
/* 0xB0 - 0xB7 */
D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock),
N, D(DstMem | SrcReg | ModRM | BitOp | Lock),
@@ -3567,6 +3567,9 @@ twobyte_insn:
break;
case 0xae: /* clflush */
break;
+ case 0xaf:
+ emulate_2op_SrcV_nobyte("imul", c->src, c->dst, ctxt->eflags);
+ break;
case 0xb0 ... 0xb1: /* cmpxchg */
/*
* Save real source value, then compare EAX against
--
1.7.0.4