From: Pranith Kumar <bobby.pr...@gmail.com> Signed-off-by: Pranith Kumar <bobby.pr...@gmail.com> Message-Id: <20160714202026.9727-15-bobby.pr...@gmail.com> Signed-off-by: Richard Henderson <r...@twiddle.net> --- target-i386/translate.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/target-i386/translate.c b/target-i386/translate.c index fa2ac48..9447557 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -8012,13 +8012,21 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s, || (prefixes & PREFIX_LOCK)) { goto illegal_op; } + tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC); break; case 0xe8 ... 0xef: /* lfence */ + if (!(s->cpuid_features & CPUID_SSE) + || (prefixes & PREFIX_LOCK)) { + goto illegal_op; + } + tcg_gen_mb(TCG_MO_LD_LD | TCG_BAR_SC); + break; case 0xf0 ... 0xf7: /* mfence */ if (!(s->cpuid_features & CPUID_SSE2) || (prefixes & PREFIX_LOCK)) { goto illegal_op; } + tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC); break; default: -- 2.7.4