[1/3] include: Better distinguish ARM's endianess

Paul Chitescu paulc at voip.null.ro
Fri Oct 29 09:57:53 CDT 2010


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.




More information about the wine-devel mailing list