39 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __ASM_GENERIC_BITS_PER_LONG3#define __ASM_GENERIC_BITS_PER_LONG4 5#include <uapi/asm-generic/bitsperlong.h>6 7 8#ifdef CONFIG_64BIT9#define BITS_PER_LONG 6410#else11#define BITS_PER_LONG 3212#endif /* CONFIG_64BIT */13 14/*15 * FIXME: The check currently breaks x86-64 build, so it's16 * temporarily disabled. Please fix x86-64 and reenable17 */18#if 0 && BITS_PER_LONG != __BITS_PER_LONG19#error Inconsistent word size. Check asm/bitsperlong.h20#endif21 22#ifndef BITS_PER_LONG_LONG23#define BITS_PER_LONG_LONG 6424#endif25 26/*27 * small_const_nbits(n) is true precisely when it is known at compile-time28 * that BITMAP_SIZE(n) is 1, i.e. 1 <= n <= BITS_PER_LONG. This allows29 * various bit/bitmap APIs to provide a fast inline implementation. Bitmaps30 * of size 0 are very rare, and a compile-time-known-size 0 is most likely31 * a sign of error. They will be handled correctly by the bit/bitmap APIs,32 * but using the out-of-line functions, so that the inline implementations33 * can unconditionally dereference the pointer(s).34 */35#define small_const_nbits(nbits) \36 (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG && (nbits) > 0)37 38#endif /* __ASM_GENERIC_BITS_PER_LONG */39