Jelajahi Sumber

yvasilev writes in Bug 235:
uClibc uses wrong word order in vfp floating point arithmetic.
I found this using my modification to N. Pitre's soft-float gcc patch, but this modifications were
made just to allow gcc to compile code for armv4l, while nothing about fp arithmetic was changed.

Mike Frysinger 21 tahun lalu
induk
melakukan
e627587cec
1 mengubah file dengan 8 tambahan dan 1 penghapusan
  1. 8 1
      libc/sysdeps/linux/arm/bits/endian.h

+ 8 - 1
libc/sysdeps/linux/arm/bits/endian.h

@@ -1,4 +1,7 @@
-/* ARM is (usually) little-endian but with a big-endian FPU.  */
+/* ARM is (usually) little-endian.
+ * Older FPU style (FPA) is always big-endian.
+ * Newer FPU style (VFP) is same as host byte-order.
+ */
 
 
 #ifndef _ENDIAN_H
 #ifndef _ENDIAN_H
 # error "Never use <bits/endian.h> directly; include <endian.h> instead."
 # error "Never use <bits/endian.h> directly; include <endian.h> instead."
@@ -9,4 +12,8 @@
 #else
 #else
 #define __BYTE_ORDER __LITTLE_ENDIAN
 #define __BYTE_ORDER __LITTLE_ENDIAN
 #endif
 #endif
+#ifdef __VFP_FP__
+#define __FLOAT_WORD_ORDER __BYTE_ORDER 
+#else
 #define __FLOAT_WORD_ORDER __BIG_ENDIAN
 #define __FLOAT_WORD_ORDER __BIG_ENDIAN
+#endif