|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/7] x86emul: don't special case fetching the immediate of PUSH
On 11/08/16 14:26, Jan Beulich wrote:
>>>> On 11.08.16 at 14:58, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 11/08/16 13:03, Jan Beulich wrote:
>>> These immediates follow the standard patterns in all modes, so they're
>>> better fetched by the generic source operand handling code.
>>>
>>> To facilitate testing, instead of adding yet another of these pretty
>>> convoluted individual test cases, simply introduce another blowfish run
>>> with -mno-accumulate-outgoing-args (the additional -Dstatic is to
>>> keep the compiler from converting the calling convention to
>>> "regparm(3)", which I did observe it does).
>>>
>>> To make this introduction of a new blowfish pass (and potential further
>>> ones later one) have less impact on the readability of the final code,
>>> abstract all such "binary blob" executions via a table to iterate
>>> through.
>>>
>>> The resulting native code execution adjustment also uncovered a lack of
>>> clobbers on the asm() in the 64-bit case, which is being fixed at once.
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>> It would be helpful if the blob refactoring was in a separate patch to
>> the emulator bugfix.
> There's no bug fix here really, which is why I didn't think splitting
> it was strictly necessary. Can be done, but if at all possible I'd
> prefer not to spend extra time on disentangling the two, the more
> that in this case I'm convinced the reviewing of the split changes
> wouldn't be any easier than that of them being lumped together.
>
>>> @@ -983,20 +993,27 @@ int main(int argc, char **argv)
>>> (regs.eax != 2) || (regs.edx != 1) )
>>> goto fail;
>>> printf("okay\n");
>>> - }
>>>
>>> - printf("%-40s", "Testing blowfish native execution...");
>>> - asm volatile (
>>> + if ( ctxt.addr_size != sizeof(void *) * CHAR_BIT )
>>> + continue;
>> This wants to be at the top of the loop, or we will attempt to emulate
>> 64bit code in a 32bit build of the test before hitting this condition.
> Certainly not: We do want to test 32-bit code in a 64-bit build,
> and 64-bit code simply mustn't be included in a 32-bit build (hence
> the __x86_64__ conditionals inside the blobs[] initializer). Quite
> the opposite - not running 32-bit code natively here on a 64-bit
> system is solely because that would require extra setup (but not
> much value), not because it's impossible.
Ah yes.
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |