]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
MMU setup update.
authorToni Wilen <twilen@winuae.net>
Sun, 25 Jul 2021 19:38:31 +0000 (22:38 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 25 Jul 2021 19:38:31 +0000 (22:38 +0300)
cpummu.cpp
newcpu.cpp

index 59a56effe76127e69b68fabae1cb429f7295b413..5c316c98569027b99816fdce8c76bb16a29a2ef1 100644 (file)
@@ -1456,6 +1456,15 @@ void REGPARAM2 mmu_set_funcs(void)
 {
        if (currprefs.mmu_model != 68040 && currprefs.mmu_model != 68060)
                return;
+
+       x_phys_get_iword = phys_get_word;
+       x_phys_get_ilong = phys_get_long;
+       x_phys_get_byte = phys_get_byte;
+       x_phys_get_word = phys_get_word;
+       x_phys_get_long = phys_get_long;
+       x_phys_put_byte = phys_put_byte;
+       x_phys_put_word = phys_put_word;
+       x_phys_put_long = phys_put_long;
        if (currprefs.cpu_memory_cycle_exact || currprefs.cpu_compatible) {
                x_phys_get_iword = get_word_icache040;
                x_phys_get_ilong = get_long_icache040;
@@ -1473,23 +1482,7 @@ void REGPARAM2 mmu_set_funcs(void)
                        x_phys_put_byte = mem_access_delay_byte_write_c040;
                        x_phys_put_word = mem_access_delay_word_write_c040;
                        x_phys_put_long = mem_access_delay_long_write_c040;
-               } else {
-                       x_phys_get_byte = phys_get_byte;
-                       x_phys_get_word = phys_get_word;
-                       x_phys_get_long = phys_get_long;
-                       x_phys_put_byte = phys_put_byte;
-                       x_phys_put_word = phys_put_word;
-                       x_phys_put_long = phys_put_long;
                }
-       } else {
-               x_phys_get_iword = phys_get_word;
-               x_phys_get_ilong = phys_get_long;
-               x_phys_get_byte = phys_get_byte;
-               x_phys_get_word = phys_get_word;
-               x_phys_get_long = phys_get_long;
-               x_phys_put_byte = phys_put_byte;
-               x_phys_put_word = phys_put_word;
-               x_phys_put_long = phys_put_long;
        }
 }
 
index 61d94096b7b88dbb85573fc88785d7a6c58608d9..6f6e1cf9d836977921b75943a245a48a1060e418 100644 (file)
@@ -984,11 +984,16 @@ static void set_x_funcs (void)
                                x_get_word = get_word_dc030;
                                x_get_byte = get_byte_dc030;
                        }
-
                }
-               x_do_cycles = do_cycles;
-               x_do_cycles_pre = do_cycles;
-               x_do_cycles_post = do_cycles_post;
+               if (currprefs.cpu_cycle_exact) {
+                       x_do_cycles = do_cycles_ce020;
+                       x_do_cycles_pre = do_cycles_ce020;
+                       x_do_cycles_post = do_cycles_ce020_post;
+               } else {
+                       x_do_cycles = do_cycles;
+                       x_do_cycles_pre = do_cycles;
+                       x_do_cycles_post = do_cycles_post;
+               }
        } else if (currprefs.cpu_model < 68020) {
                // 68000/010
                if (currprefs.cpu_cycle_exact) {
@@ -9125,7 +9130,7 @@ void mem_access_delay_long_write_c040 (uaecptr addr, uae_u32 v)
                wait_cpu_cycle_write_ce020 (addr + 2, 1, (v >>  0) & 0xffff);
                break;
        case CE_MEMBANK_CHIP32:
-               if ((addr & 3) == 3) {
+               if ((addr & 3) != 0) {
                        wait_cpu_cycle_write_ce020 (addr + 0, 1, (v >> 16) & 0xffff);
                        wait_cpu_cycle_write_ce020 (addr + 2, 1, (v >>  0) & 0xffff);
                } else {
@@ -9134,7 +9139,7 @@ void mem_access_delay_long_write_c040 (uaecptr addr, uae_u32 v)
                break;
        case CE_MEMBANK_FAST16:
                put_long (addr, v);
-               do_cycles_ce020_mem (2 * CPU020_MEM_CYCLE, v);
+               do_cycles_c040_mem(1, v);
                break;
        case CE_MEMBANK_FAST32:
                put_long (addr, v);