diff options
Diffstat (limited to 'lib/bitmap.c')
| -rw-r--r-- | lib/bitmap.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/lib/bitmap.c b/lib/bitmap.c index 8acab0e176ef..ed2ae3b0cd06 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c | |||
| @@ -253,33 +253,18 @@ int __bitmap_subset(const unsigned long *bitmap1, | |||
| 253 | } | 253 | } |
| 254 | EXPORT_SYMBOL(__bitmap_subset); | 254 | EXPORT_SYMBOL(__bitmap_subset); |
| 255 | 255 | ||
| 256 | #if BITS_PER_LONG == 32 | ||
| 257 | int __bitmap_weight(const unsigned long *bitmap, int bits) | 256 | int __bitmap_weight(const unsigned long *bitmap, int bits) |
| 258 | { | 257 | { |
| 259 | int k, w = 0, lim = bits/BITS_PER_LONG; | 258 | int k, w = 0, lim = bits/BITS_PER_LONG; |
| 260 | 259 | ||
| 261 | for (k = 0; k < lim; k++) | 260 | for (k = 0; k < lim; k++) |
| 262 | w += hweight32(bitmap[k]); | 261 | w += hweight_long(bitmap[k]); |
| 263 | 262 | ||
| 264 | if (bits % BITS_PER_LONG) | 263 | if (bits % BITS_PER_LONG) |
| 265 | w += hweight32(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); | 264 | w += hweight_long(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); |
| 266 | 265 | ||
| 267 | return w; | 266 | return w; |
| 268 | } | 267 | } |
| 269 | #else | ||
| 270 | int __bitmap_weight(const unsigned long *bitmap, int bits) | ||
| 271 | { | ||
| 272 | int k, w = 0, lim = bits/BITS_PER_LONG; | ||
| 273 | |||
| 274 | for (k = 0; k < lim; k++) | ||
| 275 | w += hweight64(bitmap[k]); | ||
| 276 | |||
| 277 | if (bits % BITS_PER_LONG) | ||
| 278 | w += hweight64(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); | ||
| 279 | |||
| 280 | return w; | ||
| 281 | } | ||
| 282 | #endif | ||
| 283 | EXPORT_SYMBOL(__bitmap_weight); | 268 | EXPORT_SYMBOL(__bitmap_weight); |
| 284 | 269 | ||
| 285 | /* | 270 | /* |
