diff --git a/qemu/target-arm/translate.c b/qemu/target-arm/translate.c index eaac67f0..38bda859 100644 --- a/qemu/target-arm/translate.c +++ b/qemu/target-arm/translate.c @@ -8239,7 +8239,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn) // qq case 4: /* dsb */ case 5: /* dmb */ ARCH(7); - /* We don't emulate caches so these are a no-op. */ + tcg_gen_mb(tcg_ctx, TCG_MO_ALL | TCG_BAR_SC); return; case 6: /* isb */ /* We need to break the TB after this insn to execute @@ -10584,7 +10584,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw break; case 4: /* dsb */ case 5: /* dmb */ - /* These execute as NOPs. */ + tcg_gen_mb(tcg_ctx, TCG_MO_ALL | TCG_BAR_SC); break; case 6: /* isb */ /* We need to break the TB after this insn