Commit 8da54b25 authored by Richard Henderson's avatar Richard Henderson
Browse files

target/arm: Exit after clearing aarch64 interrupt mask



Exit to cpu loop so we reevaluate cpu_arm_hw_interrupts.

Tested-by: default avatarEmilio G. Cota <cota@braap.org>
Tested-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarEmilio G. Cota <cota@braap.org>
Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
parent 542f70c2
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1422,7 +1422,9 @@ static void handle_msr_i(DisasContext *s, uint32_t insn,
        gen_helper_msr_i_pstate(cpu_env, tcg_op, tcg_imm);
        tcg_temp_free_i32(tcg_imm);
        tcg_temp_free_i32(tcg_op);
        s->is_jmp = DISAS_UPDATE;
        /* For DAIFClear, exit the cpu loop to re-evaluate pending IRQs.  */
        gen_a64_set_pc_im(s->pc);
        s->is_jmp = (op == 0x1f ? DISAS_EXIT : DISAS_JUMP);
        break;
    }
    default:
@@ -11369,6 +11371,9 @@ void gen_intermediate_code_a64(ARMCPU *cpu, TranslationBlock *tb)
        case DISAS_JUMP:
            tcg_gen_lookup_and_goto_ptr(cpu_pc);
            break;
        case DISAS_EXIT:
            tcg_gen_exit_tb(0);
            break;
        case DISAS_TB_JUMP:
        case DISAS_EXC:
        case DISAS_SWI: