Search
lxdream.org :: lxdream/src/sh4/sh4x86.in :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/sh4/sh4x86.in
changeset 626:a010e30a30e9
prev604:1024c3a9cb88
next669:ab344e42bca9
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/sh4x86.in Tue Jan 22 11:30:37 2008 +0000
1.2 +++ b/src/sh4/sh4x86.in Fri Feb 08 00:06:56 2008 +0000
1.3 @@ -2487,13 +2487,15 @@
1.4 store_spreg( R_EAX, REG_OFFSET(r_bank[Rn_BANK]) );
1.5 sh4_x86.tstate = TSTATE_NONE;
1.6 :}
1.7 -LDS Rm, FPSCR {:
1.8 +LDS Rm, FPSCR {:
1.9 + check_fpuen();
1.10 load_reg( R_EAX, Rm );
1.11 store_spreg( R_EAX, R_FPSCR );
1.12 update_fr_bank( R_EAX );
1.13 sh4_x86.tstate = TSTATE_NONE;
1.14 :}
1.15 LDS.L @Rm+, FPSCR {:
1.16 + check_fpuen();
1.17 load_reg( R_EAX, Rm );
1.18 check_ralign32( R_EAX );
1.19 MMU_TRANSLATE_READ( R_EAX );
1.20 @@ -2504,10 +2506,12 @@
1.21 sh4_x86.tstate = TSTATE_NONE;
1.22 :}
1.23 LDS Rm, FPUL {:
1.24 + check_fpuen();
1.25 load_reg( R_EAX, Rm );
1.26 store_spreg( R_EAX, R_FPUL );
1.27 :}
1.28 LDS.L @Rm+, FPUL {:
1.29 + check_fpuen();
1.30 load_reg( R_EAX, Rm );
1.31 check_ralign32( R_EAX );
1.32 MMU_TRANSLATE_READ( R_EAX );
1.33 @@ -2716,10 +2720,12 @@
1.34 sh4_x86.tstate = TSTATE_NONE;
1.35 :}
1.36 STS FPSCR, Rn {:
1.37 + check_fpuen();
1.38 load_spreg( R_EAX, R_FPSCR );
1.39 store_reg( R_EAX, Rn );
1.40 :}
1.41 STS.L FPSCR, @-Rn {:
1.42 + check_fpuen();
1.43 load_reg( R_EAX, Rn );
1.44 check_walign32( R_EAX );
1.45 ADD_imm8s_r32( -4, R_EAX );
1.46 @@ -2730,10 +2736,12 @@
1.47 sh4_x86.tstate = TSTATE_NONE;
1.48 :}
1.49 STS FPUL, Rn {:
1.50 + check_fpuen();
1.51 load_spreg( R_EAX, R_FPUL );
1.52 store_reg( R_EAX, Rn );
1.53 :}
1.54 STS.L FPUL, @-Rn {:
1.55 + check_fpuen();
1.56 load_reg( R_EAX, Rn );
1.57 check_walign32( R_EAX );
1.58 ADD_imm8s_r32( -4, R_EAX );
.