Yalin Wang | 0b7857d | 2015-01-16 02:45:55 +0100 | [diff] [blame] | 1 | #ifndef __ASM_BITREV_H |
2 | #define __ASM_BITREV_H | ||||
3 | |||||
4 | static __always_inline __attribute_const__ u32 __arch_bitrev32(u32 x) | ||||
5 | { | ||||
6 | __asm__ ("rbit %0, %1" : "=r" (x) : "r" (x)); | ||||
7 | return x; | ||||
8 | } | ||||
9 | |||||
10 | static __always_inline __attribute_const__ u16 __arch_bitrev16(u16 x) | ||||
11 | { | ||||
12 | return __arch_bitrev32((u32)x) >> 16; | ||||
13 | } | ||||
14 | |||||
15 | static __always_inline __attribute_const__ u8 __arch_bitrev8(u8 x) | ||||
16 | { | ||||
17 | return __arch_bitrev32((u32)x) >> 24; | ||||
18 | } | ||||
19 | |||||
20 | #endif |