[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] qemu fpu/softfloat-specialize.h fpu/softfloat.c...
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] qemu fpu/softfloat-specialize.h fpu/softfloat.c... |
Date: |
Wed, 21 Nov 2007 16:10:11 +0100 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
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 <address@hidden> 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
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net