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

Mohammed Gamal
2010-08-18T18:04:37Z

On Wed, Aug 18, 2010 at 8:56 PM, Avi Kivity <avi@redhat.com> wrote:
>  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.
>
Looks like you beat me to it. I'll pull again.
> --
> I have a truly marvellous patch that fixes the bug which this
> signature is too narrow to contain.
>
>