williamr@2: /* williamr@2: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: #ifndef __IEEE_BIG_ENDIAN williamr@2: #ifndef __IEEE_LITTLE_ENDIAN williamr@2: williamr@2: /** williamr@2: EPOC safety net - Check various EPOC defines to ensure that williamr@2: we get an appropriate endianness choice williamr@2: */ williamr@4: #if (defined(__WINS__) || defined(__MX86__) || defined(__X86GCC__)) && !defined(__i386__) williamr@2: #define __i386__ williamr@2: #elif defined(__MARM__) && !defined(__arm__) williamr@2: #define __arm__ williamr@2: #endif williamr@2: williamr@2: #ifdef __arm__ williamr@2: #ifdef __EABI__ williamr@2: /** williamr@2: EABI supports the VFP specification, where the ordering of the words williamr@2: matches the endianness. williamr@2: */ williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #else williamr@2: /** williamr@2: Pre-VFP, ARM used the big endian ordering of the words, regardless of williamr@2: the endianess. williamr@2: */ williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: #endif williamr@2: williamr@2: #ifdef __hppa__ williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __sparc__ williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: #if defined(__m68k__) || defined(__mc68000__) williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: #if defined (__H8300__) || defined (__H8300H__) williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #define __SMALL_BITFIELDS williamr@2: #define _DOUBLE_IS_32BITS williamr@2: #endif williamr@2: williamr@2: #ifdef __H8500__ williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #define __SMALL_BITFIELDS williamr@2: #define _DOUBLE_IS_32BITS williamr@2: #endif williamr@2: williamr@2: #ifdef __sh__ williamr@2: #ifdef __LITTLE_ENDIAN__ williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #else williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: #ifdef __SH3E__ williamr@2: williamr@2: #define _DOUBLE_IS_32BITS williamr@2: #endif williamr@2: #endif williamr@2: williamr@2: #ifdef _AM29K williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: /* Added "&& !defined(__arm__)" to avoid the duplicate definition of the williamr@2: __ieee_[float|double]_shape_type structures in stdlib\LINC\IEEEFP.h williamr@2: conditionally compiled using the __IEEE_LITTLE_ENDIAN && __IEEE_BIG_ENDIAN williamr@2: in GCCXML builds. This is a work around as we can't get gccxml to stop williamr@2: defining __i386__ as it's defined in the "" header file of the williamr@2: compiler. williamr@2: */ williamr@2: #if defined(__i386__) && !defined(__arm__) williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __i960__ williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __MIPSEL__ williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #endif williamr@2: #ifdef __MIPSEB__ williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: /** williamr@2: necv70 was __IEEE_LITTLE_ENDIAN. williamr@2: */ williamr@2: williamr@2: #ifdef __W65__ williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #define __SMALL_BITFIELDS williamr@2: #define _DOUBLE_IS_32BITS williamr@2: #endif williamr@2: williamr@2: #if defined(__Z8001__) || defined(__Z8002__) williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __m88k__ williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __v800 williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #endif williamr@2: williamr@2: #ifdef __PPC__ williamr@2: #ifdef _BIG_ENDIAN williamr@2: williamr@2: #define __IEEE_BIG_ENDIAN williamr@2: #else williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN williamr@2: #endif williamr@2: #endif williamr@2: williamr@2: #ifdef __mcore__ williamr@2: williamr@2: #define __IEEE_LITTLE_ENDIAN /* always little-endian M*Core for EPOC */ williamr@2: #endif williamr@2: williamr@2: #ifndef __IEEE_BIG_ENDIAN williamr@2: #ifndef __IEEE_LITTLE_ENDIAN williamr@2: #error Endianess not declared!! williamr@2: #endif /* not __IEEE_LITTLE_ENDIAN */ williamr@2: #endif /* not __IEEE_BIG_ENDIAN */ williamr@2: williamr@2: #endif /* not __IEEE_LITTLE_ENDIAN */ williamr@2: #endif /* not __IEEE_BIG_ENDIAN */ williamr@4: