>>> 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