>>> Andrew Cooper <andrew.coop...@citrix.com> 02/24/17 7:14 PM >>>
>The emulation tests run `sarx %edx,(%ecx),%ebx` with 0xfedcba98 pointed at by
>%ecx, and 0xff13 in %rdx.
>
>As the instruction uses a 32bit operand size, the expected result is
>0x00000000ffffffdb in %rbx (rather than 0xffffffffffffffdb), due to normal
>usual zeroing of the upper half of the 64bit register.
>
>The test harness was incorrectly sign extending from 32 bits to 64 bits rather
>than zero extending when checking the result of emulation, causing a false
>negative failure.
>
>Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>

Reviewed-by: Jan Beulich <jbeul...@suse.com>

>--- a/tools/tests/x86_emulator/test_x86_emulator.c
>+++ b/tools/tests/x86_emulator/test_x86_emulator.c
>@@ -1155,7 +1155,7 @@ int main(int argc, char **argv)
>regs.eflags = 0xa43;
>rc = x86_emulate(&ctxt, &emulops);
>if ( (rc != X86EMUL_OKAY) ||
>-             regs.ebx != ((signed)*res >> (regs.edx & 0x1f)) ||
>+             regs.ebx != (unsigned)(((signed)*res >> (regs.edx & 0x1f))) ||

If "ebx" was what its name says, there wouldn't have been a problem.

Jan


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

Reply via email to