bitops: Add fls_long and __ffs64
Add fls_long and __ffs64 support to align with the kernel bitops implementation. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
This commit is contained in:
		
							parent
							
								
									61a177767c
								
							
						
					
					
						commit
						de4d2e9e7c
					
				|  | @ -2,6 +2,7 @@ | ||||||
| #define _LINUX_BITOPS_H | #define _LINUX_BITOPS_H | ||||||
| 
 | 
 | ||||||
| #include <asm/types.h> | #include <asm/types.h> | ||||||
|  | #include <linux/compiler.h> | ||||||
| 
 | 
 | ||||||
| #define BIT(nr)			(1UL << (nr)) | #define BIT(nr)			(1UL << (nr)) | ||||||
| #define BIT_MASK(nr)		(1UL << ((nr) % BITS_PER_LONG)) | #define BIT_MASK(nr)		(1UL << ((nr) % BITS_PER_LONG)) | ||||||
|  | @ -139,6 +140,32 @@ static inline unsigned int generic_hweight8(unsigned int w) | ||||||
| # define fls generic_fls | # define fls generic_fls | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | static inline unsigned fls_long(unsigned long l) | ||||||
|  | { | ||||||
|  | 	if (sizeof(l) == 4) | ||||||
|  | 		return fls(l); | ||||||
|  | 	return fls64(l); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * __ffs64 - find first set bit in a 64 bit word | ||||||
|  |  * @word: The 64 bit word | ||||||
|  |  * | ||||||
|  |  * On 64 bit arches this is a synomyn for __ffs | ||||||
|  |  * The result is not defined if no bits are set, so check that @word | ||||||
|  |  * is non-zero before calling this. | ||||||
|  |  */ | ||||||
|  | static inline unsigned long __ffs64(u64 word) | ||||||
|  | { | ||||||
|  | #if BITS_PER_LONG == 32 | ||||||
|  | 	if (((u32)word) == 0UL) | ||||||
|  | 		return __ffs((u32)(word >> 32)) + 32; | ||||||
|  | #elif BITS_PER_LONG != 64 | ||||||
|  | #error BITS_PER_LONG not 32 or 64 | ||||||
|  | #endif | ||||||
|  | 	return __ffs((unsigned long)word); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * __set_bit - Set a bit in memory |  * __set_bit - Set a bit in memory | ||||||
|  * @nr: the bit to set |  * @nr: the bit to set | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue