src/musashi/m68kcpu.h

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