diff --git a/target-arm/helper.c b/target-arm/helper.c index c43d66fd8d..5926b15506 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -5222,7 +5222,7 @@ static int bad_mode_switch(CPUARMState *env, int mode) return !arm_feature(env, ARM_FEATURE_EL2) || arm_current_el(env) < 2 || arm_is_secure(env); case ARM_CPU_MODE_MON: - return !arm_is_secure(env); + return arm_current_el(env) < 3; default: return 1; }