mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
Restart interrupts after an exception.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2664 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
dcb5b19a4e
commit
16c00cb2c2
2 changed files with 33 additions and 9 deletions
|
@ -1365,7 +1365,7 @@ void op_mtc0_status (void)
|
|||
!(env->hflags & MIPS_HFLAG_DM) &&
|
||||
(val & (1 << CP0St_UM)))
|
||||
env->hflags |= MIPS_HFLAG_UM;
|
||||
env->CP0_Status = val;
|
||||
env->CP0_Status = (env->CP0_Status & ~0xF878FF17) | val;
|
||||
if (loglevel & CPU_LOG_EXEC)
|
||||
CALL_FROM_TB2(do_mtc0_status_debug, old, val);
|
||||
CALL_FROM_TB1(cpu_mips_update_irq, env);
|
||||
|
@ -2181,6 +2181,19 @@ void op_save_pc (void)
|
|||
RETURN();
|
||||
}
|
||||
|
||||
void op_interrupt_restart (void)
|
||||
{
|
||||
if (!(env->CP0_Status & (1 << CP0St_EXL)) &&
|
||||
!(env->CP0_Status & (1 << CP0St_ERL)) &&
|
||||
!(env->hflags & MIPS_HFLAG_DM) &&
|
||||
(env->CP0_Status & (1 << CP0St_IE)) &&
|
||||
(env->CP0_Status & env->CP0_Cause & CP0Ca_IP_mask)) {
|
||||
env->CP0_Cause &= ~(0x1f << CP0Ca_EC);
|
||||
CALL_FROM_TB1(do_raise_exception, EXCP_EXT_INTERRUPT);
|
||||
}
|
||||
RETURN();
|
||||
}
|
||||
|
||||
void op_raise_exception (void)
|
||||
{
|
||||
CALL_FROM_TB1(do_raise_exception, PARAM1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue