From b4a84c66957edf7ef23a88e651f23e21dcb209bc Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 5 Feb 2004 20:08:52 +0000 Subject: [PATCH] 2004-02-05 Paul Brook * libc/include/machine/ieeefp.h[__arm__][__VFP_FP__]: Set IEEE_{BIG,LITTLE} based on __ARMEL__ flag. --- newlib/ChangeLog | 5 +++++ newlib/libc/include/machine/ieeefp.h | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index e57284e0e..86ca74288 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2004-02-05 Paul Brook + + * libc/include/machine/ieeefp.h[__arm__][__VFP_FP__]: Set + IEEE_{BIG,LITTLE} based on __ARMEL__ flag. + 2004-02-02 Jeff Johnston * NEWS: Update with 1.12.0 info. diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index 37afbfefc..36721034a 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -51,11 +51,25 @@ */ #if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__) -/* 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 +/* 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. + + FIXME: long double support is broken for the ARM when __ARMEL__ + is specified. New long double formats need to be added + to the long double conversion routines. */ +#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 #endif #endif