From 2f6ff70b39f1ce22cb852778128829e1698f242c Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Tue, 31 Dec 2019 14:22:59 +0200 Subject: [PATCH] 68010 loop mode update. --- gencpu.cpp | 3 +-- newcpu.cpp | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gencpu.cpp b/gencpu.cpp index ef2807bd..ae8d4b51 100644 --- a/gencpu.cpp +++ b/gencpu.cpp @@ -1046,7 +1046,6 @@ static void loopmode_begin(void) { if (loopmode) { printf("\tif(!regs.loop_mode) {\n"); - printf("\t\tregs.ird = opcode;\n"); } } static void loopmode_end(void) @@ -4286,7 +4285,7 @@ static void gen_opcode (unsigned int opcode) loopmode = 0; // 68010 loop mode available if - if (cpu_level == 1) { + if (cpu_level == 1 && (using_ce || using_prefetch)) { loopmode = opcode_loop_mode(opcode); if (curi->mnemo == i_DBcc || loopmode) { next_level_000(); diff --git a/newcpu.cpp b/newcpu.cpp index 3501de41..222a814a 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -2591,6 +2591,7 @@ kludge_me_do: regs.intmask = nr - 24; branch_stack_push(currpc, currpc); regs.ir = x_get_word (m68k_getpc ()); // prefetch 1 + regs.ird = regs.ir; x_do_cycles (2 * cpucycleunit); regs.ipl_pin = intlev(); ipl_fetch(); @@ -6418,6 +6419,7 @@ static void fill_prefetch_quick (void) // old statefile compatibility, this needs to done, // even in 68000 cycle-exact mode regs.ir = get_word (m68k_getpc ()); + regs.ird = regs.ir; regs.irc = get_word (m68k_getpc () + 2); } @@ -9153,6 +9155,7 @@ void fill_prefetch (void) } else if (currprefs.cpu_model <= 68010) { uaecptr pc = m68k_getpc (); regs.ir = x_get_word (pc); + regs.ird = regs.ir; regs.irc = x_get_word (pc + 2); } } -- 2.47.3