[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86emul: defer rIP-relative address calculation



>>> On 07.12.16 at 17:08, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 07/12/16 15:47, Jan Beulich wrote:
>>>>> On 07.12.16 at 16:43, <JBeulich@xxxxxxxx> wrote:
>>>>>> On 07.12.16 at 16:38, <andrew.cooper3@xxxxxxxxxx> wrote:
>>>> On 07/12/16 14:07, Jan Beulich wrote:
>>>>> By putting it after all instruction fetching has been done, we can both
>>>>> simplify the existing handling of immediate operands and take care of
>>>>> any future instructions allowing rIP-relative operands and getting
>>>>> additional bytes fetched in x86_decode_*() (the current cases of extra
>>>>> bytes getting fetched there are only for operands without ModR/M bytes,
>>>>> or with them only allowing their register forms).
>>>>>
>>>>> Similarly the new placement of truncate_ea() will take care of any
>>>>> future cases of non-standard memory operands (the one existing case -
>>>>> opcodes A0...A3 - are fine with and without this, as they fetch an
>>>>> ad_bytes sized unsigned address anyway).
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>>>> This is rather clearer to follow.
>>>>
>>>> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, although...
>>>>
>>>>> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
>>>>> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
>>>>> @@ -1925,6 +1925,7 @@ x86_decode(
>>>>>      uint8_t b, d, sib, sib_index, sib_base;
>>>>>      unsigned int def_op_bytes, def_ad_bytes, opcode;
>>>>>      enum x86_segment override_seg = x86_seg_none;
>>>>> +    bool ip_rel = false;
>>>> I would name this specifically rip_rel, as that is the term used in all
>>>> the manuals.
>>> And I specifically avoided it as being wrong in the context of the
>>> 32-bit test harness. Would pc_rel suit you better than ip_rel?
>> Actually the reference to the 32-bit test harness was wrong here
>> (obviously). Instead, it is wrong in the context of 32-bit addressing
>> in 64-bit mode.
> 
> Such a case would still have rip_rel = false.  This addressing mode is
> unique to 64bit.

That's what I've said - 32-bit addressing in 64-bit mode (specifically
not compat mode), i.e. an address size override present there.

> But yes, pc_rel is still slightly better if you insist for not using
> rip_rel.

Will use that then.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.