Commit 5e1fac2d authored by Eduardo Habkost's avatar Eduardo Habkost
Browse files

target-i386: tcg: Accept clwb instruction



Accept the clwb instruction (66 0F AE /6) if its corresponding feature
flag is enabled on CPUID[7].

Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent 4b59f39b
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -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_nop_modrm(env, s, modrm);
            } else {
                /* mfence */
                if ((modrm & 0xc7) != 0xc0 || !(s->cpuid_features & CPUID_SSE2))
                    goto illegal_op;
            }
            break;
        case 7: /* sfence / clflush */
            if ((modrm & 0xc7) == 0xc0) {
                /* sfence */