svn commit: r255361 - in head: contrib/gcc/config/arm lib/libc/arm lib/libc/arm/softfloat lib/msun/src sys/arm/include

Andrew Turner andrew at FreeBSD.org
Sat Sep 7 14:04:12 UTC 2013


Author: andrew
Date: Sat Sep  7 14:04:10 2013
New Revision: 255361
URL: http://svnweb.freebsd.org/changeset/base/255361

Log:
  On ARM EABI double precision floating point values are stored in the
  endian the CPU is in, i.e. little-endian on most ARM cores.
  
  This allows ARMv4 and ARMv5 boards to boot with the ARM EABI.

Modified:
  head/contrib/gcc/config/arm/ieee754-df.S
  head/lib/libc/arm/_fpmath.h
  head/lib/libc/arm/arith.h
  head/lib/libc/arm/softfloat/arm-gcc.h
  head/lib/msun/src/math_private.h
  head/sys/arm/include/ieee.h

Modified: head/contrib/gcc/config/arm/ieee754-df.S
==============================================================================
--- head/contrib/gcc/config/arm/ieee754-df.S	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/contrib/gcc/config/arm/ieee754-df.S	Sat Sep  7 14:04:10 2013	(r255361)
@@ -43,7 +43,7 @@
 
 @ For FPA, float words are always big-endian.
 @ For VFP, floats words follow the memory system mode.
-#if defined(__VFP_FP__) && !defined(__ARMEB__)
+#if (defined(__ARM_EABI__) || defined(__VFP_FP__)) && !defined(__ARMEB__)
 #define xl r0
 #define xh r1
 #define yl r2

Modified: head/lib/libc/arm/_fpmath.h
==============================================================================
--- head/lib/libc/arm/_fpmath.h	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/lib/libc/arm/_fpmath.h	Sat Sep  7 14:04:10 2013	(r255361)
@@ -26,7 +26,7 @@
  * $FreeBSD$
  */
 
-#if defined(__VFP_FP__)
+#if defined(__VFP_FP__) || defined(__ARM_EABI__)
 #define	_IEEE_WORD_ORDER	_BYTE_ORDER
 #else
 #define	_IEEE_WORD_ORDER	_BIG_ENDIAN

Modified: head/lib/libc/arm/arith.h
==============================================================================
--- head/lib/libc/arm/arith.h	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/lib/libc/arm/arith.h	Sat Sep  7 14:04:10 2013	(r255361)
@@ -11,7 +11,7 @@
  * architecture.  See contrib/gdtoa/gdtoaimp.h for details.
  */
 
-#if !defined(__ARMEB__) && defined(__VFP_FP__)
+#if !defined(__ARMEB__) && (defined(__VFP_FP__) || defined(__ARM_EABI__))
 #define IEEE_8087
 #define Arith_Kind_ASL 1
 #define Sudden_Underflow

Modified: head/lib/libc/arm/softfloat/arm-gcc.h
==============================================================================
--- head/lib/libc/arm/softfloat/arm-gcc.h	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/lib/libc/arm/softfloat/arm-gcc.h	Sat Sep  7 14:04:10 2013	(r255361)
@@ -91,7 +91,7 @@ what the endianness of the CPU.  VFP is 
 -------------------------------------------------------------------------------
 */
 #if defined(SOFTFLOAT_FOR_GCC)
-#if defined(__VFP_FP__) || defined(__ARMEB__)
+#if defined (__ARM_EABI__) || defined(__VFP_FP__) || defined(__ARMEB__)
 #define FLOAT64_DEMANGLE(a)	(a)
 #define FLOAT64_MANGLE(a)	(a)
 #else

Modified: head/lib/msun/src/math_private.h
==============================================================================
--- head/lib/msun/src/math_private.h	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/lib/msun/src/math_private.h	Sat Sep  7 14:04:10 2013	(r255361)
@@ -39,7 +39,7 @@
  */
 
 #ifdef __arm__
-#if defined(__VFP_FP__)
+#if defined(__VFP_FP__) || defined(__ARM_EABI__)
 #define	IEEE_WORD_ORDER	BYTE_ORDER
 #else
 #define	IEEE_WORD_ORDER	BIG_ENDIAN

Modified: head/sys/arm/include/ieee.h
==============================================================================
--- head/sys/arm/include/ieee.h	Sat Sep  7 13:50:13 2013	(r255360)
+++ head/sys/arm/include/ieee.h	Sat Sep  7 14:04:10 2013	(r255361)
@@ -91,7 +91,7 @@
 #define	DBL_EXPBITS	11
 #define	DBL_FRACBITS	52
 
-#if defined(__VFP_FP__)
+#if defined(__VFP_FP__) || defined(__ARM_EABI__)
 #define	_IEEE_WORD_ORDER	_BYTE_ORDER
 #else
 #define	_IEEE_WORD_ORDER	_BIG_ENDIAN


More information about the svn-src-all mailing list