diff options
Diffstat (limited to 'newlib/libc/include/machine/ieeefp.h')
-rw-r--r-- | newlib/libc/include/machine/ieeefp.h | 127 |
1 files changed, 18 insertions, 109 deletions
diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index dcd6cdf3a..42a6cf05c 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -15,57 +15,16 @@ Defined if the float format does not support IEEE denormals. Every float with a zero exponent is taken to be a zero representation. - - ??? At the moment, there are no equivalent macros above for doubles and - the macros are not fully supported by --enable-newlib-hw-fp. - __IEEE_BIG_ENDIAN + ??? At the moment, there are no equivalent macros for doubles and + the macros are not fully supported by --enable-newlib-hw-fp. */ - Defined if the float format is big endian. This is mutually exclusive - with __IEEE_LITTLE_ENDIAN. - - __IEEE_LITTLE_ENDIAN - - Defined if the float format is little endian. This is mutually exclusive - with __IEEE_BIG_ENDIAN. - - Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a - platform or error will occur. - - __IEEE_BYTES_LITTLE_ENDIAN - - This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation - whereby multiple words of an IEEE floating point are in big endian order, but the - words themselves are little endian with respect to the bytes. - - _DOUBLE_IS_32_BITS - - This is used on platforms that support double by using the 32-bit IEEE - float type. - - _FLOAT_ARG - - This represents what type a float arg is passed as. It is used when the type is - not promoted to double. - -*/ - -#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__) -/* ARM traditionally used big-endian words; and within those words the - byte ordering was big or little endian depending upon the target. - Modern floating-point formats are naturally ordered; in this case - __VFP_FP__ will be defined, even if soft-float. */ -#ifdef __VFP_FP__ -# ifdef __ARMEL__ -# define __IEEE_LITTLE_ENDIAN -# else -# define __IEEE_BIG_ENDIAN -# endif -#else -# define __IEEE_BIG_ENDIAN -# ifdef __ARMEL__ -# define __IEEE_BYTES_LITTLE_ENDIAN -# endif +#if defined(__arm__) || defined(__thumb__) +/* ARM always has big-endian words. Within those words the byte ordering + will be big or little endian depending upon the target. */ +#define __IEEE_BIG_ENDIAN +#ifdef __ARMEL__ +#define __IEEE_BYTES_LITTLE_ENDIAN #endif #endif @@ -85,16 +44,15 @@ #define __IEEE_BIG_ENDIAN #endif -#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) +#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) #define __IEEE_BIG_ENDIAN -#ifdef __HAVE_SHORT_DOUBLE__ -# define _DOUBLE_IS_32BITS -#endif +#define __SMALL_BITFIELDS +#define _DOUBLE_IS_32BITS #endif -#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__) +#ifdef __H8500__ #define __IEEE_BIG_ENDIAN -#define _FLOAT_ARG float +#define __SMALL_BITFIELDS #define _DOUBLE_IS_32BITS #endif @@ -104,7 +62,7 @@ #else #define __IEEE_BIG_ENDIAN #endif -#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__) +#if defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) #define _DOUBLE_IS_32BITS #endif #endif @@ -129,11 +87,6 @@ #define __IEEE_BIG_ENDIAN #endif -#if defined(_C4x) || defined(_C3x) -#define __IEEE_BIG_ENDIAN -#define _DOUBLE_IS_32BITS -#endif - #ifdef __TIC80__ #define __IEEE_LITTLE_ENDIAN #endif @@ -149,14 +102,11 @@ #define __IEEE_BIG_ENDIAN #endif -#ifdef __D30V__ -#define __IEEE_BIG_ENDIAN -#endif - /* necv70 was __IEEE_LITTLE_ENDIAN. */ #ifdef __W65__ #define __IEEE_LITTLE_ENDIAN +#define __SMALL_BITFIELDS #define _DOUBLE_IS_32BITS #endif @@ -174,6 +124,7 @@ #ifdef __mn10200__ #define __IEEE_LITTLE_ENDIAN +#define __SMALL_BITFIELDS #define _DOUBLE_IS_32BITS #endif @@ -187,9 +138,8 @@ #ifdef __D10V__ #define __IEEE_BIG_ENDIAN -#if __DOUBLE__ == 32 #define _DOUBLE_IS_32BITS -#endif +#define __SMALL_BITFIELDS #endif #ifdef __PPC__ @@ -202,10 +152,6 @@ #endif #endif -#ifdef __xstormy16__ -#define __IEEE_LITTLE_ENDIAN -#endif - #ifdef __arc__ #ifdef __big_endian__ #define __IEEE_BIG_ENDIAN @@ -214,10 +160,6 @@ #endif #endif -#ifdef __CRX__ -#define __IEEE_LITTLE_ENDIAN -#endif - #ifdef __fr30__ #define __IEEE_BIG_ENDIAN #endif @@ -226,14 +168,6 @@ #define __IEEE_BIG_ENDIAN #endif -#ifdef __mt__ -#define __IEEE_BIG_ENDIAN -#endif - -#ifdef __frv__ -#define __IEEE_BIG_ENDIAN -#endif - #ifdef __ia64__ #ifdef __BIG_ENDIAN__ #define __IEEE_BIG_ENDIAN @@ -244,39 +178,14 @@ #ifdef __AVR__ #define __IEEE_LITTLE_ENDIAN -#define _DOUBLE_IS_32BITS -#endif - -#if defined(__or32__) || defined(__or1k__) || defined(__or16__) -#define __IEEE_BIG_ENDIAN -#endif - -#ifdef __IP2K__ -#define __IEEE_BIG_ENDIAN #define __SMALL_BITFIELDS #define _DOUBLE_IS_32BITS #endif -#ifdef __iq2000__ +#if defined(__or32__) || defined(__or1k__) || defined(__or16__) #define __IEEE_BIG_ENDIAN #endif -#ifdef __MAVERICK__ -#ifdef __ARMEL__ -# define __IEEE_LITTLE_ENDIAN -#else /* must be __ARMEB__ */ -# define __IEEE_BIG_ENDIAN -#endif /* __ARMEL__ */ -#endif /* __MAVERICK__ */ - -#ifdef __m32c__ -#define __IEEE_LITTLE_ENDIAN -#define __SMALL_BITFIELDS -#endif - -#ifdef __CRIS__ -#define __IEEE_LITTLE_ENDIAN -#endif #ifndef __IEEE_BIG_ENDIAN #ifndef __IEEE_LITTLE_ENDIAN |