mirror of https://gitee.com/openkylin/qemu.git
sparc64: use helper_wrpil to check pending irq on write
Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
68e8a3f05a
commit
1fae7b705f
|
@ -5,6 +5,7 @@ DEF_HELPER_0(rett, void)
|
|||
DEF_HELPER_1(wrpsr, void, tl)
|
||||
DEF_HELPER_0(rdpsr, tl)
|
||||
#else
|
||||
DEF_HELPER_1(wrpil, void, tl)
|
||||
DEF_HELPER_1(wrpstate, void, tl)
|
||||
DEF_HELPER_0(done, void)
|
||||
DEF_HELPER_0(retry, void)
|
||||
|
|
|
@ -3303,6 +3303,20 @@ void helper_wrpstate(target_ulong new_state)
|
|||
change_pstate(new_state & 0xf3f);
|
||||
}
|
||||
|
||||
void helper_wrpil(target_ulong new_pil)
|
||||
{
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
DPRINTF_PSTATE("helper_wrpil old=%x new=%x\n",
|
||||
env->psrpil, (uint32_t)new_pil);
|
||||
|
||||
env->psrpil = new_pil;
|
||||
|
||||
if (cpu_interrupts_enabled(env)) {
|
||||
cpu_check_irqs(env);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void helper_done(void)
|
||||
{
|
||||
trap_state* tsptr = cpu_tsptr(env);
|
||||
|
|
|
@ -3371,10 +3371,7 @@ static void disas_sparc_insn(DisasContext * dc)
|
|||
offsetof(CPUSPARCState, tl));
|
||||
break;
|
||||
case 8: // pil
|
||||
tcg_gen_trunc_tl_i32(cpu_tmp32, cpu_tmp0);
|
||||
tcg_gen_st_i32(cpu_tmp32, cpu_env,
|
||||
offsetof(CPUSPARCState,
|
||||
psrpil));
|
||||
gen_helper_wrpil(cpu_tmp0);
|
||||
break;
|
||||
case 9: // cwp
|
||||
gen_helper_wrcwp(cpu_tmp0);
|
||||
|
|
Loading…
Reference in New Issue