On Fri, Nov 06, 2015 at 12:04:56PM +0100, Richard Henderson wrote: > On 11/04/2015 10:24 PM, Eduardo Habkost wrote: > >Accept the clwb instruction (66 0F AE /6) if its corresponding feature > >flag is enabled on CPUID[7]. > > > >Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > >--- > > target-i386/translate.c | 13 ++++++++++++- > > 1 file changed, 12 insertions(+), 1 deletion(-) > > > >diff --git a/target-i386/translate.c b/target-i386/translate.c > >index b400d24..bac1685 100644 > >--- a/target-i386/translate.c > >+++ b/target-i386/translate.c > >@@ -7716,10 +7716,21 @@ static target_ulong disas_insn(CPUX86State *env, > >DisasContext *s, > > } > > break; > > case 5: /* lfence */ > >- case 6: /* mfence */ > > if ((modrm & 0xc7) != 0xc0 || !(s->cpuid_features & > > CPUID_SSE2)) > > goto illegal_op; > > break; > >+ case 6: /* mfence/clwb */ > >+ if (s->prefix & PREFIX_DATA) { > >+ /* clwb */ > >+ if (!(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_CLWB)) > >+ goto illegal_op; > >+ gen_lea_modrm(env, s, modrm); > > You should use gen_nop_modrm here, since we're not going to do anything with > the address. Otherwise, > > Reviewed-by: Richard Henderson <r...@twiddle.net>
Thanks! BTW, clflush uses gen_lea_modrm() too, does it do anything with the address somewhere else? -- Eduardo