1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2023 Corigine, Inc. 3 * All rights reserved. 4 */ 5 6 #ifndef __NFP_PLATFORM_H__ 7 #define __NFP_PLATFORM_H__ 8 9 #include <stdint.h> 10 11 #include <rte_bitops.h> 12 13 #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) 14 15 #define DMA_BIT_MASK(n) ((1ULL << (n)) - 1) 16 17 #define BITS_PER_LONG (__SIZEOF_LONG__ * 8) 18 #define BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * 8) 19 20 #define GENMASK(h, l) \ 21 ((~0UL << (l)) & (~0UL >> (BITS_PER_LONG - (h) - 1))) 22 23 #define GENMASK_ULL(h, l) \ 24 ((~0ULL << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - (h) - 1))) 25 26 #define __bf_shf(x) rte_bsf64(x) 27 28 #define FIELD_GET(_mask, _reg) \ 29 (__extension__ ({ \ 30 typeof(_mask) _x = (_mask); \ 31 (typeof(_x))(((_reg) & (_x)) >> __bf_shf(_x)); \ 32 })) 33 34 #define FIELD_FIT(_mask, _val) \ 35 (__extension__ ({ \ 36 typeof(_mask) _x = (_mask); \ 37 !((((typeof(_x))_val) << __bf_shf(_x)) & ~(_x)); \ 38 })) 39 40 #define FIELD_PREP(_mask, _val) \ 41 (__extension__ ({ \ 42 typeof(_mask) _x = (_mask); \ 43 ((typeof(_x))(_val) << __bf_shf(_x)) & (_x); \ 44 })) 45 46 #endif /* __NFP_PLATFORM_H__ */ 47