]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
68010 loop mode update.
authorToni Wilen <twilen@winuae.net>
Tue, 31 Dec 2019 12:22:59 +0000 (14:22 +0200)
committerToni Wilen <twilen@winuae.net>
Tue, 31 Dec 2019 12:22:59 +0000 (14:22 +0200)
gencpu.cpp
newcpu.cpp

index ef2807bd8619d070343d2fcdb732e5a00a1eeb2e..ae8d4b5151c77d3ec654606ccecd12788a10401a 100644 (file)
@@ -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();
index 3501de41d11c5bd0b8e50af1a6e5e67260682239..222a814aefdd0bc959882f108b88e687b8ed8cd3 100644 (file)
@@ -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);
        }
 }