diff options
| author | Harvey Harrison <[email protected]> | 2008-03-28 14:16:01 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2008-03-28 14:45:22 -0700 |
| commit | 3afe3925987adc3fc052abe404e44520c2072fc8 (patch) | |
| tree | cf77c295869b10591865898857d5adaae000415c /include/linux | |
| 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 <[email protected]>
Acked-by: Randy Dunlap <[email protected]>
Cc: Johannes Berg <[email protected]>
Cc: John W. Linville <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: Jiri Benc <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'include/linux')
| -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) return (word >> shift) | (word << (32 - shift)); } +/** + * rol16 - rotate a 16-bit value left + * @word: value to rotate + * @shift: bits to roll + */ +static inline __u16 rol16(__u16 word, unsigned int shift) +{ + return (word << shift) | (word >> (16 - shift)); +} + +/** + * ror16 - rotate a 16-bit value right + * @word: value to rotate + * @shift: bits to roll + */ +static inline __u16 ror16(__u16 word, unsigned int shift) +{ + return (word >> shift) | (word << (16 - shift)); +} + +/** + * rol8 - rotate an 8-bit value left + * @word: value to rotate + * @shift: bits to roll + */ +static inline __u8 rol8(__u8 word, unsigned int shift) +{ + return (word << shift) | (word >> (8 - shift)); +} + +/** + * ror8 - rotate an 8-bit value right + * @word: value to rotate + * @shift: bits to roll + */ +static inline __u8 ror8(__u8 word, unsigned int shift) +{ + return (word >> shift) | (word << (8 - shift)); +} + static inline unsigned fls_long(unsigned long l) { if (sizeof(l) == 4) |