From f74abc01e86e334edf9bbb0887dd44ffd8a6ea5f Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Mon, 26 Jun 2006 13:57:10 +0200 Subject: [PATCH] --- yaml --- r: 30470 b: refs/heads/master c: 08cd36570e47176c7b6bd3e80125aa46c4638097 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/bitmap.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0d4734f6a420..f7c07a59732e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5282aab87a8be3f5e6c36a4c2ee4b71852def1bb +refs/heads/master: 08cd36570e47176c7b6bd3e80125aa46c4638097 diff --git a/trunk/include/linux/bitmap.h b/trunk/include/linux/bitmap.h index d9ed27969855..dcc5de7cc487 100644 --- a/trunk/include/linux/bitmap.h +++ b/trunk/include/linux/bitmap.h @@ -24,6 +24,9 @@ * The available bitmap operations and their rough meaning in the * case that the bitmap is a single unsigned long are thus: * + * Note that nbits should be always a compile time evaluable constant. + * Otherwise many inlines will generate horrible code. + * * bitmap_zero(dst, nbits) *dst = 0UL * bitmap_fill(dst, nbits) *dst = ~0UL * bitmap_copy(dst, src, nbits) *dst = *src @@ -244,6 +247,8 @@ static inline int bitmap_full(const unsigned long *src, int nbits) static inline int bitmap_weight(const unsigned long *src, int nbits) { + if (nbits <= BITS_PER_LONG) + return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits)); return __bitmap_weight(src, nbits); }