|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 14/25] x86emul: make all FPU emulation use the stub
On 07/12/17 14:09, Jan Beulich wrote:
> While this means quite some reduction of (source) code, the main
> purpose is to no longer have exceptions raised from other than stubs.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> for the reduction
alone, but with a recommendation.
> @@ -4266,37 +4262,13 @@ x86_emulate(
> emulate_fpu_insn_stub(0xd8, modrm);
> break;
> default:
> + fpu_memsrc32:
> ASSERT(ea.type == OP_MEM);
> if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val,
> 4, ctxt)) != X86EMUL_OKAY )
> goto done;
> - switch ( modrm_reg & 7 )
> - {
> - case 0: /* fadd */
> - emulate_fpu_insn_memsrc("fadds", src.val);
> - break;
> - case 1: /* fmul */
> - emulate_fpu_insn_memsrc("fmuls", src.val);
> - break;
> - case 2: /* fcom */
> - emulate_fpu_insn_memsrc("fcoms", src.val);
> - break;
> - case 3: /* fcomp */
> - emulate_fpu_insn_memsrc("fcomps", src.val);
> - break;
> - case 4: /* fsub */
> - emulate_fpu_insn_memsrc("fsubs", src.val);
> - break;
> - case 5: /* fsubr */
> - emulate_fpu_insn_memsrc("fsubrs", src.val);
> - break;
> - case 6: /* fdiv */
> - emulate_fpu_insn_memsrc("fdivs", src.val);
> - break;
> - case 7: /* fdivr */
> - emulate_fpu_insn_memsrc("fdivrs", src.val);
> - break;
> - }
> + emulate_fpu_insn_memsrc(b, modrm_reg, src.val);
The modrm_reg & 7 should be visible here to make it obvious that the rex
prefix if any is dropped. It is probably best to duplicate up the &7
because the one inside the macro is for encoding safety, and the
compiler can trivially combine the two.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |