net/cnxk: support to create meter profile
[dpdk.git] / drivers / common / cnxk / roc_io_generic.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #ifndef _ROC_IO_GENERIC_H_
6 #define _ROC_IO_GENERIC_H_
7
8 #define ROC_LMT_BASE_ID_GET(lmt_addr, lmt_id)     (lmt_id = 0)
9 #define ROC_LMT_CPT_BASE_ID_GET(lmt_addr, lmt_id) (lmt_id = 0)
10
11 #define roc_load_pair(val0, val1, addr)                                        \
12         do {                                                                   \
13                 val0 = plt_read64((void *)(addr));                             \
14                 val1 = plt_read64((uint8_t *)(addr) + 8);                      \
15         } while (0)
16
17 #define roc_store_pair(val0, val1, addr)                                       \
18         do {                                                                   \
19                 plt_write64(val0, (void *)(addr));                             \
20                 plt_write64(val1, (((uint8_t *)(addr)) + 8));                  \
21         } while (0)
22
23 #define roc_prefetch_store_keep(ptr)                                           \
24         do {                                                                   \
25         } while (0)
26
27 static __plt_always_inline void
28 roc_atomic128_cas_noreturn(uint64_t swap0, uint64_t swap1, uint64_t ptr)
29 {
30         PLT_SET_USED(swap0);
31         PLT_SET_USED(swap1);
32         PLT_SET_USED(ptr);
33 }
34
35 static __plt_always_inline uint64_t
36 roc_atomic64_cas(uint64_t compare, uint64_t swap, int64_t *ptr)
37 {
38         PLT_SET_USED(swap);
39         PLT_SET_USED(ptr);
40
41         return compare;
42 }
43
44 static inline uint64_t
45 roc_atomic64_add_nosync(int64_t incr, int64_t *ptr)
46 {
47         PLT_SET_USED(ptr);
48         PLT_SET_USED(incr);
49
50         return 0;
51 }
52
53 static inline uint64_t
54 roc_atomic64_add_sync(int64_t incr, int64_t *ptr)
55 {
56         PLT_SET_USED(ptr);
57         PLT_SET_USED(incr);
58
59         return 0;
60 }
61
62 static inline uint64_t
63 roc_lmt_submit_ldeor(plt_iova_t io_address)
64 {
65         PLT_SET_USED(io_address);
66
67         return 0;
68 }
69
70 static __plt_always_inline uint64_t
71 roc_lmt_submit_ldeorl(plt_iova_t io_address)
72 {
73         PLT_SET_USED(io_address);
74
75         return 0;
76 }
77
78 static inline void
79 roc_lmt_submit_steor(uint64_t data, plt_iova_t io_address)
80 {
81         PLT_SET_USED(data);
82         PLT_SET_USED(io_address);
83 }
84
85 static inline void
86 roc_lmt_submit_steorl(uint64_t data, plt_iova_t io_address)
87 {
88         PLT_SET_USED(data);
89         PLT_SET_USED(io_address);
90 }
91
92 static __plt_always_inline void
93 roc_lmt_mov(void *out, const void *in, const uint32_t lmtext)
94 {
95         PLT_SET_USED(in);
96         PLT_SET_USED(lmtext);
97         memset(out, 0, sizeof(__uint128_t) * (lmtext ? lmtext > 1 ? 4 : 3 : 2));
98 }
99
100 static __plt_always_inline void
101 roc_lmt_mov_seg(void *out, const void *in, const uint16_t segdw)
102 {
103         PLT_SET_USED(out);
104         PLT_SET_USED(in);
105         PLT_SET_USED(segdw);
106 }
107
108 static __plt_always_inline void
109 roc_lmt_mov_one(void *out, const void *in)
110 {
111         PLT_SET_USED(out);
112         PLT_SET_USED(in);
113 }
114
115 static __plt_always_inline void
116 roc_lmt_mov_seg_nv(void *out, const void *in, const uint16_t segdw)
117 {
118         PLT_SET_USED(out);
119         PLT_SET_USED(in);
120         PLT_SET_USED(segdw);
121 }
122
123 static __plt_always_inline void
124 roc_atf_ret(void)
125 {
126 }
127
128 #endif /* _ROC_IO_GENERIC_H_ */