From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38894) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZuepU-0004fM-MD for qemu-devel@nongnu.org; Fri, 06 Nov 2015 06:05:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZuepR-0007n2-I1 for qemu-devel@nongnu.org; Fri, 06 Nov 2015 06:05:12 -0500 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:36806) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZuepR-0007mm-Bq for qemu-devel@nongnu.org; Fri, 06 Nov 2015 06:05:09 -0500 Received: by wmww144 with SMTP id w144so27508358wmw.1 for ; Fri, 06 Nov 2015 03:05:08 -0800 (PST) Sender: Richard Henderson References: <1446672286-9136-1-git-send-email-ehabkost@redhat.com> <1446672286-9136-2-git-send-email-ehabkost@redhat.com> From: Richard Henderson Message-ID: <563C8958.20709@twiddle.net> Date: Fri, 6 Nov 2015 12:04:56 +0100 MIME-Version: 1.0 In-Reply-To: <1446672286-9136-2-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/2] target-i386: tcg: Accept clwb instruction List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost , qemu-devel@nongnu.org Cc: Paolo Bonzini , Xiao Guangrong , kvm@vger.kernel.org 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 > --- > 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~