From c693102adcff9778f17e3283b1928613a56f6c8b Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 21 Oct 2022 15:12:03 +0300 Subject: [PATCH] Fix non-interrupt exception timing --- newcpu.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 } -- 2.47.3