src/musashi/m68kcpu.h

changeset 109
2f8afb9e5baa
parent 19
ea417ac1d83a
child 110
acea4b2f396f
     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)