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