]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/bitops.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / include / linux / bitops.h
index 827cc95711ef82563e0f7a1718f364ce8adfd451..2184c6b97aebb699206e2eb7426bd716b8f0e54f 100644 (file)
@@ -109,6 +109,17 @@ static inline __u8 ror8(__u8 word, unsigned int shift)
        return (word >> shift) | (word << (8 - shift));
 }
 
+/**
+ * sign_extend32 - sign extend a 32-bit value using specified bit as sign-bit
+ * @value: value to sign extend
+ * @index: 0 based bit index (0<=index<32) to sign bit
+ */
+static inline __s32 sign_extend32(__u32 value, int index)
+{
+       __u8 shift = 31 - index;
+       return (__s32)(value << shift) >> shift;
+}
+
 static inline unsigned fls_long(unsigned long l)
 {
        if (sizeof(l) == 4)