set_special (SPCFLAG_DOTRACE);
}
+// make sure interrupt is checked immediately after current instruction
+static void doint_imm(void)
+{
+ doint();
+ if (!currprefs.cachesize && !(regs.spcflags & SPCFLAG_INT) && (regs.spcflags & SPCFLAG_DOINT))
+ set_special(SPCFLAG_INT);
+}
+
void REGPARAM2 MakeSR (void)
{
regs.sr = ((regs.t1 << 15) | (regs.t0 << 14)
if (currprefs.mmu_model)
mmu_set_super (regs.s != 0);
- doint ();
+ doint_imm();
if (regs.t1 || regs.t0) {
set_special (SPCFLAG_TRACE);
} else {