[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 3/3] x86/emulate: added tests for {, v}movd mm, r32/m32 and {, v}movq xmm, r64/m64
On 01/08/16 03:52, Mihai Donțu wrote: > Signed-off-by: Mihai Donțu <mdontu@xxxxxxxxxxxxxxx> > --- > Changed since v2: > * added tests for {,v}movq xmm,r64 > --- > tools/tests/x86_emulator/test_x86_emulator.c | 120 > +++++++++++++++++++++++++++ > 1 file changed, 120 insertions(+) > > diff --git a/tools/tests/x86_emulator/test_x86_emulator.c > b/tools/tests/x86_emulator/test_x86_emulator.c > index 8994149..fb59b0f 100644 > --- a/tools/tests/x86_emulator/test_x86_emulator.c > +++ b/tools/tests/x86_emulator/test_x86_emulator.c > @@ -650,6 +650,88 @@ int main(int argc, char **argv) > #define check_eip(which) (regs.eip == (unsigned long)instr + \ > (unsigned long)which##_len) > > + printf("%-40s", "Testing movd %%mm3,32(%%eax)..."); > + if ( stack_exec && cpu_has_mmx ) > + { > + decl_insn(movd_to_mem32); > + > + asm volatile ( "pcmpeqb %%mm3, %%mm3\n" > + put_insn(movd_to_mem32, "movd %%mm3, 32(%%eax)") > + :: ); > + > + *(res + 8) = 0xbdbdbdbd; > + set_insn(movd_to_mem32); > + regs.eax = (unsigned long)res; > + rc = x86_emulate(&ctxt, &emulops); > + if ( (rc != X86EMUL_OKAY) || *(res + 8) != 0xffffffff || > + !check_eip(movd_to_mem32) ) > + goto fail; > + printf("okay\n"); > + } > + else > + printf("skipped\n"); > + > + printf("%-40s", "Testing movd %%mm3,%%eax..."); Could we possibly change this to %ebx instead of %eax? That case is far more likely to go bang in a debug build if the emulator is wrong. Otherwise, Revewed-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 |