Dear Joakim Tjernlund,

In message 
<of918aa866.3ed427eb-onc12576c7.005cbee4-c12576c7.005cf...@transmode.se> you 
wrote:
>
> > I have no idea how it is actually done in the kernel code... but gcc
> > defines it:
> >
> > gcc -dM -E -x c - <<<'' | grep ENDIAN
> > #define __BIG_ENDIAN__ 1
> > #define _BIG_ENDIAN 1
> 
> That doesn't define __BYTE_ORDER. Try the same gcc command
> on a file that #includes <stdlib.h> and you will get both
> __BIG_ENDIAN and __LITTLE_ENDIAN

For me this appears to work:

On x86:

        $ echo '#include <stdlib.h>' | gcc -dM -E -x c - | grep ENDIAN
        #define _ENDIAN_H 1
        #define PDP_ENDIAN __PDP_ENDIAN
        #define __PDP_ENDIAN 3412
        #define BIG_ENDIAN __BIG_ENDIAN
        #define __BYTE_ORDER __LITTLE_ENDIAN
        #define __LITTLE_ENDIAN 1234
        #define __BIG_ENDIAN 4321
        #define LITTLE_ENDIAN __LITTLE_ENDIAN

On PowerPC:

        $ echo '#include <stdlib.h>' | gcc -dM -E -x c - | grep ENDIAN
        #define __BIG_ENDIAN__ 1
        #define __PDP_ENDIAN 3412
        #define __LITTLE_ENDIAN 1234
        #define BIG_ENDIAN __BIG_ENDIAN
        #define _BIG_ENDIAN 1
        #define __BYTE_ORDER __BIG_ENDIAN
        #define _ENDIAN_H 1
        #define __BIG_ENDIAN 4321
        #define PDP_ENDIAN __PDP_ENDIAN
        #define LITTLE_ENDIAN __LITTLE_ENDIAN

In both cases __BYTE_ORDER is set to a sane value.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Copy from one, it's plagiarism; copy from two, it's research.
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to