From: Toni Wilen Date: Sat, 24 Nov 2018 09:05:32 +0000 (+0200) Subject: 68030 MMU + prefetch fix when prefetch crosses invalid MMU pages. X-Git-Tag: 4100~24 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=9c896d79ce62e1e6fda2113524f1812297b41353;p=francis%2Fwinuae.git 68030 MMU + prefetch fix when prefetch crosses invalid MMU pages. --- diff --git a/cpummu30.cpp b/cpummu30.cpp index 326c6c5a..85bdcc2c 100644 --- a/cpummu30.cpp +++ b/cpummu30.cpp @@ -1709,8 +1709,7 @@ static void dump_opcode(uae_u16 opcode) dp = table68k + opcode; if (dp->mnemo == i_ILLG) { - opcode = 0x4AFC; - dp = table68k + opcode; + dp = table68k + 0x4AFC; } for (lookup = lookuptab; lookup->mnemo != dp->mnemo; lookup++); @@ -1749,7 +1748,9 @@ void mmu030_page_fault(uaecptr addr, bool read, int flags, uae_u32 fc) } else if (regs.prefetch020_valid[2] != 1) { regs.mmu_ssw = MMU030_SSW_FB | MMU030_SSW_RB; } else { - write_log(_T("mmu030_page_fault without invalid prefetch!\n")); + // This happens when CPU prefetches from page + // end - 4 and both pages are originally invalid. + regs.mmu_ssw = MMU030_SSW_FC | MMU030_SSW_RC; } } else { regs.mmu_ssw = MMU030_SSW_FB | MMU030_SSW_RB;