mirror of
https://github.com/yuzu-emu/unicorn
synced 2024-11-24 20:48:31 +00:00
target/arm: Exit after clearing aarch64 interrupt mask
Exit to cpu loop so we reevaluate cpu_arm_hw_interrupts. Backports commit 8da54b2507c1cabf60c2de904cf0383b23239231 from qemu
This commit is contained in:
parent
dd1473f582
commit
42bb73fa96
1 changed files with 6 additions and 1 deletions
|
@ -1465,7 +1465,9 @@ static void handle_msr_i(DisasContext *s, uint32_t insn,
|
|||
gen_helper_msr_i_pstate(tcg_ctx, tcg_ctx->cpu_env, tcg_op, tcg_imm);
|
||||
tcg_temp_free_i32(tcg_ctx, tcg_imm);
|
||||
tcg_temp_free_i32(tcg_ctx, tcg_op);
|
||||
s->is_jmp = DISAS_UPDATE;
|
||||
/* For DAIFClear, exit the cpu loop to re-evaluate pending IRQs. */
|
||||
gen_a64_set_pc_im(s, s->pc);
|
||||
s->is_jmp = (op == 0x1f ? DISAS_EXIT : DISAS_JUMP);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
@ -11614,6 +11616,9 @@ tb_end:
|
|||
case DISAS_JUMP:
|
||||
tcg_gen_lookup_and_goto_ptr(tcg_ctx, tcg_ctx->cpu_pc);
|
||||
break;
|
||||
case DISAS_EXIT:
|
||||
tcg_gen_exit_tb(tcg_ctx, 0);
|
||||
break;
|
||||
case DISAS_TB_JUMP:
|
||||
case DISAS_EXC:
|
||||
case DISAS_SWI:
|
||||
|
|
Loading…
Reference in a new issue