chiark / gitweb /
10dbbd8a89e9a45eb963d03030494c87225c2a89
[elogind.git] / klibc / klibc / include / endian.h
1 /*
2  * endian.h
3  */
4
5 #ifndef _ENDIAN_H
6 #define _ENDIAN_H
7
8 #include <asm/byteorder.h>
9
10 /* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or
11    __BIG_ENDIAN, but the glibc/BSD-ish macros expect both to be
12    defined with __BYTE_ORDER defining which is actually used... */
13
14 #if defined(__LITTLE_ENDIAN)
15 # undef  __LITTLE_ENDIAN
16 # define __LITTLE_ENDIAN 1234
17 # define __BIG_ENDIAN    4321
18 # define __PDP_ENDIAN    3412
19 # define __BYTE_ORDER    __LITTLE_ENDIAN
20 #elif defined(__BIG_ENDIAN)
21 # undef  __BIG_ENDIAN
22 # define __LITTLE_ENDIAN 1234
23 # define __BIG_ENDIAN    4321
24 # define __PDP_ENDIAN    3412
25 # define __BYTE_ORDER    __BIG_ENDIAN
26 #elif defined(__PDP_ENDIAN)
27 # undef  __PDP_ENDIAN
28 # define __LITTLE_ENDIAN 1234
29 # define __BIG_ENDIAN    4321
30 # define __PDP_ENDIAN    3412
31 # define __BYTE_ORDER    __PDP_ENDIAN
32 #else
33 # error "Unknown byte order!"
34 #endif
35
36 #define LITTLE_ENDIAN   __LITTLE_ENDIAN
37 #define BIG_ENDIAN      __BIG_ENDIAN
38 #define PDP_ENDIAN      __PDP_ENDIAN
39 #define BYTE_ORDER      __BYTE_ORDER
40
41 #endif /* _ENDIAN_H */