{
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;
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;
}
}
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) {
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 {
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);