]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Make sure MOVE to SR checks interrupts immediately (except if JIT)
authorToni Wilen <twilen@winuae.net>
Sun, 8 Jul 2018 12:34:35 +0000 (15:34 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 8 Jul 2018 12:34:35 +0000 (15:34 +0300)
newcpu.cpp

index 9f8a93d1d38ea4ad7d89e9e1f6f8d5cd97afe537..018ad399db1e7e3bc684cb845000ea6957dda05c 100644 (file)
@@ -2680,6 +2680,14 @@ static void activate_trace(void)
        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)
@@ -2765,7 +2773,7 @@ static void MakeFromSR_x(int t0trace)
        if (currprefs.mmu_model)
                mmu_set_super (regs.s != 0);
 
-       doint ();
+       doint_imm();
        if (regs.t1 || regs.t0) {
                set_special (SPCFLAG_TRACE);
        } else {