src/musashi/m68k_in.c

changeset 110
acea4b2f396f
parent 0
8bf1bf91a36d
     1.1 --- a/src/musashi/m68k_in.c	Tue Nov 15 10:12:37 2011 +0000
     1.2 +++ b/src/musashi/m68k_in.c	Thu Dec 08 23:44:19 2011 +0000
     1.3 @@ -8636,8 +8636,32 @@
     1.4  				m68ki_jump(new_pc);
     1.5  				m68ki_set_sr(new_sr);
     1.6  				return;
     1.7 +			} else if (format_word == 8) {
     1.8 +				/* Format 8 stack frame -- 68010 only. 29 word bus/address error */
     1.9 +				new_sr = m68ki_pull_16();
    1.10 +				new_pc = m68ki_pull_32();
    1.11 +				m68ki_fake_pull_16();	/* format word */
    1.12 +				m68ki_fake_pull_16();	/* special status word */
    1.13 +				m68ki_fake_pull_32();	/* fault address */
    1.14 +				m68ki_fake_pull_16();	/* unused/reserved */
    1.15 +				m68ki_fake_pull_16();	/* data output buffer */
    1.16 +				m68ki_fake_pull_16();	/* unused/reserved */
    1.17 +				m68ki_fake_pull_16();	/* data input buffer */
    1.18 +				m68ki_fake_pull_16();	/* unused/reserved */
    1.19 +				m68ki_fake_pull_16();	/* instruction input buffer */
    1.20 +				m68ki_fake_pull_32();	/* internal information, 16 words */
    1.21 +				m68ki_fake_pull_32();	/* (actually, we use 8 DWORDs) */
    1.22 +				m68ki_fake_pull_32();
    1.23 +				m68ki_fake_pull_32();
    1.24 +				m68ki_fake_pull_32();
    1.25 +				m68ki_fake_pull_32();
    1.26 +				m68ki_fake_pull_32();
    1.27 +				m68ki_fake_pull_32();
    1.28 +				m68ki_jump(new_pc);
    1.29 +				m68ki_set_sr(new_sr);
    1.30 +				return;
    1.31  			}
    1.32 -			/* Not handling bus fault (9) */
    1.33 +			/* FIXME: Not handling other exception types (9) */
    1.34  			m68ki_exception_format_error();
    1.35  			return;
    1.36  		}
    1.37 @@ -8669,7 +8693,7 @@
    1.38  				m68ki_set_sr(new_sr);
    1.39  				return;
    1.40  		}
    1.41 -		/* Not handling long or short bus fault */
    1.42 +		/* FIXME: Not handling long or short bus fault */
    1.43  		m68ki_exception_format_error();
    1.44  		return;
    1.45  	}