mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
![Vincenzo Frascino](/assets/img/avatar_default.png)
The vDSO library should only include the necessary headers required for a userspace library (UAPI and a minimal set of kernel headers). To make this possible it is necessary to isolate from the kernel headers the common parts that are strictly necessary to build the library. Split bits.h into linux and common headers to make the latter suitable for inclusion in the vDSO library. Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20200320145351.32292-3-vincenzo.frascino@arm.com
29 lines
872 B
C
29 lines
872 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __LINUX_BITS_H
|
|
#define __LINUX_BITS_H
|
|
|
|
#include <linux/const.h>
|
|
#include <vdso/bits.h>
|
|
#include <asm/bitsperlong.h>
|
|
|
|
#define BIT_ULL(nr) (ULL(1) << (nr))
|
|
#define BIT_MASK(nr) (UL(1) << ((nr) % BITS_PER_LONG))
|
|
#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
|
|
#define BIT_ULL_MASK(nr) (ULL(1) << ((nr) % BITS_PER_LONG_LONG))
|
|
#define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG)
|
|
#define BITS_PER_BYTE 8
|
|
|
|
/*
|
|
* Create a contiguous bitmask starting at bit position @l and ending at
|
|
* position @h. For example
|
|
* GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
|
|
*/
|
|
#define GENMASK(h, l) \
|
|
(((~UL(0)) - (UL(1) << (l)) + 1) & \
|
|
(~UL(0) >> (BITS_PER_LONG - 1 - (h))))
|
|
|
|
#define GENMASK_ULL(h, l) \
|
|
(((~ULL(0)) - (ULL(1) << (l)) + 1) & \
|
|
(~ULL(0) >> (BITS_PER_LONG_LONG - 1 - (h))))
|
|
|
|
#endif /* __LINUX_BITS_H */
|