1.1 diff -r 5f7faf5ecbf4 -r 2f8afb9e5baa src/musashi/m68kcpu.h 1.2 --- a/src/musashi/m68kcpu.h Tue Nov 15 09:30:57 2011 +0000 1.3 +++ b/src/musashi/m68kcpu.h Tue Nov 15 10:12:37 2011 +0000 1.4 @@ -322,6 +322,8 @@ 1.5 #define CPU_ADDRESS_MASK m68ki_cpu.address_mask 1.6 #define CPU_SR_MASK m68ki_cpu.sr_mask 1.7 1.8 +#define BUS_ERROR_OCCURRED m68ki_cpu.bus_error_occurred 1.9 + 1.10 #define CYC_INSTRUCTION m68ki_cpu.cyc_instruction 1.11 #define CYC_EXCEPTION m68ki_cpu.cyc_exception 1.12 #define CYC_BCC_NOTAKE_B m68ki_cpu.cyc_bcc_notake_b 1.13 @@ -776,6 +778,8 @@ 1.14 uint address_mask; /* Available address pins */ 1.15 uint sr_mask; /* Implemented status register bits */ 1.16 1.17 + uint bus_error_occurred; 1.18 + 1.19 /* Clocks required for instructions / exceptions */ 1.20 uint cyc_bcc_notake_b; 1.21 uint cyc_bcc_notake_w; 1.22 @@ -1688,14 +1692,17 @@ 1.23 /* Exception for bus error */ 1.24 INLINE void m68ki_exception_bus_error(void) 1.25 { 1.26 - uint sr = m68ki_init_exception(); 1.27 - m68ki_stack_frame_0000(REG_PC, sr, EXCEPTION_BUS_ERROR); 1.28 - m68ki_jump_vector(EXCEPTION_BUS_ERROR); 1.29 - 1.30 + BUS_ERROR_OCCURRED = 1; 1.31 /* Use up some clock cycles and undo the instruction's cycles */ 1.32 USE_CYCLES(CYC_EXCEPTION[EXCEPTION_BUS_ERROR] - CYC_INSTRUCTION[REG_IR]); 1.33 } 1.34 1.35 +INLINE void m68ki_jump_bus_error_vector(void) 1.36 +{ 1.37 + uint sr = m68ki_init_exception(); 1.38 + m68ki_stack_frame_0000(REG_PPC, sr, EXCEPTION_BUS_ERROR); 1.39 + m68ki_jump_vector(EXCEPTION_BUS_ERROR); 1.40 +} 1.41 1.42 /* Exception for A-Line instructions */ 1.43 INLINE void m68ki_exception_1010(void)