summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ce4660a)
The bitmap_word type is an unsigned long. However in some places we assign
it using -1ULL, a 64-bit value on many platforms. We sometimes get away
with this because it masks correctly, but in other cases it breaks things.
To clean this up define a new BITMAP_WORD_1 constant, indicating a
bitmap_word with all bits set, and use that instead of explicit UL or ULL
qualifiers.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
- bitmap_word headmask = -1ULL >> (n % BITMAP_WORD_BITS);
- bitmap_word tailmask = ~(-1ULL >> (m % BITMAP_WORD_BITS));
+ bitmap_word headmask = BITMAP_WORD_1 >> (n % BITMAP_WORD_BITS);
+ bitmap_word tailmask = ~(BITMAP_WORD_1 >> (m % BITMAP_WORD_BITS));
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
- bitmap_word headmask = -1ULL >> (n % BITMAP_WORD_BITS);
- bitmap_word tailmask = ~(-1ULL >> (m % BITMAP_WORD_BITS));
+ bitmap_word headmask = BITMAP_WORD_1 >> (n % BITMAP_WORD_BITS);
+ bitmap_word tailmask = ~(BITMAP_WORD_1 >> (m % BITMAP_WORD_BITS));
return __builtin_clzl(w);
#else
int lz = 0;
return __builtin_clzl(w);
#else
int lz = 0;
- bitmap_word mask = 1UL << (BITMAP_WORD_BITS - 1);
+ bitmap_word mask = (bitmap_word)1 << (BITMAP_WORD_BITS - 1);
while (!(w & mask)) {
lz++;
while (!(w & mask)) {
lz++;
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
{
unsigned long an = BIT_ALIGN_UP(n);
unsigned long am = BIT_ALIGN_DOWN(m);
- bitmap_word headmask = -1ULL >> (n % BITMAP_WORD_BITS);
- bitmap_word tailmask = ~(-1ULL >> (m % BITMAP_WORD_BITS));
+ bitmap_word headmask = BITMAP_WORD_1 >> (n % BITMAP_WORD_BITS);
+ bitmap_word tailmask = ~(BITMAP_WORD_1 >> (m % BITMAP_WORD_BITS));
#define BITMAP_NWORDS(_n) \
(((_n) + BITMAP_WORD_BITS - 1) / BITMAP_WORD_BITS)
#define BITMAP_NWORDS(_n) \
(((_n) + BITMAP_WORD_BITS - 1) / BITMAP_WORD_BITS)
+#define BITMAP_WORD_0 (0)
+#define BITMAP_WORD_1 ((bitmap_word)-1UL)
+
/*
* We wrap each word in a structure for type checking.
*/
/*
* We wrap each word in a structure for type checking.
*/