|
[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 Monday 01 August 2016 10:54:10 Andrew Cooper wrote:
> 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?
Sure thing!
> 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>
--
Mihai DONȚU
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |