xref: /openbmc/qemu/linux-headers/linux/bits.h (revision ee057a9f2976e1fb2f58e07e86b410f38bf04ac6)
1ab0c7fb2SPaolo Bonzini /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2ab0c7fb2SPaolo Bonzini /* bits.h: Macros for dealing with bitmasks.  */
3ab0c7fb2SPaolo Bonzini 
4ab0c7fb2SPaolo Bonzini #ifndef _LINUX_BITS_H
5ab0c7fb2SPaolo Bonzini #define _LINUX_BITS_H
6ab0c7fb2SPaolo Bonzini 
7ab0c7fb2SPaolo Bonzini #define __GENMASK(h, l) \
8ab0c7fb2SPaolo Bonzini         (((~_UL(0)) - (_UL(1) << (l)) + 1) & \
9ab0c7fb2SPaolo Bonzini          (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))
10ab0c7fb2SPaolo Bonzini 
11ab0c7fb2SPaolo Bonzini #define __GENMASK_ULL(h, l) \
12ab0c7fb2SPaolo Bonzini         (((~_ULL(0)) - (_ULL(1) << (l)) + 1) & \
13ab0c7fb2SPaolo Bonzini          (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))
14ab0c7fb2SPaolo Bonzini 
15*0d2eeef7SBibo Mao #define __GENMASK_U128(h, l) \
16*0d2eeef7SBibo Mao 	((_BIT128((h)) << 1) - (_BIT128(l)))
17*0d2eeef7SBibo Mao 
18ab0c7fb2SPaolo Bonzini #endif /* _LINUX_BITS_H */
19