]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Store mmu030_state[1] in temporary variable because stack frame writing can modify...
authorToni Wilen <twilen@winuae.net>
Sun, 2 Dec 2018 12:59:25 +0000 (14:59 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 2 Dec 2018 12:59:25 +0000 (14:59 +0200)
cpummu30.cpp
newcpu.cpp

index 94fd28be1b6d95db3c005f8b1e676243a51bb257..d56c9fc3c1adaf8e91de9dc811965571c22f51e9 100644 (file)
@@ -1777,8 +1777,9 @@ void mmu030_page_fault(uaecptr addr, bool read, int flags, uae_u32 fc)
        regs.mmu_ssw |= read ? MMU030_SSW_RW : 0;
        regs.mmu_ssw |= flags;
        regs.mmu_ssw |= fc;
-       // store in wb3_data because stack frame creation may modify data buffer.
+       // temporary store in 68040+ variables because stack frame creation may modify them.
        regs.wb3_data = mmu030_data_buffer_out;
+       regs.wb2_address = mmu030_state[1];
     bBusErrorReadWrite = read; 
        mm030_stageb_address = addr;
 
index 82246f944c8c91452b6e0dc28d7a3e4f11121c69..d2f5ca7ce2c20128df89c8f7bd386cbac314b6bc 100644 (file)
@@ -3235,7 +3235,7 @@ static void Exception_build_stack_frame (uae_u32 oldpc, uae_u32 currpc, uae_u32
                        m68k_areg (regs, 7) -= 2;
                        x_put_word (m68k_areg (regs, 7), mmu030_state[2]);
                        m68k_areg (regs, 7) -= 2;
-                       x_put_word (m68k_areg (regs, 7), mmu030_state[1]);
+                       x_put_word (m68k_areg(regs, 7), regs.wb2_address); // = mmu030_state[1]
                        m68k_areg (regs, 7) -= 2;
                        x_put_word (m68k_areg (regs, 7), mmu030_state[0]);
                        // data input buffer = fault address