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.
This commit is contained in:
Phil Blundell 2005-06-13 10:11:47 +00:00
parent 19f2e4ebef
commit 3bdeb53ad6
4 changed files with 27 additions and 120 deletions

View 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.

View 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

View 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

View file

@ -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 */