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

Avi Kivity
2010-08-18T17:56:23Z

On 08/18/2010 08:40 PM, Mohammed Gamal wrote:
> 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

I already added this, please look at the non-atomic-injection branch.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.