1450f941eSArnaldo Carvalho de Melo /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2450f941eSArnaldo Carvalho de Melo /* bits.h: Macros for dealing with bitmasks. */ 3450f941eSArnaldo Carvalho de Melo 4450f941eSArnaldo Carvalho de Melo #ifndef _UAPI_LINUX_BITS_H 5450f941eSArnaldo Carvalho de Melo #define _UAPI_LINUX_BITS_H 6450f941eSArnaldo Carvalho de Melo 7450f941eSArnaldo Carvalho de Melo #define __GENMASK(h, l) \ 8450f941eSArnaldo Carvalho de Melo (((~_UL(0)) - (_UL(1) << (l)) + 1) & \ 9450f941eSArnaldo Carvalho de Melo (~_UL(0) >> (__BITS_PER_LONG - 1 - (h)))) 10450f941eSArnaldo Carvalho de Melo 11450f941eSArnaldo Carvalho de Melo #define __GENMASK_ULL(h, l) \ 12450f941eSArnaldo Carvalho de Melo (((~_ULL(0)) - (_ULL(1) << (l)) + 1) & \ 13450f941eSArnaldo Carvalho de Melo (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h)))) 14450f941eSArnaldo Carvalho de Melo 15*21a3a3d0SArnaldo Carvalho de Melo #define __GENMASK_U128(h, l) \ 16*21a3a3d0SArnaldo Carvalho de Melo ((_BIT128((h)) << 1) - (_BIT128(l))) 17*21a3a3d0SArnaldo Carvalho de Melo 18450f941eSArnaldo Carvalho de Melo #endif /* _UAPI_LINUX_BITS_H */ 19