brintos

brintos / linux-shallow public Read only

0
0
Text · 722 B · 4c43f24 Raw
47 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _ASM_GENERIC_BITOPS_FFS_H_3#define _ASM_GENERIC_BITOPS_FFS_H_4 5/**6 * generic_ffs - find first bit set7 * @x: the word to search8 *9 * This is defined the same way as10 * the libc and compiler builtin ffs routines, therefore11 * differs in spirit from ffz (man ffs).12 */13static inline int generic_ffs(int x)14{15	int r = 1;16 17	if (!x)18		return 0;19	if (!(x & 0xffff)) {20		x >>= 16;21		r += 16;22	}23	if (!(x & 0xff)) {24		x >>= 8;25		r += 8;26	}27	if (!(x & 0xf)) {28		x >>= 4;29		r += 4;30	}31	if (!(x & 3)) {32		x >>= 2;33		r += 2;34	}35	if (!(x & 1)) {36		x >>= 1;37		r += 1;38	}39	return r;40}41 42#ifndef __HAVE_ARCH_FFS43#define ffs(x) generic_ffs(x)44#endif45 46#endif /* _ASM_GENERIC_BITOPS_FFS_H_ */47