Messages in this thread | | | From | "Alexander van Heukelum" <> | Subject | Re: [PATCH] asm-generic/bitops/fls64.h | Date | Tue, 13 May 2008 13:17:13 +0200 |
| |
> bugfix in fls64 on a big endian systems(against 2.6.25). > > Signed-off-by: Nickolay Vinogradov <nickolay@protei.ru> > > -- > > diff --git a/include/asm-generic/bitops/fls64.h > b/include/asm-generic/bitops/fls64.h > index 1b6b17c..2eedb6f 100644 > --- a/include/asm-generic/bitops/fls64.h > +++ b/include/asm-generic/bitops/fls64.h > @@ -8,7 +8,7 @@ static inline int fls64(__u64 x) > __u32 h = x >> 32; > if (h) > return fls(h) + 32; > - return fls(x); > + return fls((__u32)x); > }
Hi Nickolay,
The change is ok, I guess, but the cast should be a no-op (fls takes an int, which is always 32 bit in linux). What is the problem you are seeing? Does fls64() return a wrong value in some cases? If so, what cpu? Which values?
Why would this be a bug on big endian systems only? There is no pointer magic involved, so the compiler should take care of the casts in a correct way.
Maybe you see a compiler warning? Which compiler version?
(also note that current (development) kernels now have separate versions for 32-bit and 64-bit environments.)
Greetings, Alexander
> #endif /* _ASM_GENERIC_BITOPS_FLS64_H_ */ > > -- > Nickolay Vinogradov > Protei Research and Development Center > St.Petersburg, 194044, Russia > Tel.: +7 812 449 47 27 > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" > in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > -- Alexander van Heukelum heukelum@fastmail.fm
-- http://www.fastmail.fm - Or how I learned to stop worrying and love email again
| |