Bläddra i källkod

* "improved" behavior of real2str for arm, still needs fixing

florian 21 år sedan
förälder
incheckning
72a8ac8dd7
1 ändrade filer med 13 tillägg och 9 borttagningar
  1. 13 9
      rtl/inc/real2str.inc

+ 13 - 9
rtl/inc/real2str.inc

@@ -262,11 +262,20 @@ begin
                   ((TSplitExtended(d).cards[1] and $7fffffff) = 0);
 {$else SUPPORT_EXTENDED}
 {$ifdef SUPPORT_DOUBLE}
+{$ifdef CPUARM}
+  { double, format (MSB): 1 Sign bit, 11 bit exponent, 52 bit mantissa }
+  { high and low dword are swapped when using the arm fpa }
+  sign := ((TSplitDouble(d).cards[0] shr 20) and $800) <> 0;
+  expMaximal := ((TSplitDouble(d).cards[0] shr 20) and $7ff) = 2047;
+  fraczero:= (TSplitDouble(d).cards[0] and $fffff = 0) and
+              (TSplitDouble(d).cards[1] = 0);
+{$else CPUARM}
   { double, format (MSB): 1 Sign bit, 11 bit exponent, 52 bit mantissa }
   sign := ((TSplitDouble(d).cards[1] shr 20) and $800) <> 0;
   expMaximal := ((TSplitDouble(d).cards[1] shr 20) and $7ff) = 2047;
   fraczero := (TSplitDouble(d).cards[1] and $fffff = 0) and
               (TSplitDouble(d).cards[0] = 0);
+{$endif CPUARM}
 {$else SUPPORT_DOUBLE}
 {$ifdef SUPPORT_SINGLE}
   { single, format (MSB): 1 Sign bit, 8 bit exponent, 23 bit mantissa }
@@ -283,19 +292,11 @@ begin
   {$error sign/NaN/Inf not yet supported for big endian CPU's in str_real}
 {$else SUPPORT_EXTENDED}
 {$ifdef SUPPORT_DOUBLE}
-{$ifdef CPUARM}
-  { double, format (MSB): 1 Sign bit, 11 bit exponent, 52 bit mantissa }
-  sign := ((TSplitDouble(d).cards[1] shr 20) and $800) <> 0;
-  expMaximal := ((TSplitDouble(d).cards[1] shr 20) and $7ff) = 2047;
-  fraczero := (TSplitDouble(d).cards[1] and $fffff = 0) and
-              (TSplitDouble(d).cards[0] = 0);
-{$else CPUARM}
   { double, format (MSB): 1 Sign bit, 11 bit exponent, 52 bit mantissa }
   sign := ((TSplitDouble(d).cards[0] shr 20) and $800) <> 0;
   expMaximal := ((TSplitDouble(d).cards[0] shr 20) and $7ff) = 2047;
   fraczero:= (TSplitDouble(d).cards[0] and $fffff = 0) and
               (TSplitDouble(d).cards[1] = 0);
-{$endif CPUARM}
 {$else SUPPORT_DOUBLE}
 {$ifdef SUPPORT_SINGLE}
   { single, format (MSB): 1 Sign bit, 8 bit exponent, 23 bit mantissa }
@@ -460,7 +461,10 @@ end;
 
 {
   $Log$
-  Revision 1.14  2004-03-13 18:33:52  florian
+  Revision 1.15  2004-03-13 18:47:57  florian
+    * "improved" behavior of real2str for arm, still needs fixing
+
+  Revision 1.14  2004/03/13 18:33:52  florian
     * fixed some arm related real stuff
 
   Revision 1.13  2003/12/29 19:19:21  jonas