mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	The generic definition of ffz() is not defined in the same header files as the generic definitions of ffs(). Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			644 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			644 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#ifndef _ASM_GENERIC_BITOPS_FFS_H_
 | 
						|
#define _ASM_GENERIC_BITOPS_FFS_H_
 | 
						|
 | 
						|
/**
 | 
						|
 * ffs - find first bit set
 | 
						|
 * @x: the word to search
 | 
						|
 *
 | 
						|
 * This is defined the same way as
 | 
						|
 * the libc and compiler builtin ffs routines, therefore
 | 
						|
 * differs in spirit from ffz (man ffs).
 | 
						|
 */
 | 
						|
static inline int ffs(int x)
 | 
						|
{
 | 
						|
	int r = 1;
 | 
						|
 | 
						|
	if (!x)
 | 
						|
		return 0;
 | 
						|
	if (!(x & 0xffff)) {
 | 
						|
		x >>= 16;
 | 
						|
		r += 16;
 | 
						|
	}
 | 
						|
	if (!(x & 0xff)) {
 | 
						|
		x >>= 8;
 | 
						|
		r += 8;
 | 
						|
	}
 | 
						|
	if (!(x & 0xf)) {
 | 
						|
		x >>= 4;
 | 
						|
		r += 4;
 | 
						|
	}
 | 
						|
	if (!(x & 3)) {
 | 
						|
		x >>= 2;
 | 
						|
		r += 2;
 | 
						|
	}
 | 
						|
	if (!(x & 1)) {
 | 
						|
		x >>= 1;
 | 
						|
		r += 1;
 | 
						|
	}
 | 
						|
	return r;
 | 
						|
}
 | 
						|
 | 
						|
#endif /* _ASM_GENERIC_BITOPS_FFS_H_ */
 |