upgrade to fedora-2.6.12-1.1398.FC4 + vserver 2.0.rc7
[linux-2.6.git] / include / asm-alpha / bitops.h
index 87c43e5..578ed3f 100644 (file)
@@ -353,9 +353,9 @@ static inline unsigned long hweight64(unsigned long w)
        return __kernel_ctpop(w);
 }
 
-#define hweight32(x) hweight64((x) & 0xfffffffful)
-#define hweight16(x) hweight64((x) & 0xfffful)
-#define hweight8(x)  hweight64((x) & 0xfful)
+#define hweight32(x)   (unsigned int) hweight64((x) & 0xfffffffful)
+#define hweight16(x)   (unsigned int) hweight64((x) & 0xfffful)
+#define hweight8(x)    (unsigned int) hweight64((x) & 0xfful)
 #else
 static inline unsigned long hweight64(unsigned long w)
 {
@@ -376,12 +376,13 @@ static inline unsigned long hweight64(unsigned long w)
  * Find next zero bit in a bitmap reasonably efficiently..
  */
 static inline unsigned long
-find_next_zero_bit(void * addr, unsigned long size, unsigned long offset)
+find_next_zero_bit(const void *addr, unsigned long size, unsigned long offset)
 {
-       unsigned long * p = ((unsigned long *) addr) + (offset >> 6);
+       const unsigned long *p = addr;
        unsigned long result = offset & ~63UL;
        unsigned long tmp;
 
+       p += offset >> 6;
        if (offset >= size)
                return size;
        size -= result;
@@ -419,10 +420,11 @@ find_next_zero_bit(void * addr, unsigned long size, unsigned long offset)
 static inline unsigned long
 find_next_bit(const void * addr, unsigned long size, unsigned long offset)
 {
-       const unsigned long * p = ((const unsigned long *) addr) + (offset >> 6);
+       const unsigned long *p = addr;
        unsigned long result = offset & ~63UL;
        unsigned long tmp;
 
+       p += offset >> 6;
        if (offset >= size)
                return size;
        size -= result;