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 }