|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 12/18] x86emul: add tables for 0f38 and 0f3a extension space
On 15/02/17 11:14, Jan Beulich wrote:
> @@ -2207,12 +2231,12 @@ x86_decode_twobyte(
> switch ( modrm_reg & 7 )
> {
> case 2: /* {,v}ldmxcsr */
> - state->desc = DstImplicit | SrcMem | ModRM | Mov;
> + state->desc = DstImplicit | SrcMem | Mov;
> op_bytes = 4;
> break;
>
> case 3: /* {,v}stmxcsr */
> - state->desc = DstMem | SrcImplicit | ModRM | Mov;
> + state->desc = DstMem | SrcImplicit | Mov;
> op_bytes = 4;
> break;
> }
Shouldn't this be folded into patch 7?
> @@ -2571,6 +2595,25 @@ x86_decode(
> }
> break;
> }
> + break;
> +
> + case vex_0f38:
> + d = ext0f38_table[b].to_memory ? DstMem | SrcReg
> + : DstReg | SrcMem;
> + if ( ext0f38_table[b].two_op )
> + d |= TwoOp;
> + if ( ext0f38_table[b].vsib )
> + d |= vSIB;
What prevents vSIB becoming set for a non-vex encoded 0f38 instruction?
> + state->simd_size = ext0f38_table[b].simd_size;
> + break;
> +
> + case vex_0f3a:
> + /*
> + * Cannot update d here yet, as the immediate operand still
> + * needs fetching.
> + */
> + default:
> + break;
> }
>
> if ( modrm_mod == 3 )
> @@ -7382,7 +7438,7 @@ x86_insn_modrm(const struct x86_emulate_
> {
> check_state(state);
>
> - if ( !(state->desc & ModRM) )
> + if ( state->modrm_mod > 3 )
Speaking of, there is still a bug with some existing x86_insn_modrm()
callsites.
Consider this a ping on the "Re: [Xen-devel] [PATCH] x86/svm: Adjust
ModRM Mode check in is_invlpg()" thread.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |