From 2b6b730c986a53e9e10ef22508541bdb3151a5fe Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 28 Jun 2001 10:40:09 +0000 Subject: Handle ARMs with big endian IEEE words but little endian IEEE bytes --- newlib/libc/include/machine/ieeefp.h | 6 ++++-- newlib/libc/stdlib/mprec.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'newlib/libc') diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index b96f91274..cc5ced4f0 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -21,9 +21,11 @@ #if defined(__arm__) || defined(__thumb__) /* ARM always has big-endian words. Within those words the byte ordering - appears to be big or little endian. Newlib doesn't seem to care about - the byte ordering within words. */ + will be big or little endian depending upon the target. */ #define __IEEE_BIG_ENDIAN +#ifdef __ARMEL__ +#define __IEEE_BYTES_LITTLE_ENDIAN +#endif #endif #ifdef __hppa__ diff --git a/newlib/libc/stdlib/mprec.h b/newlib/libc/stdlib/mprec.h index 001f0c284..31d52e131 100644 --- a/newlib/libc/stdlib/mprec.h +++ b/newlib/libc/stdlib/mprec.h @@ -81,7 +81,7 @@ union double_union * An alternative that might be better on some machines is * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff) */ -#if defined(IEEE_8087) + defined(VAX) +#if defined (__IEEE_BYTES_LITTLE_ENDIAN) + defined (IEEE_8087) + defined (VAX) #define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \ ((unsigned short *)a)[0] = (unsigned short)c, a++) #else -- cgit v1.2.3