From: Toni Wilen Date: Fri, 21 Oct 2022 12:12:03 +0000 (+0300) Subject: Fix non-interrupt exception timing X-Git-Tag: 41000~108 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=c693102adcff9778f17e3283b1928613a56f6c8b;p=francis%2Fwinuae.git Fix non-interrupt exception timing --- diff --git a/newcpu.cpp b/newcpu.cpp index 2e57ad78..ce29e95f 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -2791,9 +2791,10 @@ static void Exception_ce000 (int nr) } exception_in_exception = 1; x_put_word (m68k_areg (regs, 7) + 4, currpc); // write low address - if (interrupt) + if (interrupt) { vector_nr = iack_cycle(nr); - x_do_cycles(4 * cpucycleunit); + x_do_cycles(4 * cpucycleunit); + } x_put_word (m68k_areg (regs, 7) + 0, regs.sr); // write SR x_put_word (m68k_areg (regs, 7) + 2, currpc >> 16); // write high address x_put_word (m68k_areg (regs, 7) + 6, (frame_id << 12) | (vector_nr * 4)); @@ -2805,9 +2806,10 @@ static void Exception_ce000 (int nr) } exception_in_exception = 1; x_put_word (m68k_areg (regs, 7) + 4, currpc); // write low address - if (interrupt) + if (interrupt) { vector_nr = iack_cycle(nr); - x_do_cycles(4 * cpucycleunit); + x_do_cycles(4 * cpucycleunit); + } x_put_word (m68k_areg (regs, 7) + 0, regs.sr); // write SR x_put_word (m68k_areg (regs, 7) + 2, currpc >> 16); // write high address }