On Friday 29 October 2010 05:34:31 pm André Hentschel wrote:
include/basetsd.h | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/include/basetsd.h b/include/basetsd.h index 6ce0102..aa6e86d 100644 --- a/include/basetsd.h +++ b/include/basetsd.h @@ -291,7 +291,11 @@ typedef ULONG_PTR KAFFINITY, *PKAFFINITY; # undef WORDS_BIGENDIAN # undef BITFIELDS_BIGENDIAN # undef ALLOW_UNALIGNED_ACCESS -#elif defined(__arm__) +#elif defined(__ARMEB__) +# define WORDS_BIGENDIAN +# define BITFIELDS_BIGENDIAN +# undef ALLOW_UNALIGNED_ACCESS +#elif defined(__ARMEL__) # undef WORDS_BIGENDIAN # undef BITFIELDS_BIGENDIAN # undef ALLOW_UNALIGNED_ACCESS
Not relevant just here but please note that in little endian ARM the hardware coprocessor compatible double type is cross endian (octets are: 5 6 7 8=MSB 1=LSB 2 3 4) while big endian is normal (8=MSB 7 6 5 4 3 2 1=LSB). The processor swaps octets in the 32 bit halves of the type but not the halves themselves.
On Linuxes compiled for FP emulator the above octet order is used. If soft floats are used the usual little endian is used on doubles too. Not sure what the WinCE ABI does.