1*fa8f86a1SJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 2*fa8f86a1SJerin Jacob * Copyright(C) 2021 Marvell. 3*fa8f86a1SJerin Jacob */ 4*fa8f86a1SJerin Jacob 5*fa8f86a1SJerin Jacob #ifndef _ROC_BITS_H_ 6*fa8f86a1SJerin Jacob #define _ROC_BITS_H_ 7*fa8f86a1SJerin Jacob 8*fa8f86a1SJerin Jacob #ifndef BIT_ULL 9*fa8f86a1SJerin Jacob #define BIT_ULL(nr) (1ULL << (nr)) 10*fa8f86a1SJerin Jacob #endif 11*fa8f86a1SJerin Jacob 12*fa8f86a1SJerin Jacob #ifndef BIT 13*fa8f86a1SJerin Jacob #define BIT(nr) (1UL << (nr)) 14*fa8f86a1SJerin Jacob #endif 15*fa8f86a1SJerin Jacob 16*fa8f86a1SJerin Jacob #ifndef BITS_PER_LONG 17*fa8f86a1SJerin Jacob #define BITS_PER_LONG (__SIZEOF_LONG__ * 8) 18*fa8f86a1SJerin Jacob #endif 19*fa8f86a1SJerin Jacob #ifndef BITS_PER_LONG_LONG 20*fa8f86a1SJerin Jacob #define BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * 8) 21*fa8f86a1SJerin Jacob #endif 22*fa8f86a1SJerin Jacob 23*fa8f86a1SJerin Jacob #ifndef GENMASK 24*fa8f86a1SJerin Jacob #define GENMASK(h, l) (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) 25*fa8f86a1SJerin Jacob #endif 26*fa8f86a1SJerin Jacob #ifndef GENMASK_ULL 27*fa8f86a1SJerin Jacob #define GENMASK_ULL(h, l) \ 28*fa8f86a1SJerin Jacob (((~0ULL) - (1ULL << (l)) + 1) & \ 29*fa8f86a1SJerin Jacob (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) 30*fa8f86a1SJerin Jacob #endif 31*fa8f86a1SJerin Jacob 32*fa8f86a1SJerin Jacob #endif /* _ROC_BITS_H_ */ 33