OSDN Git Service

Nicolas Pitre writes:
authorEric Andersen <andersen@codepoet.org>
Mon, 9 Feb 2004 07:10:38 +0000 (07:10 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 9 Feb 2004 07:10:38 +0000 (07:10 -0000)
Hello Erik,

My patch adding ARM assembly soft-float routines to gcc also changes the
default FPA float word ordering for the saner VFP word ordering which is
also the order anyone would expect on a little endian machine.

Problem is that uClibc curently hardwire floats to big endian (FPA) ordering
in all cases.

Please consider the attached patch to fix this problem.

Nicolas

libm/math_private.h

index bfc3365..cc87660 100644 (file)
@@ -11,7 +11,7 @@
 
 /*
  * from: @(#)fdlibm.h 5.1 93/09/24
- * $Id: math_private.h,v 1.2 2002/06/26 09:10:51 andersen Exp $
+ * $Id: math_private.h,v 1.3 2004/02/09 07:10:38 andersen Exp $
  */
 
 #ifndef _MATH_PRIVATE_H_
    ints.  */
 
 /*
- * Math on arm is little endian except for the FP word order which is
- * big endian.
+ * Math on arm is special:
+ * For FPA, float words are always big-endian.
+ * For VFP, floats words follow the memory system mode.
  */
 
-#if (__BYTE_ORDER == __BIG_ENDIAN) || defined(__arm__)
+#if (__BYTE_ORDER == __BIG_ENDIAN) || defined(__arm__) && !defined(__VFP_FP__)
 
 typedef union 
 {
@@ -53,7 +54,7 @@ typedef union
 
 #endif
 
-#if (__BYTE_ORDER == __LITTLE_ENDIAN) && !defined(__arm__)
+#if (__BYTE_ORDER == __LITTLE_ENDIAN) && (!defined(__arm__) || defined(__VFP_FP__))
 
 typedef union 
 {