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