]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Branch/jump instruction bus error fixes.
authorToni Wilen <twilen@winuae.net>
Fri, 22 Mar 2024 18:26:49 +0000 (20:26 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 22 Mar 2024 18:26:49 +0000 (20:26 +0200)
16 files changed:
cpuemu_0.cpp
cpuemu_11.cpp
cpuemu_13.cpp
cpuemu_20.cpp
cpuemu_21.cpp
cpuemu_22.cpp
cpuemu_23.cpp
cpuemu_24.cpp
cpuemu_31.cpp
cpuemu_32.cpp
cpuemu_33.cpp
cpuemu_34.cpp
cpuemu_35.cpp
cpuemu_40.cpp
cpuemu_50.cpp
gencpu.cpp

index ace50936b045f8ed3f2adcd56976fda04870ffa6..a1f821b76a3cdbcf59d38319b6c2a10fcf282a1c 100644 (file)
@@ -19487,6 +19487,7 @@ uae_u32 REGPARAM2 op_4ed0_0_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -19506,6 +19507,7 @@ uae_u32 REGPARAM2 op_4ee8_0_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -19527,6 +19529,7 @@ uae_u32 REGPARAM2 op_4ef0_0_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpc(2);
        srca = get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -19545,6 +19548,7 @@ uae_u32 REGPARAM2 op_4ef8_0_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -19563,6 +19567,7 @@ uae_u32 REGPARAM2 op_4ef9_0_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -19581,6 +19586,7 @@ uae_u32 REGPARAM2 op_4efa_0_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -19601,6 +19607,7 @@ uae_u32 REGPARAM2 op_4efb_0_ff(uae_u32 opcode)
        m68k_incpc(2);
        uaecptr tmppc = m68k_getpc();
        srca = get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -51988,6 +51995,7 @@ uae_u32 REGPARAM2 op_4ef0_4_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -52006,6 +52014,7 @@ uae_u32 REGPARAM2 op_4efb_4_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -60572,6 +60581,7 @@ uae_u32 REGPARAM2 op_4ed0_5_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -60590,6 +60600,7 @@ uae_u32 REGPARAM2 op_4ee8_5_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -60609,6 +60620,7 @@ uae_u32 REGPARAM2 op_4ef0_5_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -60626,6 +60638,7 @@ uae_u32 REGPARAM2 op_4ef8_5_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -60643,6 +60656,7 @@ uae_u32 REGPARAM2 op_4ef9_5_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -60660,6 +60674,7 @@ uae_u32 REGPARAM2 op_4efa_5_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpc(2);
@@ -60678,6 +60693,7 @@ uae_u32 REGPARAM2 op_4efb_5_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpc(2);
index c4b4d97c2fff7bb12fbec2593aa852c90219d1b5..16519a2b307bc25b0f777c8bd67ac68f9d36c1df 100644 (file)
@@ -42423,10 +42423,11 @@ uae_u32 REGPARAM2 op_4e73_11_ff(uae_u32 opcode)
        #ifdef DEBUGGER
        branch_stack_pop_rte(oldpc);
        #endif
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 20 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42435,7 +42436,6 @@ uae_u32 REGPARAM2 op_4e73_11_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 24 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42535,10 +42535,11 @@ uae_u32 REGPARAM2 op_4e75_11_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 12 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42547,7 +42548,6 @@ uae_u32 REGPARAM2 op_4e75_11_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42633,10 +42633,11 @@ uae_u32 REGPARAM2 op_4e77_11_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return 12 * CYCLE_UNIT / 2 + count_cycles;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42645,7 +42646,6 @@ uae_u32 REGPARAM2 op_4e77_11_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 20 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42743,6 +42743,7 @@ uae_u32 REGPARAM2 op_4e90_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 2;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42776,7 +42777,7 @@ uae_u32 REGPARAM2 op_4e90_11_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
        return 16 * CYCLE_UNIT / 2 + count_cycles;
@@ -42804,6 +42805,7 @@ uae_u32 REGPARAM2 op_4ea8_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42871,6 +42873,7 @@ uae_u32 REGPARAM2 op_4eb0_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42930,6 +42933,7 @@ uae_u32 REGPARAM2 op_4eb8_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -42994,6 +42998,7 @@ uae_u32 REGPARAM2 op_4eb9_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 6;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -43054,6 +43059,7 @@ uae_u32 REGPARAM2 op_4eba_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -43120,6 +43126,7 @@ uae_u32 REGPARAM2 op_4ebb_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -43169,6 +43176,7 @@ uae_u32 REGPARAM2 op_4ed0_11_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -43178,7 +43186,8 @@ uae_u32 REGPARAM2 op_4ed0_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43186,7 +43195,7 @@ uae_u32 REGPARAM2 op_4ed0_11_ff(uae_u32 opcode)
        opcode = regs.ir;
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
        return 8 * CYCLE_UNIT / 2 + count_cycles;
@@ -43202,6 +43211,7 @@ uae_u32 REGPARAM2 op_4ee8_11_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -43212,7 +43222,8 @@ uae_u32 REGPARAM2 op_4ee8_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43241,6 +43252,7 @@ uae_u32 REGPARAM2 op_4ef0_11_ff(uae_u32 opcode)
                exception2_fetch_opcode(opcode, 2, 0);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -43251,7 +43263,8 @@ uae_u32 REGPARAM2 op_4ef0_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43273,6 +43286,7 @@ uae_u32 REGPARAM2 op_4ef8_11_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -43283,7 +43297,8 @@ uae_u32 REGPARAM2 op_4ef8_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43311,6 +43326,7 @@ uae_u32 REGPARAM2 op_4ef9_11_ff(uae_u32 opcode)
                exception2_fetch(opcode, 4, -2);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -43320,7 +43336,8 @@ uae_u32 REGPARAM2 op_4ef9_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43343,6 +43360,7 @@ uae_u32 REGPARAM2 op_4efa_11_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -43353,7 +43371,8 @@ uae_u32 REGPARAM2 op_4efa_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -43381,6 +43400,7 @@ uae_u32 REGPARAM2 op_4efb_11_ff(uae_u32 opcode)
                exception2_fetch_opcode(opcode, 2, 0);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -43391,7 +43411,8 @@ uae_u32 REGPARAM2 op_4efb_11_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -52609,10 +52630,11 @@ uae_u32 REGPARAM2 op_6000_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52621,7 +52643,6 @@ uae_u32 REGPARAM2 op_6000_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52669,10 +52690,11 @@ uae_u32 REGPARAM2 op_6001_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52681,7 +52703,6 @@ uae_u32 REGPARAM2 op_6001_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52914,10 +52935,11 @@ uae_u32 REGPARAM2 op_6200_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52926,7 +52948,6 @@ uae_u32 REGPARAM2 op_6200_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52974,10 +52995,11 @@ uae_u32 REGPARAM2 op_6201_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -52986,7 +53008,6 @@ uae_u32 REGPARAM2 op_6201_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53049,10 +53070,11 @@ uae_u32 REGPARAM2 op_6300_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53061,7 +53083,6 @@ uae_u32 REGPARAM2 op_6300_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53109,10 +53130,11 @@ uae_u32 REGPARAM2 op_6301_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53121,7 +53143,6 @@ uae_u32 REGPARAM2 op_6301_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53184,10 +53205,11 @@ uae_u32 REGPARAM2 op_6400_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53196,7 +53218,6 @@ uae_u32 REGPARAM2 op_6400_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53244,10 +53265,11 @@ uae_u32 REGPARAM2 op_6401_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53256,7 +53278,6 @@ uae_u32 REGPARAM2 op_6401_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53319,10 +53340,11 @@ uae_u32 REGPARAM2 op_6500_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53331,7 +53353,6 @@ uae_u32 REGPARAM2 op_6500_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53379,10 +53400,11 @@ uae_u32 REGPARAM2 op_6501_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53391,7 +53413,6 @@ uae_u32 REGPARAM2 op_6501_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53454,10 +53475,11 @@ uae_u32 REGPARAM2 op_6600_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53466,7 +53488,6 @@ uae_u32 REGPARAM2 op_6600_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53514,10 +53535,11 @@ uae_u32 REGPARAM2 op_6601_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53526,7 +53548,6 @@ uae_u32 REGPARAM2 op_6601_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53589,10 +53610,11 @@ uae_u32 REGPARAM2 op_6700_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53601,7 +53623,6 @@ uae_u32 REGPARAM2 op_6700_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53649,10 +53670,11 @@ uae_u32 REGPARAM2 op_6701_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53661,7 +53683,6 @@ uae_u32 REGPARAM2 op_6701_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53724,10 +53745,11 @@ uae_u32 REGPARAM2 op_6800_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53736,7 +53758,6 @@ uae_u32 REGPARAM2 op_6800_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53784,10 +53805,11 @@ uae_u32 REGPARAM2 op_6801_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53796,7 +53818,6 @@ uae_u32 REGPARAM2 op_6801_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53859,10 +53880,11 @@ uae_u32 REGPARAM2 op_6900_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53871,7 +53893,6 @@ uae_u32 REGPARAM2 op_6900_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53919,10 +53940,11 @@ uae_u32 REGPARAM2 op_6901_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53931,7 +53953,6 @@ uae_u32 REGPARAM2 op_6901_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -53994,10 +54015,11 @@ uae_u32 REGPARAM2 op_6a00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54006,7 +54028,6 @@ uae_u32 REGPARAM2 op_6a00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54054,10 +54075,11 @@ uae_u32 REGPARAM2 op_6a01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54066,7 +54088,6 @@ uae_u32 REGPARAM2 op_6a01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54129,10 +54150,11 @@ uae_u32 REGPARAM2 op_6b00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54141,7 +54163,6 @@ uae_u32 REGPARAM2 op_6b00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54189,10 +54210,11 @@ uae_u32 REGPARAM2 op_6b01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54201,7 +54223,6 @@ uae_u32 REGPARAM2 op_6b01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54264,10 +54285,11 @@ uae_u32 REGPARAM2 op_6c00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54276,7 +54298,6 @@ uae_u32 REGPARAM2 op_6c00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54324,10 +54345,11 @@ uae_u32 REGPARAM2 op_6c01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54336,7 +54358,6 @@ uae_u32 REGPARAM2 op_6c01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54399,10 +54420,11 @@ uae_u32 REGPARAM2 op_6d00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54411,7 +54433,6 @@ uae_u32 REGPARAM2 op_6d00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54459,10 +54480,11 @@ uae_u32 REGPARAM2 op_6d01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54471,7 +54493,6 @@ uae_u32 REGPARAM2 op_6d01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54534,10 +54555,11 @@ uae_u32 REGPARAM2 op_6e00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54546,7 +54568,6 @@ uae_u32 REGPARAM2 op_6e00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54594,10 +54615,11 @@ uae_u32 REGPARAM2 op_6e01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54606,7 +54628,6 @@ uae_u32 REGPARAM2 op_6e01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54669,10 +54690,11 @@ uae_u32 REGPARAM2 op_6f00_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54681,7 +54703,6 @@ uae_u32 REGPARAM2 op_6f00_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54729,10 +54750,11 @@ uae_u32 REGPARAM2 op_6f01_11_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -54741,7 +54763,6 @@ uae_u32 REGPARAM2 op_6f01_11_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -122105,10 +122126,11 @@ uae_u32 REGPARAM2 op_4e73_12_ff(uae_u32 opcode)
        #ifdef DEBUGGER
        branch_stack_pop_rte(oldpc);
        #endif
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122118,7 +122140,6 @@ uae_u32 REGPARAM2 op_4e73_12_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 20 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122162,10 +122183,11 @@ uae_u32 REGPARAM2 op_4e75_12_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 12 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122175,7 +122197,6 @@ uae_u32 REGPARAM2 op_4e75_12_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122274,10 +122295,11 @@ uae_u32 REGPARAM2 op_4e77_12_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return 12 * CYCLE_UNIT / 2 + count_cycles;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122287,7 +122309,6 @@ uae_u32 REGPARAM2 op_4e77_12_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return 20 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122315,6 +122336,7 @@ uae_u32 REGPARAM2 op_4e90_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 2;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122348,7 +122370,7 @@ uae_u32 REGPARAM2 op_4e90_12_ff(uae_u32 opcode)
        get_word_000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return 16 * CYCLE_UNIT / 2 + count_cycles;
        }
        return 16 * CYCLE_UNIT / 2 + count_cycles;
@@ -122376,6 +122398,7 @@ uae_u32 REGPARAM2 op_4ea8_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122444,6 +122467,7 @@ uae_u32 REGPARAM2 op_4eb0_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122504,6 +122528,7 @@ uae_u32 REGPARAM2 op_4eb8_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122569,6 +122594,7 @@ uae_u32 REGPARAM2 op_4eb9_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 6;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122630,6 +122656,7 @@ uae_u32 REGPARAM2 op_4eba_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122697,6 +122724,7 @@ uae_u32 REGPARAM2 op_4ebb_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
@@ -122747,6 +122775,7 @@ uae_u32 REGPARAM2 op_4ed0_12_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -122756,7 +122785,8 @@ uae_u32 REGPARAM2 op_4ed0_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122764,7 +122794,7 @@ uae_u32 REGPARAM2 op_4ed0_12_ff(uae_u32 opcode)
        opcode = regs.ir;
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
        return 8 * CYCLE_UNIT / 2 + count_cycles;
@@ -122780,6 +122810,7 @@ uae_u32 REGPARAM2 op_4ee8_12_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -122790,7 +122821,8 @@ uae_u32 REGPARAM2 op_4ee8_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122820,6 +122852,7 @@ uae_u32 REGPARAM2 op_4ef0_12_ff(uae_u32 opcode)
                exception2_fetch_opcode(opcode, 2, 0);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -122830,7 +122863,8 @@ uae_u32 REGPARAM2 op_4ef0_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122853,6 +122887,7 @@ uae_u32 REGPARAM2 op_4ef8_12_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -122863,7 +122898,8 @@ uae_u32 REGPARAM2 op_4ef8_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122892,6 +122928,7 @@ uae_u32 REGPARAM2 op_4ef9_12_ff(uae_u32 opcode)
                exception2_fetch(opcode, 4, -2);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -122901,7 +122938,8 @@ uae_u32 REGPARAM2 op_4ef9_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 8 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122925,6 +122963,7 @@ uae_u32 REGPARAM2 op_4efa_12_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)regs.irc;
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -122935,7 +122974,8 @@ uae_u32 REGPARAM2 op_4efa_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 6 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -122964,6 +123004,7 @@ uae_u32 REGPARAM2 op_4efb_12_ff(uae_u32 opcode)
                exception2_fetch_opcode(opcode, 2, 0);
                return 4 * CYCLE_UNIT / 2 + count_cycles;
        }
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -122974,7 +123015,8 @@ uae_u32 REGPARAM2 op_4efb_12_ff(uae_u32 opcode)
        get_word_000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return 10 * CYCLE_UNIT / 2 + count_cycles;
        }
        regs.ir = regs.irc;
@@ -131916,10 +131958,11 @@ uae_u32 REGPARAM2 op_6000_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -131929,7 +131972,6 @@ uae_u32 REGPARAM2 op_6000_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -131971,10 +132013,11 @@ uae_u32 REGPARAM2 op_6001_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -131984,7 +132027,6 @@ uae_u32 REGPARAM2 op_6001_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132221,10 +132263,11 @@ uae_u32 REGPARAM2 op_6200_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132234,7 +132277,6 @@ uae_u32 REGPARAM2 op_6200_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132276,10 +132318,11 @@ uae_u32 REGPARAM2 op_6201_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132289,7 +132332,6 @@ uae_u32 REGPARAM2 op_6201_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132347,10 +132389,11 @@ uae_u32 REGPARAM2 op_6300_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132360,7 +132403,6 @@ uae_u32 REGPARAM2 op_6300_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132402,10 +132444,11 @@ uae_u32 REGPARAM2 op_6301_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132415,7 +132458,6 @@ uae_u32 REGPARAM2 op_6301_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132473,10 +132515,11 @@ uae_u32 REGPARAM2 op_6400_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132486,7 +132529,6 @@ uae_u32 REGPARAM2 op_6400_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132528,10 +132570,11 @@ uae_u32 REGPARAM2 op_6401_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132541,7 +132584,6 @@ uae_u32 REGPARAM2 op_6401_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132599,10 +132641,11 @@ uae_u32 REGPARAM2 op_6500_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132612,7 +132655,6 @@ uae_u32 REGPARAM2 op_6500_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132654,10 +132696,11 @@ uae_u32 REGPARAM2 op_6501_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132667,7 +132710,6 @@ uae_u32 REGPARAM2 op_6501_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132725,10 +132767,11 @@ uae_u32 REGPARAM2 op_6600_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132738,7 +132781,6 @@ uae_u32 REGPARAM2 op_6600_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132780,10 +132822,11 @@ uae_u32 REGPARAM2 op_6601_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132793,7 +132836,6 @@ uae_u32 REGPARAM2 op_6601_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132851,10 +132893,11 @@ uae_u32 REGPARAM2 op_6700_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132864,7 +132907,6 @@ uae_u32 REGPARAM2 op_6700_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132906,10 +132948,11 @@ uae_u32 REGPARAM2 op_6701_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132919,7 +132962,6 @@ uae_u32 REGPARAM2 op_6701_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132977,10 +133019,11 @@ uae_u32 REGPARAM2 op_6800_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -132990,7 +133033,6 @@ uae_u32 REGPARAM2 op_6800_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133032,10 +133074,11 @@ uae_u32 REGPARAM2 op_6801_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133045,7 +133088,6 @@ uae_u32 REGPARAM2 op_6801_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133103,10 +133145,11 @@ uae_u32 REGPARAM2 op_6900_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133116,7 +133159,6 @@ uae_u32 REGPARAM2 op_6900_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133158,10 +133200,11 @@ uae_u32 REGPARAM2 op_6901_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133171,7 +133214,6 @@ uae_u32 REGPARAM2 op_6901_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133229,10 +133271,11 @@ uae_u32 REGPARAM2 op_6a00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133242,7 +133285,6 @@ uae_u32 REGPARAM2 op_6a00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133284,10 +133326,11 @@ uae_u32 REGPARAM2 op_6a01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133297,7 +133340,6 @@ uae_u32 REGPARAM2 op_6a01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133355,10 +133397,11 @@ uae_u32 REGPARAM2 op_6b00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133368,7 +133411,6 @@ uae_u32 REGPARAM2 op_6b00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133410,10 +133452,11 @@ uae_u32 REGPARAM2 op_6b01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133423,7 +133466,6 @@ uae_u32 REGPARAM2 op_6b01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133481,10 +133523,11 @@ uae_u32 REGPARAM2 op_6c00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133494,7 +133537,6 @@ uae_u32 REGPARAM2 op_6c00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133536,10 +133578,11 @@ uae_u32 REGPARAM2 op_6c01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133549,7 +133592,6 @@ uae_u32 REGPARAM2 op_6c01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133607,10 +133649,11 @@ uae_u32 REGPARAM2 op_6d00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133620,7 +133663,6 @@ uae_u32 REGPARAM2 op_6d00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133662,10 +133704,11 @@ uae_u32 REGPARAM2 op_6d01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133675,7 +133718,6 @@ uae_u32 REGPARAM2 op_6d01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133733,10 +133775,11 @@ uae_u32 REGPARAM2 op_6e00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133746,7 +133789,6 @@ uae_u32 REGPARAM2 op_6e00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133788,10 +133830,11 @@ uae_u32 REGPARAM2 op_6e01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133801,7 +133844,6 @@ uae_u32 REGPARAM2 op_6e01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133859,10 +133901,11 @@ uae_u32 REGPARAM2 op_6f00_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133872,7 +133915,6 @@ uae_u32 REGPARAM2 op_6f00_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133914,10 +133956,11 @@ uae_u32 REGPARAM2 op_6f01_12_ff(uae_u32 opcode)
                        return 2 * CYCLE_UNIT / 2 + count_cycles;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return 6 * CYCLE_UNIT / 2 + count_cycles;
                }
@@ -133927,7 +133970,6 @@ uae_u32 REGPARAM2 op_6f01_12_ff(uae_u32 opcode)
                get_word_000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return 10 * CYCLE_UNIT / 2 + count_cycles;
                }
index 7d9bb9004dfe0969920ce770b02c15bc10b932e5..1d4e926c75c652f2c686e0850d542960b8f4d814 100644 (file)
@@ -42645,10 +42645,11 @@ void REGPARAM2 op_4e73_13_ff(uae_u32 opcode)
        #ifdef DEBUGGER
        branch_stack_pop_rte(oldpc);
        #endif
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -42658,7 +42659,6 @@ void REGPARAM2 op_4e73_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -42757,10 +42757,11 @@ void REGPARAM2 op_4e75_13_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -42770,7 +42771,6 @@ void REGPARAM2 op_4e75_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -42856,10 +42856,11 @@ void REGPARAM2 op_4e77_13_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -42869,7 +42870,6 @@ void REGPARAM2 op_4e77_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -42969,6 +42969,7 @@ void REGPARAM2 op_4e90_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 2;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43002,7 +43003,7 @@ void REGPARAM2 op_4e90_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return;
        }
        return;
@@ -43031,6 +43032,7 @@ void REGPARAM2 op_4ea8_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43099,6 +43101,7 @@ void REGPARAM2 op_4eb0_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43159,6 +43162,7 @@ void REGPARAM2 op_4eb8_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43223,6 +43227,7 @@ void REGPARAM2 op_4eb9_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 6;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43284,6 +43289,7 @@ void REGPARAM2 op_4eba_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43351,6 +43357,7 @@ void REGPARAM2 op_4ebb_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -43400,6 +43407,7 @@ void REGPARAM2 op_4ed0_13_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -43409,7 +43417,8 @@ void REGPARAM2 op_4ed0_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43417,7 +43426,7 @@ void REGPARAM2 op_4ed0_13_ff(uae_u32 opcode)
        opcode = regs.ir;
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return;
        }
        return;
@@ -43433,6 +43442,7 @@ void REGPARAM2 op_4ee8_13_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -43444,7 +43454,8 @@ void REGPARAM2 op_4ee8_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43473,6 +43484,7 @@ void REGPARAM2 op_4ef0_13_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(6);
                m68k_incpci(2);
@@ -43484,7 +43496,8 @@ void REGPARAM2 op_4ef0_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43506,6 +43519,7 @@ void REGPARAM2 op_4ef8_13_ff(uae_u32 opcode)
        uaecptr srca;
        srca = (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -43517,7 +43531,8 @@ void REGPARAM2 op_4ef8_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43545,6 +43560,7 @@ void REGPARAM2 op_4ef9_13_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -43554,7 +43570,8 @@ void REGPARAM2 op_4ef9_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43577,6 +43594,7 @@ void REGPARAM2 op_4efa_13_ff(uae_u32 opcode)
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -43588,7 +43606,8 @@ void REGPARAM2 op_4efa_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -43616,6 +43635,7 @@ void REGPARAM2 op_4efb_13_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(6);
                m68k_incpci(2);
@@ -43627,7 +43647,8 @@ void REGPARAM2 op_4efb_13_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -52991,10 +53012,11 @@ void REGPARAM2 op_6000_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53004,7 +53026,6 @@ void REGPARAM2 op_6000_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53054,10 +53075,11 @@ void REGPARAM2 op_6001_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53067,7 +53089,6 @@ void REGPARAM2 op_6001_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53309,10 +53330,11 @@ void REGPARAM2 op_6200_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53322,7 +53344,6 @@ void REGPARAM2 op_6200_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53372,10 +53393,11 @@ void REGPARAM2 op_6201_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53385,7 +53407,6 @@ void REGPARAM2 op_6201_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53451,10 +53472,11 @@ void REGPARAM2 op_6300_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53464,7 +53486,6 @@ void REGPARAM2 op_6300_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53514,10 +53535,11 @@ void REGPARAM2 op_6301_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53527,7 +53549,6 @@ void REGPARAM2 op_6301_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53593,10 +53614,11 @@ void REGPARAM2 op_6400_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53606,7 +53628,6 @@ void REGPARAM2 op_6400_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53656,10 +53677,11 @@ void REGPARAM2 op_6401_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53669,7 +53691,6 @@ void REGPARAM2 op_6401_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53735,10 +53756,11 @@ void REGPARAM2 op_6500_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53748,7 +53770,6 @@ void REGPARAM2 op_6500_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53798,10 +53819,11 @@ void REGPARAM2 op_6501_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53811,7 +53833,6 @@ void REGPARAM2 op_6501_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53877,10 +53898,11 @@ void REGPARAM2 op_6600_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53890,7 +53912,6 @@ void REGPARAM2 op_6600_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -53940,10 +53961,11 @@ void REGPARAM2 op_6601_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -53953,7 +53975,6 @@ void REGPARAM2 op_6601_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54019,10 +54040,11 @@ void REGPARAM2 op_6700_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54032,7 +54054,6 @@ void REGPARAM2 op_6700_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54082,10 +54103,11 @@ void REGPARAM2 op_6701_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54095,7 +54117,6 @@ void REGPARAM2 op_6701_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54161,10 +54182,11 @@ void REGPARAM2 op_6800_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54174,7 +54196,6 @@ void REGPARAM2 op_6800_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54224,10 +54245,11 @@ void REGPARAM2 op_6801_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54237,7 +54259,6 @@ void REGPARAM2 op_6801_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54303,10 +54324,11 @@ void REGPARAM2 op_6900_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54316,7 +54338,6 @@ void REGPARAM2 op_6900_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54366,10 +54387,11 @@ void REGPARAM2 op_6901_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54379,7 +54401,6 @@ void REGPARAM2 op_6901_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54445,10 +54466,11 @@ void REGPARAM2 op_6a00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54458,7 +54480,6 @@ void REGPARAM2 op_6a00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54508,10 +54529,11 @@ void REGPARAM2 op_6a01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54521,7 +54543,6 @@ void REGPARAM2 op_6a01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54587,10 +54608,11 @@ void REGPARAM2 op_6b00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54600,7 +54622,6 @@ void REGPARAM2 op_6b00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54650,10 +54671,11 @@ void REGPARAM2 op_6b01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54663,7 +54685,6 @@ void REGPARAM2 op_6b01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54729,10 +54750,11 @@ void REGPARAM2 op_6c00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54742,7 +54764,6 @@ void REGPARAM2 op_6c00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54792,10 +54813,11 @@ void REGPARAM2 op_6c01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54805,7 +54827,6 @@ void REGPARAM2 op_6c01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54871,10 +54892,11 @@ void REGPARAM2 op_6d00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54884,7 +54906,6 @@ void REGPARAM2 op_6d00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -54934,10 +54955,11 @@ void REGPARAM2 op_6d01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -54947,7 +54969,6 @@ void REGPARAM2 op_6d01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -55013,10 +55034,11 @@ void REGPARAM2 op_6e00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -55026,7 +55048,6 @@ void REGPARAM2 op_6e00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -55076,10 +55097,11 @@ void REGPARAM2 op_6e01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -55089,7 +55111,6 @@ void REGPARAM2 op_6e01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -55155,10 +55176,11 @@ void REGPARAM2 op_6f00_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -55168,7 +55190,6 @@ void REGPARAM2 op_6f00_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -55218,10 +55239,11 @@ void REGPARAM2 op_6f01_13_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -55231,7 +55253,6 @@ void REGPARAM2 op_6f01_13_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -123306,10 +123327,11 @@ void REGPARAM2 op_4e73_14_ff(uae_u32 opcode)
        #ifdef DEBUGGER
        branch_stack_pop_rte(oldpc);
        #endif
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123320,7 +123342,6 @@ void REGPARAM2 op_4e73_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -123363,10 +123384,11 @@ void REGPARAM2 op_4e75_14_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123377,7 +123399,6 @@ void REGPARAM2 op_4e75_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -123479,10 +123500,11 @@ void REGPARAM2 op_4e77_14_ff(uae_u32 opcode)
                exception3_read_prefetch_only(opcode, faultpc);
                return;
        }
+       int pcadjust = oldpc - m68k_getpci() + 2;
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
+               pcoffset += pcadjust;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123493,7 +123515,6 @@ void REGPARAM2 op_4e77_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               pcoffset = oldpc - m68k_getpci() + 2;
                exception2_fetch_opcode(opcode, 2, pcoffset);
                return;
        }
@@ -123521,6 +123542,7 @@ void REGPARAM2 op_4e90_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 2;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123554,7 +123576,7 @@ void REGPARAM2 op_4e90_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(2);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return;
        }
        return;
@@ -123583,6 +123605,7 @@ void REGPARAM2 op_4ea8_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123652,6 +123675,7 @@ void REGPARAM2 op_4eb0_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123713,6 +123737,7 @@ void REGPARAM2 op_4eb8_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123778,6 +123803,7 @@ void REGPARAM2 op_4eb9_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 6;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123840,6 +123866,7 @@ void REGPARAM2 op_4eba_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123908,6 +123935,7 @@ void REGPARAM2 op_4ebb_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
+               pcoffset = oldpc + 4;
                exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
@@ -123958,6 +123986,7 @@ void REGPARAM2 op_4ed0_14_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -123967,7 +123996,8 @@ void REGPARAM2 op_4ed0_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -123975,7 +124005,7 @@ void REGPARAM2 op_4ed0_14_ff(uae_u32 opcode)
        opcode = regs.ir;
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(0, 2, 0);
+               exception2_fetch_opcode(opcode, 2, 0);
                return;
        }
        return;
@@ -123991,6 +124021,7 @@ void REGPARAM2 op_4ee8_14_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -124002,7 +124033,8 @@ void REGPARAM2 op_4ee8_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -124032,6 +124064,7 @@ void REGPARAM2 op_4ef0_14_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(6);
                m68k_incpci(2);
@@ -124043,7 +124076,8 @@ void REGPARAM2 op_4ef0_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -124066,6 +124100,7 @@ void REGPARAM2 op_4ef8_14_ff(uae_u32 opcode)
        uaecptr srca;
        srca = (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -124077,7 +124112,8 @@ void REGPARAM2 op_4ef8_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -124106,6 +124142,7 @@ void REGPARAM2 op_4ef9_14_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -124115,7 +124152,8 @@ void REGPARAM2 op_4ef9_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -124139,6 +124177,7 @@ void REGPARAM2 op_4efa_14_ff(uae_u32 opcode)
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)regs.irc;
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(2);
                m68k_incpci(2);
@@ -124150,7 +124189,8 @@ void REGPARAM2 op_4efa_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -124179,6 +124219,7 @@ void REGPARAM2 op_4efb_14_ff(uae_u32 opcode)
                return;
        }
        ipl_fetch_now();
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                do_cycles_ce000_internal(6);
                m68k_incpci(2);
@@ -124190,7 +124231,8 @@ void REGPARAM2 op_4efb_14_ff(uae_u32 opcode)
        get_word_ce000_prefetch(0);
        if(hardware_bus_error) {
                int pcoffset = 0;
-               exception2_fetch_opcode(opcode, 0, 0);
+               pcoffset = oldpc + 2;
+               exception2_fetch_opcode(opcode, 0, pcoffset);
                return;
        }
        regs.ir = regs.irc;
@@ -133246,10 +133288,11 @@ void REGPARAM2 op_6000_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133260,7 +133303,6 @@ void REGPARAM2 op_6000_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133304,10 +133346,11 @@ void REGPARAM2 op_6001_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133318,7 +133361,6 @@ void REGPARAM2 op_6001_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133565,10 +133607,11 @@ void REGPARAM2 op_6200_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133579,7 +133622,6 @@ void REGPARAM2 op_6200_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133623,10 +133665,11 @@ void REGPARAM2 op_6201_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133637,7 +133680,6 @@ void REGPARAM2 op_6201_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133699,10 +133741,11 @@ void REGPARAM2 op_6300_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133713,7 +133756,6 @@ void REGPARAM2 op_6300_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133757,10 +133799,11 @@ void REGPARAM2 op_6301_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133771,7 +133814,6 @@ void REGPARAM2 op_6301_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133833,10 +133875,11 @@ void REGPARAM2 op_6400_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133847,7 +133890,6 @@ void REGPARAM2 op_6400_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133891,10 +133933,11 @@ void REGPARAM2 op_6401_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133905,7 +133948,6 @@ void REGPARAM2 op_6401_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -133967,10 +134009,11 @@ void REGPARAM2 op_6500_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -133981,7 +134024,6 @@ void REGPARAM2 op_6500_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134025,10 +134067,11 @@ void REGPARAM2 op_6501_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134039,7 +134082,6 @@ void REGPARAM2 op_6501_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134101,10 +134143,11 @@ void REGPARAM2 op_6600_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134115,7 +134158,6 @@ void REGPARAM2 op_6600_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134159,10 +134201,11 @@ void REGPARAM2 op_6601_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134173,7 +134216,6 @@ void REGPARAM2 op_6601_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134235,10 +134277,11 @@ void REGPARAM2 op_6700_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134249,7 +134292,6 @@ void REGPARAM2 op_6700_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134293,10 +134335,11 @@ void REGPARAM2 op_6701_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134307,7 +134350,6 @@ void REGPARAM2 op_6701_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134369,10 +134411,11 @@ void REGPARAM2 op_6800_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134383,7 +134426,6 @@ void REGPARAM2 op_6800_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134427,10 +134469,11 @@ void REGPARAM2 op_6801_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134441,7 +134484,6 @@ void REGPARAM2 op_6801_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134503,10 +134545,11 @@ void REGPARAM2 op_6900_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134517,7 +134560,6 @@ void REGPARAM2 op_6900_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134561,10 +134603,11 @@ void REGPARAM2 op_6901_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134575,7 +134618,6 @@ void REGPARAM2 op_6901_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134637,10 +134679,11 @@ void REGPARAM2 op_6a00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134651,7 +134694,6 @@ void REGPARAM2 op_6a00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134695,10 +134737,11 @@ void REGPARAM2 op_6a01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134709,7 +134752,6 @@ void REGPARAM2 op_6a01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134771,10 +134813,11 @@ void REGPARAM2 op_6b00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134785,7 +134828,6 @@ void REGPARAM2 op_6b00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134829,10 +134871,11 @@ void REGPARAM2 op_6b01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134843,7 +134886,6 @@ void REGPARAM2 op_6b01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134905,10 +134947,11 @@ void REGPARAM2 op_6c00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134919,7 +134962,6 @@ void REGPARAM2 op_6c00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -134963,10 +135005,11 @@ void REGPARAM2 op_6c01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -134977,7 +135020,6 @@ void REGPARAM2 op_6c01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135039,10 +135081,11 @@ void REGPARAM2 op_6d00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135053,7 +135096,6 @@ void REGPARAM2 op_6d00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135097,10 +135139,11 @@ void REGPARAM2 op_6d01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135111,7 +135154,6 @@ void REGPARAM2 op_6d01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135173,10 +135215,11 @@ void REGPARAM2 op_6e00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135187,7 +135230,6 @@ void REGPARAM2 op_6e00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135231,10 +135273,11 @@ void REGPARAM2 op_6e01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135245,7 +135288,6 @@ void REGPARAM2 op_6e01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135307,10 +135349,11 @@ void REGPARAM2 op_6f00_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135321,7 +135364,6 @@ void REGPARAM2 op_6f00_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
@@ -135365,10 +135407,11 @@ void REGPARAM2 op_6f01_14_ff(uae_u32 opcode)
                        return;
                }
                m68k_incpci((uae_s32)src + 2);
+               int pcadjust = oldpc - m68k_getpci() + 2;
                get_word_ce000_prefetch(0);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
+                       pcoffset += pcadjust;
                        exception2_fetch_opcode(opcode, 0, pcoffset);
                        return;
                }
@@ -135379,7 +135422,6 @@ void REGPARAM2 op_6f01_14_ff(uae_u32 opcode)
                get_word_ce000_prefetch(2);
                if(hardware_bus_error) {
                        int pcoffset = 0;
-                       pcoffset = oldpc - m68k_getpci() + 2;
                        exception2_fetch_opcode(opcode, 2, pcoffset);
                        return;
                }
index 32166d46e34441fb1172e800fc549eeab5d7e12d..6e6aaa6d589eda7a93b3c3b0f39b7d26172bb511 100644 (file)
@@ -20313,6 +20313,7 @@ uae_u32 REGPARAM2 op_4ed0_20_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20332,6 +20333,7 @@ uae_u32 REGPARAM2 op_4ee8_20_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_020_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20353,6 +20355,7 @@ uae_u32 REGPARAM2 op_4ef0_20_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = x_get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20371,6 +20374,7 @@ uae_u32 REGPARAM2 op_4ef8_20_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_word_020_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20389,6 +20393,7 @@ uae_u32 REGPARAM2 op_4ef9_20_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_long_020_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20407,6 +20412,7 @@ uae_u32 REGPARAM2 op_4efa_20_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_word_020_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20427,6 +20433,7 @@ uae_u32 REGPARAM2 op_4efb_20_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index edca3cc8e97093ce85d10d0ef75ef12455322932..ca97a670933a1ac49877a11344eebf7b07a2849d 100644 (file)
@@ -22045,6 +22045,7 @@ void REGPARAM2 op_4ed0_21_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22066,6 +22067,7 @@ void REGPARAM2 op_4ee8_21_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_ce020_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22089,6 +22091,7 @@ void REGPARAM2 op_4ef0_21_ff(uae_u32 opcode)
        m68k_incpci(2);
        srca = x_get_disp_ea_ce020(m68k_areg(regs, srcreg), 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22109,6 +22112,7 @@ void REGPARAM2 op_4ef8_21_ff(uae_u32 opcode)
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_word_ce020_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22129,6 +22133,7 @@ void REGPARAM2 op_4ef9_21_ff(uae_u32 opcode)
        uaecptr srca;
        srca = get_long_ce020_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22149,6 +22154,7 @@ void REGPARAM2 op_4efa_21_ff(uae_u32 opcode)
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_word_ce020_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22171,6 +22177,7 @@ void REGPARAM2 op_4efb_21_ff(uae_u32 opcode)
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_ce020(tmppc, 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index 5c6414f269571dfcb70768ae4c3e3c09bac07c96..a5b3f11783422d4ee1d8d7d9d239ee614039546d 100644 (file)
@@ -20314,6 +20314,7 @@ uae_u32 REGPARAM2 op_4ed0_22_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20333,6 +20334,7 @@ uae_u32 REGPARAM2 op_4ee8_22_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_030_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20354,6 +20356,7 @@ uae_u32 REGPARAM2 op_4ef0_22_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = x_get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20372,6 +20375,7 @@ uae_u32 REGPARAM2 op_4ef8_22_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_word_030_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20390,6 +20394,7 @@ uae_u32 REGPARAM2 op_4ef9_22_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_long_030_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20408,6 +20413,7 @@ uae_u32 REGPARAM2 op_4efa_22_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_word_030_prefetch(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20428,6 +20434,7 @@ uae_u32 REGPARAM2 op_4efb_22_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index f6fbba2bfff1f65b8f5c0dc4dcf2f862b2ce5602..75fafb4dfd2c228974426df47c569a8f77329696 100644 (file)
@@ -22046,6 +22046,7 @@ void REGPARAM2 op_4ed0_23_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22067,6 +22068,7 @@ void REGPARAM2 op_4ee8_23_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_ce030_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22090,6 +22092,7 @@ void REGPARAM2 op_4ef0_23_ff(uae_u32 opcode)
        m68k_incpci(2);
        srca = x_get_disp_ea_ce030(m68k_areg(regs, srcreg), 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22110,6 +22113,7 @@ void REGPARAM2 op_4ef8_23_ff(uae_u32 opcode)
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_word_ce030_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22130,6 +22134,7 @@ void REGPARAM2 op_4ef9_23_ff(uae_u32 opcode)
        uaecptr srca;
        srca = get_long_ce030_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22150,6 +22155,7 @@ void REGPARAM2 op_4efa_23_ff(uae_u32 opcode)
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_word_ce030_prefetch(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22172,6 +22178,7 @@ void REGPARAM2 op_4efb_23_ff(uae_u32 opcode)
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_ce030(tmppc, 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index 456ef4abafe2ac688c09db02cbaa46bce58ff797..eb179dec80a1aa041b334d5175ddbf0466c668e7 100644 (file)
@@ -19423,6 +19423,7 @@ void REGPARAM2 op_4ed0_24_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -19441,6 +19442,7 @@ void REGPARAM2 op_4ee8_24_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_cache_040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -19461,6 +19463,7 @@ void REGPARAM2 op_4ef0_24_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = x_get_disp_ea_040(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -19478,6 +19481,7 @@ void REGPARAM2 op_4ef8_24_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_cache_040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -19495,6 +19499,7 @@ void REGPARAM2 op_4ef9_24_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_ilong_cache_040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -19512,6 +19517,7 @@ void REGPARAM2 op_4efa_24_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_cache_040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -19531,6 +19537,7 @@ void REGPARAM2 op_4efb_24_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_040(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index b9954c8cd0b7e7929c897d2237197adf431dcb92..4256ff0d45801ae8df3aadb047f4c07de02376a9 100644 (file)
@@ -21346,6 +21346,7 @@ uae_u32 REGPARAM2 op_4ed0_31_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -21365,6 +21366,7 @@ uae_u32 REGPARAM2 op_4ee8_31_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_mmu040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -21386,6 +21388,7 @@ uae_u32 REGPARAM2 op_4ef0_31_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = x_get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -21404,6 +21407,7 @@ uae_u32 REGPARAM2 op_4ef8_31_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_mmu040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -21422,6 +21426,7 @@ uae_u32 REGPARAM2 op_4ef9_31_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_ilong_mmu040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -21440,6 +21445,7 @@ uae_u32 REGPARAM2 op_4efa_31_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_mmu040(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -21460,6 +21466,7 @@ uae_u32 REGPARAM2 op_4efb_31_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index 01ec7660a6f0dc8d2f09eebb3292e994837e9207..28d19a56c256b1b57ef7390bff07c7b67599e885 100644 (file)
@@ -22007,6 +22007,7 @@ uae_u32 REGPARAM2 op_4ed0_32_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22026,6 +22027,7 @@ uae_u32 REGPARAM2 op_4ee8_32_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_mmu030_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22047,6 +22049,7 @@ uae_u32 REGPARAM2 op_4ef0_32_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = get_disp_ea_020_mmu030(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22065,6 +22068,7 @@ uae_u32 REGPARAM2 op_4ef8_32_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_mmu030_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22083,6 +22087,7 @@ uae_u32 REGPARAM2 op_4ef9_32_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_ilong_mmu030_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22101,6 +22106,7 @@ uae_u32 REGPARAM2 op_4efa_32_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_mmu030_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22121,6 +22127,7 @@ uae_u32 REGPARAM2 op_4efb_32_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = get_disp_ea_020_mmu030(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index b7eb1a2223df5a8a006ec17f8e4177fadb05deb0..2d0a166334a2a8e826f21dbe70f0f9f21a08b825 100644 (file)
@@ -20293,6 +20293,7 @@ uae_u32 REGPARAM2 op_4ed0_33_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20312,6 +20313,7 @@ uae_u32 REGPARAM2 op_4ee8_33_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_mmu060(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20333,6 +20335,7 @@ uae_u32 REGPARAM2 op_4ef0_33_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = x_get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20351,6 +20354,7 @@ uae_u32 REGPARAM2 op_4ef8_33_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_mmu060(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20369,6 +20373,7 @@ uae_u32 REGPARAM2 op_4ef9_33_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_ilong_mmu060(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -20387,6 +20392,7 @@ uae_u32 REGPARAM2 op_4efa_33_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_mmu060(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -20407,6 +20413,7 @@ uae_u32 REGPARAM2 op_4efb_33_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = x_get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index 901df441678ec4646055ed783b19d2ff02a494bc..bd48c322a4ae996169ee2e7f2e06db8fb5519c0a 100644 (file)
@@ -22957,6 +22957,7 @@ uae_u32 REGPARAM2 op_4ed0_34_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -22976,6 +22977,7 @@ uae_u32 REGPARAM2 op_4ee8_34_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -22997,6 +22999,7 @@ uae_u32 REGPARAM2 op_4ef0_34_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpci(2);
        srca = get_disp_ea_020_mmu030c(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -23015,6 +23018,7 @@ uae_u32 REGPARAM2 op_4ef8_34_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -23033,6 +23037,7 @@ uae_u32 REGPARAM2 op_4ef9_34_ff(uae_u32 opcode)
        int count_cycles = 0;
        uaecptr srca;
        srca = get_ilong_mmu030c_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -23051,6 +23056,7 @@ uae_u32 REGPARAM2 op_4efa_34_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -23071,6 +23077,7 @@ uae_u32 REGPARAM2 op_4efb_34_ff(uae_u32 opcode)
        m68k_incpci(2);
        uaecptr tmppc = m68k_getpci();
        srca = get_disp_ea_020_mmu030c(tmppc, 0);
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index c7965617f7fdf2843a05e738258793fb4f6132f5..f39c2d13420c88ffd1732359ad43c6f1f08cd2ec 100644 (file)
@@ -24687,6 +24687,7 @@ void REGPARAM2 op_4ed0_35_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -24708,6 +24709,7 @@ void REGPARAM2 op_4ee8_35_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -24731,6 +24733,7 @@ void REGPARAM2 op_4ef0_35_ff(uae_u32 opcode)
        m68k_incpci(2);
        srca = get_disp_ea_020_mmu030c(m68k_areg(regs, srcreg), 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -24751,6 +24754,7 @@ void REGPARAM2 op_4ef8_35_ff(uae_u32 opcode)
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -24771,6 +24775,7 @@ void REGPARAM2 op_4ef9_35_ff(uae_u32 opcode)
        uaecptr srca;
        srca = get_ilong_mmu030c_state(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                m68k_incpci(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -24791,6 +24796,7 @@ void REGPARAM2 op_4efa_35_ff(uae_u32 opcode)
        srca = m68k_getpci() + 2;
        srca += (uae_s32)(uae_s16)get_iword_mmu030c_state(2);
        /* op H:4-,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 2 * CYCLE_UNIT / 2;
                m68k_incpci(2);
@@ -24813,6 +24819,7 @@ void REGPARAM2 op_4efb_35_ff(uae_u32 opcode)
        uaecptr tmppc = m68k_getpci();
        srca = get_disp_ea_020_mmu030c(tmppc, 0);
        /* op H:4,T:0,C:-4 */
+       uaecptr oldpc = m68k_getpci();
        if (srca & 1) {
                count_cycles += 6 * CYCLE_UNIT / 2;
                m68k_incpci(2);
index aebdfb31ddb0138eef5e5e7e05e2b284c021797f..f42c86a60a2ccd6ac9155390d5956d832cde35c5 100644 (file)
@@ -18569,6 +18569,7 @@ uae_u32 REGPARAM2 op_4ed0_40_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18587,6 +18588,7 @@ uae_u32 REGPARAM2 op_4ee8_40_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18606,6 +18608,7 @@ uae_u32 REGPARAM2 op_4ef0_40_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpc(2);
        srca = get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18622,6 +18625,7 @@ uae_u32 REGPARAM2 op_4ef8_40_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18638,6 +18642,7 @@ uae_u32 REGPARAM2 op_4ef9_40_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18655,6 +18660,7 @@ uae_u32 REGPARAM2 op_4efa_40_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18673,6 +18679,7 @@ uae_u32 REGPARAM2 op_4efb_40_ff(uae_u32 opcode)
        m68k_incpc(2);
        uaecptr tmppc = m68k_getpc();
        srca = get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -49509,6 +49516,7 @@ uae_u32 REGPARAM2 op_4ef0_44_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -49525,6 +49533,7 @@ uae_u32 REGPARAM2 op_4efb_44_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57646,6 +57655,7 @@ uae_u32 REGPARAM2 op_4ed0_45_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57663,6 +57673,7 @@ uae_u32 REGPARAM2 op_4ee8_45_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57680,6 +57691,7 @@ uae_u32 REGPARAM2 op_4ef0_45_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57695,6 +57707,7 @@ uae_u32 REGPARAM2 op_4ef8_45_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57710,6 +57723,7 @@ uae_u32 REGPARAM2 op_4ef9_45_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57726,6 +57740,7 @@ uae_u32 REGPARAM2 op_4efa_45_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57742,6 +57757,7 @@ uae_u32 REGPARAM2 op_4efb_45_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63438,6 +63454,7 @@ uae_u32 REGPARAM2 op_4ed0_46_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63455,6 +63472,7 @@ uae_u32 REGPARAM2 op_4ee8_46_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63472,6 +63490,7 @@ uae_u32 REGPARAM2 op_4ef0_46_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63487,6 +63506,7 @@ uae_u32 REGPARAM2 op_4ef8_46_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63502,6 +63522,7 @@ uae_u32 REGPARAM2 op_4ef9_46_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63518,6 +63539,7 @@ uae_u32 REGPARAM2 op_4efa_46_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -63534,6 +63556,7 @@ uae_u32 REGPARAM2 op_4efb_46_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69230,6 +69253,7 @@ uae_u32 REGPARAM2 op_4ed0_47_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69247,6 +69271,7 @@ uae_u32 REGPARAM2 op_4ee8_47_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69264,6 +69289,7 @@ uae_u32 REGPARAM2 op_4ef0_47_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69279,6 +69305,7 @@ uae_u32 REGPARAM2 op_4ef8_47_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69294,6 +69321,7 @@ uae_u32 REGPARAM2 op_4ef9_47_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69310,6 +69338,7 @@ uae_u32 REGPARAM2 op_4efa_47_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -69326,6 +69355,7 @@ uae_u32 REGPARAM2 op_4efb_47_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75022,6 +75052,7 @@ uae_u32 REGPARAM2 op_4ed0_48_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75039,6 +75070,7 @@ uae_u32 REGPARAM2 op_4ee8_48_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75056,6 +75088,7 @@ uae_u32 REGPARAM2 op_4ef0_48_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75071,6 +75104,7 @@ uae_u32 REGPARAM2 op_4ef8_48_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75086,6 +75120,7 @@ uae_u32 REGPARAM2 op_4ef9_48_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75102,6 +75137,7 @@ uae_u32 REGPARAM2 op_4efa_48_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -75118,6 +75154,7 @@ uae_u32 REGPARAM2 op_4efb_48_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80814,6 +80851,7 @@ uae_u32 REGPARAM2 op_4ed0_49_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80831,6 +80869,7 @@ uae_u32 REGPARAM2 op_4ee8_49_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80848,6 +80887,7 @@ uae_u32 REGPARAM2 op_4ef0_49_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80863,6 +80903,7 @@ uae_u32 REGPARAM2 op_4ef8_49_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80878,6 +80919,7 @@ uae_u32 REGPARAM2 op_4ef9_49_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_dilong(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80894,6 +80936,7 @@ uae_u32 REGPARAM2 op_4efa_49_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_diword(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -80910,6 +80953,7 @@ uae_u32 REGPARAM2 op_4efb_49_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_diword(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
index 5143e2753678e16cf577ae6257e6d8081b6da44a..895b10e4ed31647578cf2a4ad84631857c1fe269 100644 (file)
@@ -18623,6 +18623,7 @@ uae_u32 REGPARAM2 op_4ed0_50_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18641,6 +18642,7 @@ uae_u32 REGPARAM2 op_4ee8_50_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18660,6 +18662,7 @@ uae_u32 REGPARAM2 op_4ef0_50_ff(uae_u32 opcode)
        uaecptr srca;
        m68k_incpc(2);
        srca = x_get_disp_ea_020(m68k_areg(regs, srcreg), 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18676,6 +18679,7 @@ uae_u32 REGPARAM2 op_4ef8_50_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18692,6 +18696,7 @@ uae_u32 REGPARAM2 op_4ef9_50_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_iilong_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18709,6 +18714,7 @@ uae_u32 REGPARAM2 op_4efa_50_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -18727,6 +18733,7 @@ uae_u32 REGPARAM2 op_4efb_50_ff(uae_u32 opcode)
        m68k_incpc(2);
        uaecptr tmppc = m68k_getpc();
        srca = x_get_disp_ea_020(tmppc, 0);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -49599,6 +49606,7 @@ uae_u32 REGPARAM2 op_4ef0_54_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iiword_jit(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -49615,6 +49623,7 @@ uae_u32 REGPARAM2 op_4efb_54_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_iiword_jit(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57736,6 +57745,7 @@ uae_u32 REGPARAM2 op_4ed0_55_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57753,6 +57763,7 @@ uae_u32 REGPARAM2 op_4ee8_55_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57770,6 +57781,7 @@ uae_u32 REGPARAM2 op_4ef0_55_ff(uae_u32 opcode)
        uae_u32 srcreg = (real_opcode & 7);
        uaecptr srca;
        srca = get_disp_ea_000(m68k_areg(regs, srcreg), get_iiword_jit(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57785,6 +57797,7 @@ uae_u32 REGPARAM2 op_4ef8_55_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57800,6 +57813,7 @@ uae_u32 REGPARAM2 op_4ef9_55_ff(uae_u32 opcode)
 {
        uaecptr srca;
        srca = get_iilong_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57816,6 +57830,7 @@ uae_u32 REGPARAM2 op_4efa_55_ff(uae_u32 opcode)
        uaecptr srca;
        srca = m68k_getpc() + 2;
        srca += (uae_s32)(uae_s16)get_iiword_jit(2);
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
@@ -57832,6 +57847,7 @@ uae_u32 REGPARAM2 op_4efb_55_ff(uae_u32 opcode)
        uaecptr srca;
        uaecptr tmppc = m68k_getpc() + 2;
        srca = get_disp_ea_000(tmppc, get_iiword_jit(2));
+       uaecptr oldpc = m68k_getpc();
        if (srca & 1) {
                m68k_incpc(2);
                exception3_read_prefetch_only(opcode, srca);
index f7f8f311d3cc004d8c978df5c3730f44c394f01e..5fe680dabec860969decbf2c9654c344c0c91365 100644 (file)
@@ -7220,7 +7220,8 @@ static void gen_opcode (unsigned int opcode)
                clear_m68k_offset();
                tail_ce020_done = true;
                if (using_ce || using_prefetch) {
-                       fill_prefetch_full_000_special(2, NULL);
+                       out("int pcadjust = oldpc - m68k_getpci() + 2;\n");
+                       fill_prefetch_full_000_special(-1, NULL);
                } else {
                        fill_prefetch_full_ntx(0);
                }
@@ -7389,7 +7390,8 @@ static void gen_opcode (unsigned int opcode)
                out("}\n");
                clear_m68k_offset();
                if (using_prefetch || using_ce) {
-                       fill_prefetch_full_000_special(2, NULL);
+                       out("int pcadjust = oldpc - m68k_getpci() + 2;\n");
+                       fill_prefetch_full_000_special(-1, NULL);
                } else {
                        fill_prefetch_full(0);
                }
@@ -7502,7 +7504,8 @@ static void gen_opcode (unsigned int opcode)
                }
                clear_m68k_offset();
                if (using_prefetch || using_ce) {
-                       fill_prefetch_full_000_special(2, NULL);
+                       out("int pcadjust = oldpc - m68k_getpci() + 2;\n");
+                       fill_prefetch_full_000_special(-1, NULL);
                } else {
                        fill_prefetch_full(0);
                }
@@ -7568,7 +7571,17 @@ static void gen_opcode (unsigned int opcode)
                                        write_return_cycles(0);
                                        out("}\n");
                                }
+
+                               if (curi->smode == absl) {
+                                       sprintf(bus_error_code, "pcoffset = oldpc + 6;\n");
+                               } else if (curi->smode == Ad8r || curi->smode == PC8r || curi->smode == Ad16 || curi->smode == PC16 || curi->smode == absw) {
+                                       sprintf(bus_error_code, "pcoffset = oldpc + 4;\n");
+                               } else {
+                                       sprintf(bus_error_code, "pcoffset = oldpc + 2;\n");
+                               }
                                fill_prefetch_1(0);
+                               bus_error_code[0] = 0;
+
                                if (cpu_level < 2) {
                                        out("m68k_areg(regs, 7) -= 4;\n");
                                }
@@ -7624,7 +7637,8 @@ static void gen_opcode (unsigned int opcode)
                                        out("if(regs.t1) opcode |= 0x10000;\n");
                                out("%s(%d);\n", prefetch_word, 2);
                                count_readw++;
-                               check_prefetch_bus_error(-2, 0, sp);
+                               check_prefetch_bus_error(2, 0, 0);
+
                                did_prefetch = 1;
                                ir2irc = 0;
                        } else {
@@ -7638,6 +7652,7 @@ static void gen_opcode (unsigned int opcode)
        case i_JMP:
                no_prefetch_ce020 = true;
                genamode(curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL);
+               out("uaecptr oldpc = %s;\n", getpc);
                if (using_exception_3) {
                        push_ins_cnt();
                        out("if (srca & 1) {\n");
@@ -7664,7 +7679,9 @@ static void gen_opcode (unsigned int opcode)
                if (using_prefetch || using_ce) {
                        out("%s(%d);\n", prefetch_word, 0);
                        count_readw++;
-                       check_prefetch_bus_error(-1, 0, 0);
+                       sprintf(bus_error_code, "pcoffset = oldpc + 2;\n");
+                       check_prefetch_bus_error(-1, -1, 0);
+                       bus_error_code[0] = 0;
                        irc2ir();
                        set_last_access_ipl();
                        out("%s(%d);\n", prefetch_word, 2);
@@ -7673,7 +7690,7 @@ static void gen_opcode (unsigned int opcode)
                        if (sp < 0 && cpu_level == 0)
                                out("if(regs.t1) opcode |= 0x10000;\n");
                        count_readw++;
-                       check_prefetch_bus_error(-2, 0, sp);
+                       check_prefetch_bus_error(2, 0, 0);
                        did_prefetch = 1;
                        ir2irc = 0;
                } else {
@@ -7837,7 +7854,8 @@ static void gen_opcode (unsigned int opcode)
                push_ins_cnt();
                if (using_prefetch) {
                        incpc("(uae_s32)src + 2");
-                       fill_prefetch_full_000_special(2, NULL);
+                       out("int pcadjust = oldpc - m68k_getpci() + 2;\n");
+                       fill_prefetch_full_000_special(-1, NULL);
                        if (using_ce)
                                out("return;\n");
                        else