]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/staging/echo/bit_operations.h
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[linux-2.6-omap-h63xx.git] / drivers / staging / echo / bit_operations.h
index b32f4bf993970f4d58e1951640a63500b3715162..cecdcf3fd755ab640d602ce6aebde0e1273b2c43 100644 (file)
 #if !defined(_BIT_OPERATIONS_H_)
 #define _BIT_OPERATIONS_H_
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 #if defined(__i386__)  ||  defined(__x86_64__)
 /*! \brief Find the bit position of the highest set bit in a word
     \param bits The word to be searched
     \return The bit number of the highest set bit, or -1 if the word is zero. */
 static __inline__ int top_bit(unsigned int bits)
 {
-    int res;
-
-    __asm__ (" xorl %[res],%[res];\n"
-             " decl %[res];\n"
-             " bsrl %[bits],%[res]\n"
-             : [res] "=&r" (res)
-             : [bits] "rm" (bits));
-    return res;
+       int res;
+
+       __asm__(" xorl %[res],%[res];\n"
+               " decl %[res];\n"
+               " bsrl %[bits],%[res]\n"
+               :[res] "=&r" (res)
+               :[bits] "rm"(bits)
+       );
+       return res;
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Find the bit position of the lowest set bit in a word
     \param bits The word to be searched
     \return The bit number of the lowest set bit, or -1 if the word is zero. */
 static __inline__ int bottom_bit(unsigned int bits)
 {
-    int res;
-
-    __asm__ (" xorl %[res],%[res];\n"
-             " decl %[res];\n"
-             " bsfl %[bits],%[res]\n"
-             : [res] "=&r" (res)
-             : [bits] "rm" (bits));
-    return res;
+       int res;
+
+       __asm__(" xorl %[res],%[res];\n"
+               " decl %[res];\n"
+               " bsfl %[bits],%[res]\n"
+               :[res] "=&r" (res)
+               :[bits] "rm"(bits)
+       );
+       return res;
 }
-/*- End of function --------------------------------------------------------*/
 #else
 static __inline__ int top_bit(unsigned int bits)
 {
-    int i;
-
-    if (bits == 0)
-        return -1;
-    i = 0;
-    if (bits & 0xFFFF0000)
-    {
-        bits &= 0xFFFF0000;
-        i += 16;
-    }
-    if (bits & 0xFF00FF00)
-    {
-        bits &= 0xFF00FF00;
-        i += 8;
-    }
-    if (bits & 0xF0F0F0F0)
-    {
-        bits &= 0xF0F0F0F0;
-        i += 4;
-    }
-    if (bits & 0xCCCCCCCC)
-    {
-        bits &= 0xCCCCCCCC;
-        i += 2;
-    }
-    if (bits & 0xAAAAAAAA)
-    {
-        bits &= 0xAAAAAAAA;
-        i += 1;
-    }
-    return i;
+       int i;
+
+       if (bits == 0)
+               return -1;
+       i = 0;
+       if (bits & 0xFFFF0000) {
+               bits &= 0xFFFF0000;
+               i += 16;
+       }
+       if (bits & 0xFF00FF00) {
+               bits &= 0xFF00FF00;
+               i += 8;
+       }
+       if (bits & 0xF0F0F0F0) {
+               bits &= 0xF0F0F0F0;
+               i += 4;
+       }
+       if (bits & 0xCCCCCCCC) {
+               bits &= 0xCCCCCCCC;
+               i += 2;
+       }
+       if (bits & 0xAAAAAAAA) {
+               bits &= 0xAAAAAAAA;
+               i += 1;
+       }
+       return i;
 }
-/*- End of function --------------------------------------------------------*/
 
 static __inline__ int bottom_bit(unsigned int bits)
 {
-    int i;
-
-    if (bits == 0)
-        return -1;
-    i = 32;
-    if (bits & 0x0000FFFF)
-    {
-        bits &= 0x0000FFFF;
-        i -= 16;
-    }
-    if (bits & 0x00FF00FF)
-    {
-        bits &= 0x00FF00FF;
-        i -= 8;
-    }
-    if (bits & 0x0F0F0F0F)
-    {
-        bits &= 0x0F0F0F0F;
-        i -= 4;
-    }
-    if (bits & 0x33333333)
-    {
-        bits &= 0x33333333;
-        i -= 2;
-    }
-    if (bits & 0x55555555)
-    {
-        bits &= 0x55555555;
-        i -= 1;
-    }
-    return i;
+       int i;
+
+       if (bits == 0)
+               return -1;
+       i = 32;
+       if (bits & 0x0000FFFF) {
+               bits &= 0x0000FFFF;
+               i -= 16;
+       }
+       if (bits & 0x00FF00FF) {
+               bits &= 0x00FF00FF;
+               i -= 8;
+       }
+       if (bits & 0x0F0F0F0F) {
+               bits &= 0x0F0F0F0F;
+               i -= 4;
+       }
+       if (bits & 0x33333333) {
+               bits &= 0x33333333;
+               i -= 2;
+       }
+       if (bits & 0x55555555) {
+               bits &= 0x55555555;
+               i -= 1;
+       }
+       return i;
 }
-/*- End of function --------------------------------------------------------*/
 #endif
 
 /*! \brief Bit reverse a byte.
@@ -146,16 +130,16 @@ static __inline__ int bottom_bit(unsigned int bits)
 static __inline__ uint8_t bit_reverse8(uint8_t x)
 {
 #if defined(__i386__)  ||  defined(__x86_64__)
-    /* If multiply is fast */
-    return ((x*0x0802U & 0x22110U) | (x*0x8020U & 0x88440U))*0x10101U >> 16;
+       /* If multiply is fast */
+       return ((x * 0x0802U & 0x22110U) | (x * 0x8020U & 0x88440U)) *
+           0x10101U >> 16;
 #else
-    /* If multiply is slow, but we have a barrel shifter */
-    x = (x >> 4) | (x << 4);
-    x = ((x & 0xCC) >> 2) | ((x & 0x33) << 2);
-    return ((x & 0xAA) >> 1) | ((x & 0x55) << 1);
+       /* If multiply is slow, but we have a barrel shifter */
+       x = (x >> 4) | (x << 4);
+       x = ((x & 0xCC) >> 2) | ((x & 0x33) << 2);
+       return ((x & 0xAA) >> 1) | ((x & 0x55) << 1);
 #endif
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Bit reverse a 16 bit word.
     \param data The word to be reversed.
@@ -193,9 +177,8 @@ uint16_t make_mask16(uint16_t x);
     \return The word with the single set bit. */
 static __inline__ uint32_t least_significant_one32(uint32_t x)
 {
-    return (x & (-(int32_t) x));
+       return (x & (-(int32_t) x));
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Find the most significant one in a word, and return a word
            with just that bit set.
@@ -204,50 +187,42 @@ static __inline__ uint32_t least_significant_one32(uint32_t x)
 static __inline__ uint32_t most_significant_one32(uint32_t x)
 {
 #if defined(__i386__)  ||  defined(__x86_64__)
-    return 1 << top_bit(x);
+       return 1 << top_bit(x);
 #else
-    x = make_mask32(x);
-    return (x ^ (x >> 1));
+       x = make_mask32(x);
+       return (x ^ (x >> 1));
 #endif
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Find the parity of a byte.
     \param x The byte to be checked.
     \return 1 for odd, or 0 for even. */
 static __inline__ int parity8(uint8_t x)
 {
-    x = (x ^ (x >> 4)) & 0x0F;
-    return (0x6996 >> x) & 1;
+       x = (x ^ (x >> 4)) & 0x0F;
+       return (0x6996 >> x) & 1;
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Find the parity of a 16 bit word.
     \param x The word to be checked.
     \return 1 for odd, or 0 for even. */
 static __inline__ int parity16(uint16_t x)
 {
-    x ^= (x >> 8);
-    x = (x ^ (x >> 4)) & 0x0F;
-    return (0x6996 >> x) & 1;
+       x ^= (x >> 8);
+       x = (x ^ (x >> 4)) & 0x0F;
+       return (0x6996 >> x) & 1;
 }
-/*- End of function --------------------------------------------------------*/
 
 /*! \brief Find the parity of a 32 bit word.
     \param x The word to be checked.
     \return 1 for odd, or 0 for even. */
 static __inline__ int parity32(uint32_t x)
 {
-    x ^= (x >> 16);
-    x ^= (x >> 8);
-    x = (x ^ (x >> 4)) & 0x0F;
-    return (0x6996 >> x) & 1;
+       x ^= (x >> 16);
+       x ^= (x >> 8);
+       x = (x ^ (x >> 4)) & 0x0F;
+       return (0x6996 >> x) & 1;
 }
-/*- End of function --------------------------------------------------------*/
-
-#ifdef __cplusplus
-}
-#endif
 
 #endif
 /*- End of file ------------------------------------------------------------*/