Search
lxdream.org :: lxdream/src/sh4/sh4core.in :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/sh4/sh4core.in
changeset 626:a010e30a30e9
prev617:476a717a54f3
next641:afb9a42c61c6
author nkeynes
date Fri Feb 08 00:06:56 2008 +0000 (12 years ago)
permissions -rw-r--r--
last change Fix LDS/STS to FPUL/FPSCR to check the FPU disabled bit. Fixes
the linux 2.4.0-test8 kernel boot
(this wasn't exactly very well documented in the original manual)
file annotate diff log raw
1.1 --- a/src/sh4/sh4core.in Tue Jan 29 10:39:56 2008 +0000
1.2 +++ b/src/sh4/sh4core.in Fri Feb 08 00:06:56 2008 +0000
1.3 @@ -851,31 +851,45 @@
1.4 CHECKPRIV();
1.5 sh4r.spc = sh4r.r[Rm];
1.6 :}
1.7 -STS FPUL, Rn {: sh4r.r[Rn] = sh4r.fpul; :}
1.8 +STS FPUL, Rn {:
1.9 + CHECKFPUEN();
1.10 + sh4r.r[Rn] = sh4r.fpul;
1.11 +:}
1.12 STS.L FPUL, @-Rn {:
1.13 + CHECKFPUEN();
1.14 CHECKWALIGN32( sh4r.r[Rn] );
1.15 MEM_WRITE_LONG( sh4r.r[Rn]-4, sh4r.fpul );
1.16 sh4r.r[Rn] -= 4;
1.17 :}
1.18 LDS.L @Rm+, FPUL {:
1.19 + CHECKFPUEN();
1.20 CHECKRALIGN32( sh4r.r[Rm] );
1.21 MEM_READ_LONG(sh4r.r[Rm], sh4r.fpul);
1.22 sh4r.r[Rm] +=4;
1.23 :}
1.24 -LDS Rm, FPUL {: sh4r.fpul = sh4r.r[Rm]; :}
1.25 -STS FPSCR, Rn {: sh4r.r[Rn] = sh4r.fpscr; :}
1.26 +LDS Rm, FPUL {:
1.27 + CHECKFPUEN();
1.28 + sh4r.fpul = sh4r.r[Rm];
1.29 +:}
1.30 +STS FPSCR, Rn {:
1.31 + CHECKFPUEN();
1.32 + sh4r.r[Rn] = sh4r.fpscr;
1.33 +:}
1.34 STS.L FPSCR, @-Rn {:
1.35 + CHECKFPUEN();
1.36 CHECKWALIGN32( sh4r.r[Rn] );
1.37 MEM_WRITE_LONG( sh4r.r[Rn]-4, sh4r.fpscr );
1.38 sh4r.r[Rn] -= 4;
1.39 :}
1.40 LDS.L @Rm+, FPSCR {:
1.41 + CHECKFPUEN();
1.42 CHECKRALIGN32( sh4r.r[Rm] );
1.43 MEM_READ_LONG(sh4r.r[Rm], sh4r.fpscr);
1.44 sh4r.r[Rm] +=4;
1.45 sh4r.fr_bank = &sh4r.fr[(sh4r.fpscr&FPSCR_FR)>>21][0];
1.46 :}
1.47 LDS Rm, FPSCR {:
1.48 + CHECKFPUEN();
1.49 sh4r.fpscr = sh4r.r[Rm];
1.50 sh4r.fr_bank = &sh4r.fr[(sh4r.fpscr&FPSCR_FR)>>21][0];
1.51 :}
.