diff options
author | Harvey Harrison <harvey.harrison@gmail.com> | 2008-03-28 17:16:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-28 17:45:22 -0400 |
commit | 3afe3925987adc3fc052abe404e44520c2072fc8 (patch) | |
tree | cf77c295869b10591865898857d5adaae000415c | |
parent | 589499c04b9929ce3de9a9cc591f8a24cf1ebc91 (diff) |
kernel: add bit rotation helpers for 16 and 8 bit
Will replace open-coded variants elsewhere. Done in the same
style as the 32-bit versions.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: John W. Linville <linville@tuxdriver.com>
Cc: Joe Perches <joe@perches.com>
Cc: Jiri Benc <jbenc@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/bitops.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 69c1edb9fe54..40d54731de7e 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -65,6 +65,46 @@ static inline __u32 ror32(__u32 word, unsigned int shift) | |||
65 | return (word >> shift) | (word << (32 - shift)); | 65 | return (word >> shift) | (word << (32 - shift)); |
66 | } | 66 | } |
67 | 67 | ||
68 | /** | ||
69 | * rol16 - rotate a 16-bit value left | ||
70 | * @word: value to rotate | ||
71 | * @shift: bits to roll | ||
72 | */ | ||
73 | static inline __u16 rol16(__u16 word, unsigned int shift) | ||
74 | { | ||
75 | return (word << shift) | (word >> (16 - shift)); | ||
76 | } | ||
77 | |||
78 | /** | ||
79 | * ror16 - rotate a 16-bit value right | ||
80 | * @word: value to rotate | ||
81 | * @shift: bits to roll | ||
82 | */ | ||
83 | static inline __u16 ror16(__u16 word, unsigned int shift) | ||
84 | { | ||
85 | return (word >> shift) | (word << (16 - shift)); | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * rol8 - rotate an 8-bit value left | ||
90 | * @word: value to rotate | ||
91 | * @shift: bits to roll | ||
92 | */ | ||
93 | static inline __u8 rol8(__u8 word, unsigned int shift) | ||
94 | { | ||
95 | return (word << shift) | (word >> (8 - shift)); | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * ror8 - rotate an 8-bit value right | ||
100 | * @word: value to rotate | ||
101 | * @shift: bits to roll | ||
102 | */ | ||
103 | static inline __u8 ror8(__u8 word, unsigned int shift) | ||
104 | { | ||
105 | return (word >> shift) | (word << (8 - shift)); | ||
106 | } | ||
107 | |||
68 | static inline unsigned fls_long(unsigned long l) | 108 | static inline unsigned fls_long(unsigned long l) |
69 | { | 109 | { |
70 | if (sizeof(l) == 4) | 110 | if (sizeof(l) == 4) |