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)
{
* 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;
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;