]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix prefetch mode address error timing if address error check is before any memory...
authorToni Wilen <twilen@winuae.net>
Fri, 31 Jan 2020 20:48:30 +0000 (22:48 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 31 Jan 2020 20:48:30 +0000 (22:48 +0200)
gencpu.cpp

index 110bca08fc40cfb3bb07ca40967b9d84b3e93a3a..f83bcf2debd7c49002f3de3750c72193975d1ca5 100644 (file)
@@ -440,7 +440,7 @@ static void write_return_cycles_none(const char *s)
        }
 }
 
-static void write_return_cycles(const char *s, int end)
+static void write_return_cycles2(const char *s, int end, int no4)
 {
        if (end <= 0) {
                clearmmufixup(0, 1);
@@ -455,7 +455,7 @@ static void write_return_cycles(const char *s, int end)
                        }
                } else {
                        int cc = count_cycles;
-                       if (count_read + count_write + cc == 0)
+                       if (count_read + count_write + cc == 0 && !no4)
                                cc = 4;
                        returncycles(s, (count_read + count_write) * 4 + cc);
                        if (end) {
@@ -494,6 +494,16 @@ static void write_return_cycles(const char *s, int end)
        }
 }
 
+static void write_return_cycles(const char *s, int end)
+{
+       write_return_cycles2(s, end, 0);
+}
+static void write_return_cycles_noadd(const char *s, int end)
+{
+       write_return_cycles2(s, end, 1);
+}
+
+
 static void addcycles_ce020 (const char *name, int head, int tail, int cycles)
 {
        if (!isce020())
@@ -3202,7 +3212,7 @@ static void genamode2x (amodes mode, const char *reg, wordsizes size, const char
                                (getv == 1 && (g_instr->smode == PC16 || g_instr->smode == PC8r) ? 2 : 1) | fcmodeflags);
                }
 
-               write_return_cycles("\t\t", 0);
+               write_return_cycles_noadd("\t\t", 0);
                printf("\t}\n");
        }
 
@@ -6525,7 +6535,7 @@ static void gen_opcode (unsigned int opcode)
                                        addcycles000_nonce("\t\t", 6);
                                }
                                printf("\t\texception3i(opcode, srca);\n");
-                               write_return_cycles("\t\t", 0);
+                               write_return_cycles_noadd("\t\t", 0);
                                printf("\t}\n");
                                pop_ins_cnt();
                        }
@@ -6622,7 +6632,7 @@ static void gen_opcode (unsigned int opcode)
                                addcycles000_nonce("\t\t", 6);
                        }
                        printf("\t\texception3i(opcode, srca);\n");
-                       write_return_cycles("\t\t", 0);
+                       write_return_cycles_noadd("\t\t", 0);
                        printf("\t}\n");
                        pop_ins_cnt();
                }