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