xref: /dpdk/drivers/common/nfp/nfp_platform.h (revision 191128d7f6a02b816deaa86d761fbde4483724e9)
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