[U-Boot-Users] [PATCH] ppc: Added fls, fls64, __ilog2_u64, and ffs64 to bitops

Kumar Gala galak at kernel.crashing.org
Wed Jun 11 16:37:50 CEST 2008


On Jun 11, 2008, at 9:03 AM, Haavard Skinnemoen wrote:

> Kumar Gala <galak at kernel.crashing.org> wrote:
>>
>> On Jun 11, 2008, at 5:54 AM, Haavard Skinnemoen wrote:
>>
>>> Kumar Gala <galak at kernel.crashing.org> wrote:
>>>> +/*
>>>> + * fls: find last (most-significant) bit set.
>>>> + * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
>>>> + */
>>>> +static __inline__ int fls(unsigned int x)
>>>> +{
>>>> +	return __ilog2(x) + 1;
>>>> +}
>>>
>>> __ilog2(0) returns -1?
>>
>> it does.
>
> In general, or just on powerpc? If it's the latter, could you add a
> comment so that people won't blindly copy it into their architecture's
> bitops.h?

I'm guessing on PPC (thus the __ilog2 rather than ilog2()).

 From the kernel headers:

/*
  * non-constant log of base 2 calculators
  * - the arch may override these in asm/bitops.h if they can be  
implemented
  *   more efficiently than using fls() and fls64()
  * - the arch is not required to handle n==0 if implementing the  
fallback
  */
#ifndef CONFIG_ARCH_HAS_ILOG2_U32
static inline __attribute__((const))
int __ilog2_u32(u32 n)
{
         return fls(n) - 1;
}
#endif

I'll add a comment.

- k




More information about the U-Boot mailing list