qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]