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