]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2005-06-13 Philip Blundell <philb@gnu.org>
authorPhil Blundell <pb@reciva.com>
Mon, 13 Jun 2005 10:11:47 +0000 (10:11 +0000)
committerPhil Blundell <pb@reciva.com>
Mon, 13 Jun 2005 10:11:47 +0000 (10:11 +0000)
Patch from addsub@eyou.com:
* sysdeps/arm/ieee754.h: Deleted.
* sysdeps/arm/gmp-mparam.h: Support VFP and big endian.
* sysdeps/arm/bits/endian.h: Likewise.

ChangeLog.arm
sysdeps/arm/bits/endian.h
sysdeps/arm/gmp-mparam.h
sysdeps/arm/ieee754.h [deleted file]

index 7383cb38f14e1762837cee2fdfa780344e43e42c..1148fae44ec2367ea2bf9b8947a65158265d7117 100644 (file)
@@ -1,3 +1,10 @@
+2005-06-13  Philip Blundell  <philb@gnu.org>
+
+       Patch from addsub@eyou.com:
+       * sysdeps/arm/ieee754.h: Deleted.
+       * sysdeps/arm/gmp-mparam.h: Support VFP and big endian.
+       * sysdeps/arm/bits/endian.h: Likewise.
+       
 2005-06-11  Phil Blundell  <pb@reciva.com>
 
        * sysdeps/arm/init-first.c: Deleted.
index 5e54cc753475e4135fdaa60dbc52295d9420b329..dc909c33e0902508c22b572a6265b197d4f0e983 100644 (file)
@@ -1,12 +1,19 @@
-/* ARM is (usually) little-endian but with a big-endian FPU.  */
-
 #ifndef _ENDIAN_H
 # error "Never use <bits/endian.h> directly; include <endian.h> instead."
 #endif
 
+/* ARM can be either big or little endian.  */
 #ifdef __ARMEB__
 #define __BYTE_ORDER __BIG_ENDIAN
 #else
 #define __BYTE_ORDER __LITTLE_ENDIAN
 #endif
+
+/* FPA floating point units are always big-endian, irrespective of the
+   CPU endianness.  VFP floating point units use the same endianness
+   as the rest of the system.  */
+#ifdef __VFP_FP__
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
+#else
 #define __FLOAT_WORD_ORDER __BIG_ENDIAN
+#endif
index c880be33a43f484a1d181a72917e9e0e24b52a47..57ad7e21feced93048037dd35edf0ec60aa885ef 100644 (file)
@@ -1,6 +1,6 @@
 /* gmp-mparam.h -- Compiler/machine parameter header file.
 
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1991, 1993, 1994, 1995, 2005 Free Software Foundation, Inc.
 
 This file is part of the GNU MP Library.
 
@@ -26,5 +26,13 @@ MA 02111-1307, USA. */
 #define BITS_PER_SHORTINT 16
 #define BITS_PER_CHAR 8
 
-#define IEEE_DOUBLE_BIG_ENDIAN 0
-#define IEEE_DOUBLE_MIXED_ENDIAN 1
+#if defined(__ARMEB__)
+# define IEEE_DOUBLE_MIXED_ENDIAN 0
+# define IEEE_DOUBLE_BIG_ENDIAN 1
+#elif defined(__VFP_FP__)
+# define IEEE_DOUBLE_MIXED_ENDIAN 0
+# define IEEE_DOUBLE_BIG_ENDIAN 0
+#else
+# define IEEE_DOUBLE_BIG_ENDIAN 0
+# define IEEE_DOUBLE_MIXED_ENDIAN 1
+#endif
diff --git a/sysdeps/arm/ieee754.h b/sysdeps/arm/ieee754.h
deleted file mode 100644 (file)
index 629b97f..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _IEEE754_H
-
-#define _IEEE754_H 1
-#include <features.h>
-
-#include <endian.h>
-
-__BEGIN_DECLS
-
-union ieee754_float
-  {
-    float f;
-
-    /* This is the IEEE 754 single-precision format.  */
-    struct
-      {
-       unsigned int mantissa:23;
-       unsigned int exponent:8;
-       unsigned int negative:1;
-      } ieee;
-
-    /* This format makes it easier to see if a NaN is a signalling NaN.  */
-    struct
-      {
-       unsigned int mantissa:22;
-       unsigned int quiet_nan:1;
-       unsigned int exponent:8;
-       unsigned int negative:1;
-      } ieee_nan;
-  };
-
-#define IEEE754_FLOAT_BIAS     0x7f /* Added to exponent.  */
-
-
-union ieee754_double
-  {
-    double d;
-
-    /* This is the IEEE 754 double-precision format.  */
-    struct
-      {
-       unsigned int mantissa0:20;
-       unsigned int exponent:11;
-       unsigned int negative:1;
-       unsigned int mantissa1:32;
-      } ieee;
-
-    /* This format makes it easier to see if a NaN is a signalling NaN.  */
-    struct
-      {
-       unsigned int mantissa0:19;
-       unsigned int quiet_nan:1;
-       unsigned int exponent:11;
-       unsigned int negative:1;
-       unsigned int mantissa1:32;
-      } ieee_nan;
-  };
-
-#define IEEE754_DOUBLE_BIAS    0x3ff /* Added to exponent.  */
-
-
-/* The following two structures are correct for `new' floating point systems but
-   wrong for the old FPPC.  The only solution seems to be to avoid their use on
-   old hardware.  */
-
-union ieee854_long_double
-  {
-    long double d;
-
-    /* This is the IEEE 854 double-extended-precision format.  */
-    struct
-      {
-       unsigned int exponent:15;
-       unsigned int empty:16;
-       unsigned int negative:1;
-       unsigned int mantissa1:32;
-       unsigned int mantissa0:32;
-      } ieee;
-
-    /* This is for NaNs in the IEEE 854 double-extended-precision format.  */
-    struct
-      {
-       unsigned int exponent:15;
-       unsigned int empty:16;
-       unsigned int negative:1;
-       unsigned int mantissa1:32;
-       unsigned int mantissa0:30;
-       unsigned int quiet_nan:1;
-       unsigned int one:1;
-      } ieee_nan;
-  };
-
-#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
-
-__END_DECLS
-
-#endif /* ieee754.h */