On Wed, Nov 21, 2007 at 11:40:13AM +0100, Aurelien Jarno wrote: > Aurelien Jarno a écrit : > > Blue Swirl a écrit : > >> On 11/18/07, Paul Brook <[EMAIL PROTECTED]> wrote: > >>> CVSROOT: /sources/qemu > >>> Module name: qemu > >>> Changes by: Paul Brook <pbrook> 07/11/18 14:33:24 > >>> > >>> Modified files: > >>> fpu : softfloat-specialize.h softfloat.c softfloat.h > >>> target-arm/nwfpe: double_cpdo.c single_cpdo.c > >>> target-m68k : helper.c op.c > >>> target-mips : op_helper.c > >>> > >>> Log message: > >>> Add strict checking mode for softfp code. > >> This commit has broken sparc-softmmu, for example Aurora 1.0 normally > >> prints: > >> Running anaconda - please wait... > > > > There are also FPU regressions for mips-softmmu, but I haven't found > > time to find the commit that has broken it, I just know it has been > > broken over the week-end. > > > > More later... > > I am now able to confirm this very same commit has also broken the FPU > on mips-softmmu, but I still don't know what is wrong in this commit. >
Ok the problem comes from bad copy&paste. Please find a patch below that fixes the problem on MIPS. Index: fpu/softfloat.c =================================================================== RCS file: /sources/qemu/qemu/fpu/softfloat.c,v retrieving revision 1.8 diff -u -d -p -r1.8 softfloat.c --- fpu/softfloat.c 18 Nov 2007 14:33:23 -0000 1.8 +++ fpu/softfloat.c 21 Nov 2007 15:06:19 -0000 @@ -3012,7 +3012,7 @@ int float64_eq( float64 a, float64 b STA return 0; } av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); return ( av == bv ) || ( (bits64) ( ( av | bv )<<1 ) == 0 ); } @@ -3038,7 +3038,7 @@ int float64_le( float64 a, float64 b STA aSign = extractFloat64Sign( a ); bSign = extractFloat64Sign( b ); av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); if ( aSign != bSign ) return aSign || ( (bits64) ( ( av | bv )<<1 ) == 0 ); return ( av == bv ) || ( aSign ^ ( av < bv ) ); @@ -3064,7 +3064,7 @@ int float64_lt( float64 a, float64 b STA aSign = extractFloat64Sign( a ); bSign = extractFloat64Sign( b ); av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); if ( aSign != bSign ) return aSign && ( (bits64) ( ( av | bv )<<1 ) != 0 ); return ( av != bv ) && ( aSign ^ ( av < bv ) ); @@ -3088,7 +3088,7 @@ int float64_eq_signaling( float64 a, flo return 0; } av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); return ( av == bv ) || ( (bits64) ( ( av | bv )<<1 ) == 0 ); } @@ -3116,7 +3116,7 @@ int float64_le_quiet( float64 a, float64 aSign = extractFloat64Sign( a ); bSign = extractFloat64Sign( b ); av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); if ( aSign != bSign ) return aSign || ( (bits64) ( ( av | bv )<<1 ) == 0 ); return ( av == bv ) || ( aSign ^ ( av < bv ) ); @@ -3145,7 +3145,7 @@ int float64_lt_quiet( float64 a, float64 aSign = extractFloat64Sign( a ); bSign = extractFloat64Sign( b ); av = float64_val(a); - bv = float64_val(a); + bv = float64_val(b); if ( aSign != bSign ) return aSign && ( (bits64) ( ( av | bv )<<1 ) != 0 ); return ( av != bv ) && ( aSign ^ ( av < bv ) ); -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [EMAIL PROTECTED] | [EMAIL PROTECTED] `- people.debian.org/~aurel32 | www.aurel32.net