Commit | Line | Data |
---|---|---|
af8e24e9 HH |
1 | /* |
2 | * arch/arm/include/asm/byteorder.h | |
3 | * | |
4 | * ARM Endian-ness. In little endian mode, the data bus is connected such | |
5 | * that byte accesses appear as: | |
6 | * 0 = d0...d7, 1 = d8...d15, 2 = d16...d23, 3 = d24...d31 | |
7 | * and word accesses (data or instruction) appear as: | |
8 | * d0...d31 | |
9 | * | |
10 | * When in big endian mode, byte accesses appear as: | |
11 | * 0 = d24...d31, 1 = d16...d23, 2 = d8...d15, 3 = d0...d7 | |
12 | * and word accesses (data or instruction) appear as: | |
13 | * d0...d31 | |
14 | */ | |
15 | #ifndef __ASM_ARM_SWAB_H | |
16 | #define __ASM_ARM_SWAB_H | |
17 | ||
cb8db5d4 | 18 | #include <uapi/asm/swab.h> |
af8e24e9 | 19 | |
1632b9e2 | 20 | #if __LINUX_ARM_ARCH__ >= 6 |
40f5b078 | 21 | |
df0e74da | 22 | static inline __attribute_const__ __u32 __arch_swahb32(__u32 x) |
40f5b078 RV |
23 | { |
24 | __asm__ ("rev16 %0, %1" : "=r" (x) : "r" (x)); | |
25 | return x; | |
26 | } | |
df0e74da DM |
27 | #define __arch_swahb32 __arch_swahb32 |
28 | #define __arch_swab16(x) ((__u16)__arch_swahb32(x)) | |
40f5b078 RV |
29 | |
30 | static inline __attribute_const__ __u32 __arch_swab32(__u32 x) | |
31 | { | |
32 | __asm__ ("rev %0, %1" : "=r" (x) : "r" (x)); | |
33 | return x; | |
34 | } | |
35 | #define __arch_swab32 __arch_swab32 | |
36 | ||
1632b9e2 DH |
37 | #endif |
38 | #endif |