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