]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/sys/_cscan_bus.h
ident(1): Normalizing date format
[FreeBSD/FreeBSD.git] / sys / sys / _cscan_bus.h
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2019 Andrew Turner
5  *
6  * This software was developed by SRI International and the University of
7  * Cambridge Computer Laboratory (Department of Computer Science and
8  * Technology) under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the
9  * DARPA SSITH research programme.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30  * SUCH DAMAGE.
31  *
32  * $FreeBSD$
33  */
34
35 #ifndef _SYS__CSAN_BUS_H_
36 #define _SYS__CSAN_BUS_H_
37
38 #define KCSAN_BS_MULTI(rw, width, type)                                 \
39         void kcsan_bus_space_##rw##_multi_##width(bus_space_tag_t,      \
40             bus_space_handle_t, bus_size_t, type *, bus_size_t);        \
41         void kcsan_bus_space_##rw##_multi_stream_##width(bus_space_tag_t, \
42             bus_space_handle_t, bus_size_t, type *, bus_size_t);        \
43         void kcsan_bus_space_##rw##_region_##width(bus_space_tag_t,     \
44             bus_space_handle_t, bus_size_t, type *, bus_size_t);        \
45         void kcsan_bus_space_##rw##_region_stream_##width(bus_space_tag_t, \
46             bus_space_handle_t, bus_size_t, type *, bus_size_t)
47
48 #define KCSAN_BS_READ(width, type)                                      \
49         type kcsan_bus_space_read_##width(bus_space_tag_t,              \
50             bus_space_handle_t, bus_size_t);                            \
51         type kcsan_bus_space_read_stream_##width(bus_space_tag_t,       \
52             bus_space_handle_t, bus_size_t);                            \
53         KCSAN_BS_MULTI(read, width, type)
54
55 #define KCSAN_BS_WRITE(width, type)                                     \
56         void kcsan_bus_space_write_##width(bus_space_tag_t,             \
57             bus_space_handle_t, bus_size_t, type);                      \
58         void kcsan_bus_space_write_stream_##width(bus_space_tag_t,      \
59             bus_space_handle_t, bus_size_t, type);                      \
60         KCSAN_BS_MULTI(write, width, const type)
61
62 #define KCSAN_BS_SET(width, type)                                       \
63         void kcsan_bus_space_set_multi_##width(bus_space_tag_t,         \
64             bus_space_handle_t, bus_size_t, type, bus_size_t);          \
65         void kcsan_bus_space_set_multi_stream_##width(bus_space_tag_t, \
66             bus_space_handle_t, bus_size_t, type, bus_size_t);          \
67         void kcsan_bus_space_set_region_##width(bus_space_tag_t,        \
68             bus_space_handle_t, bus_size_t, type, bus_size_t);          \
69         void kcsan_bus_space_set_region_stream_##width(bus_space_tag_t, \
70             bus_space_handle_t, bus_size_t, type, bus_size_t)
71
72 #define KCSAN_BS_COPY(width, type)                                      \
73         void kcsan_bus_space_copy_region_##width(bus_space_tag_t,       \
74             bus_space_handle_t, bus_size_t, bus_space_handle_t,         \
75             bus_size_t, bus_size_t);                                    \
76         void kcsan_bus_space_copy_region_stream_##width(bus_space_tag_t, \
77             bus_space_handle_t, bus_size_t, bus_space_handle_t,         \
78             bus_size_t, bus_size_t);
79
80 #define KCSAN_BS_PEEK(width, type)                                      \
81         int kcsan_bus_space_peek_##width(bus_space_tag_t,               \
82             bus_space_handle_t, bus_size_t, type *);
83
84 #define KCSAN_BS_POKE(width, type)                                      \
85         int kcsan_bus_space_poke_##width(bus_space_tag_t,               \
86             bus_space_handle_t, bus_size_t, type);
87
88 #define KCSAN_BS(width, type)                                           \
89         KCSAN_BS_READ(width, type);                                     \
90         KCSAN_BS_WRITE(width, type);                                    \
91         KCSAN_BS_SET(width, type);                                      \
92         KCSAN_BS_COPY(width, type)                                      \
93         KCSAN_BS_PEEK(width, type);                                     \
94         KCSAN_BS_POKE(width, type);
95
96 KCSAN_BS(1, uint8_t);
97 KCSAN_BS(2, uint16_t);
98 KCSAN_BS(4, uint32_t);
99 KCSAN_BS(8, uint64_t);
100
101 int kcsan_bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int,
102     bus_space_handle_t *);
103 void kcsan_bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
104 int kcsan_bus_space_subregion(bus_space_tag_t, bus_space_handle_t, bus_size_t,
105     bus_size_t, bus_space_handle_t *);
106 int kcsan_bus_space_alloc(bus_space_tag_t, bus_addr_t, bus_addr_t,
107     bus_size_t, bus_size_t, bus_size_t, int, bus_addr_t *,
108     bus_space_handle_t *);
109 void kcsan_bus_space_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
110 void kcsan_bus_space_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t,
111     bus_size_t, int);
112
113 #ifndef KCSAN_RUNTIME
114
115 #define bus_space_map                   kcsan_bus_space_map
116 #define bus_space_unmap                 kcsan_bus_space_unmap
117 #define bus_space_subregion             kcsan_bus_space_subregion
118 #define bus_space_alloc                 kcsan_bus_space_alloc
119 #define bus_space_free                  kcsan_bus_space_free
120 #define bus_space_barrier               kcsan_bus_space_barrier
121
122 #define bus_space_read_1                kcsan_bus_space_read_1
123 #define bus_space_read_stream_1         kcsan_bus_space_read_stream_1
124 #define bus_space_read_multi_1          kcsan_bus_space_read_multi_1
125 #define bus_space_read_multi_stream_1   kcsan_bus_space_read_multi_stream_1
126 #define bus_space_read_region_1         kcsan_bus_space_read_region_1
127 #define bus_space_read_region_stream_1  kcsan_bus_space_read_region_stream_1
128 #define bus_space_write_1               kcsan_bus_space_write_1
129 #define bus_space_write_stream_1        kcsan_bus_space_write_stream_1
130 #define bus_space_write_multi_1         kcsan_bus_space_write_multi_1
131 #define bus_space_write_multi_stream_1  kcsan_bus_space_write_multi_stream_1
132 #define bus_space_write_region_1        kcsan_bus_space_write_region_1
133 #define bus_space_write_region_stream_1 kcsan_bus_space_write_region_stream_1
134 #define bus_space_set_multi_1           kcsan_bus_space_set_multi_1
135 #define bus_space_set_multi_stream_1    kcsan_bus_space_set_multi_stream_1
136 #define bus_space_set_region_1          kcsan_bus_space_set_region_1
137 #define bus_space_set_region_stream_1   kcsan_bus_space_set_region_stream_1
138 #define bus_space_copy_multi_1          kcsan_bus_space_copy_multi_1
139 #define bus_space_copy_multi_stream_1   kcsan_bus_space_copy_multi_stream_1
140 #define bus_space_poke_1                kcsan_bus_space_poke_1
141 #define bus_space_peek_1                kcsan_bus_space_peek_1
142
143 #define bus_space_read_2                kcsan_bus_space_read_2
144 #define bus_space_read_stream_2         kcsan_bus_space_read_stream_2
145 #define bus_space_read_multi_2          kcsan_bus_space_read_multi_2
146 #define bus_space_read_multi_stream_2   kcsan_bus_space_read_multi_stream_2
147 #define bus_space_read_region_2         kcsan_bus_space_read_region_2
148 #define bus_space_read_region_stream_2  kcsan_bus_space_read_region_stream_2
149 #define bus_space_write_2               kcsan_bus_space_write_2
150 #define bus_space_write_stream_2        kcsan_bus_space_write_stream_2
151 #define bus_space_write_multi_2         kcsan_bus_space_write_multi_2
152 #define bus_space_write_multi_stream_2  kcsan_bus_space_write_multi_stream_2
153 #define bus_space_write_region_2        kcsan_bus_space_write_region_2
154 #define bus_space_write_region_stream_2 kcsan_bus_space_write_region_stream_2
155 #define bus_space_set_multi_2           kcsan_bus_space_set_multi_2
156 #define bus_space_set_multi_stream_2    kcsan_bus_space_set_multi_stream_2
157 #define bus_space_set_region_2          kcsan_bus_space_set_region_2
158 #define bus_space_set_region_stream_2   kcsan_bus_space_set_region_stream_2
159 #define bus_space_copy_multi_2          kcsan_bus_space_copy_multi_2
160 #define bus_space_copy_multi_stream_2   kcsan_bus_space_copy_multi_stream_2
161 #define bus_space_poke_2                kcsan_bus_space_poke_2
162 #define bus_space_peek_2                kcsan_bus_space_peek_2
163
164 #define bus_space_read_4                kcsan_bus_space_read_4
165 #define bus_space_read_stream_4         kcsan_bus_space_read_stream_4
166 #define bus_space_read_multi_4          kcsan_bus_space_read_multi_4
167 #define bus_space_read_multi_stream_4   kcsan_bus_space_read_multi_stream_4
168 #define bus_space_read_region_4         kcsan_bus_space_read_region_4
169 #define bus_space_read_region_stream_4  kcsan_bus_space_read_region_stream_4
170 #define bus_space_write_4               kcsan_bus_space_write_4
171 #define bus_space_write_stream_4        kcsan_bus_space_write_stream_4
172 #define bus_space_write_multi_4         kcsan_bus_space_write_multi_4
173 #define bus_space_write_multi_stream_4  kcsan_bus_space_write_multi_stream_4
174 #define bus_space_write_region_4        kcsan_bus_space_write_region_4
175 #define bus_space_write_region_stream_4 kcsan_bus_space_write_region_stream_4
176 #define bus_space_set_multi_4           kcsan_bus_space_set_multi_4
177 #define bus_space_set_multi_stream_4    kcsan_bus_space_set_multi_stream_4
178 #define bus_space_set_region_4          kcsan_bus_space_set_region_4
179 #define bus_space_set_region_stream_4   kcsan_bus_space_set_region_stream_4
180 #define bus_space_copy_multi_4          kcsan_bus_space_copy_multi_4
181 #define bus_space_copy_multi_stream_4   kcsan_bus_space_copy_multi_stream_4
182 #define bus_space_poke_4                kcsan_bus_space_poke_4
183 #define bus_space_peek_4                kcsan_bus_space_peek_4
184
185 #define bus_space_read_8                kcsan_bus_space_read_8
186 #define bus_space_read_stream_8         kcsan_bus_space_read_stream_8
187 #define bus_space_read_multi_8          kcsan_bus_space_read_multi_8
188 #define bus_space_read_multi_stream_8   kcsan_bus_space_read_multi_stream_8
189 #define bus_space_read_region_8         kcsan_bus_space_read_region_8
190 #define bus_space_read_region_stream_8  kcsan_bus_space_read_region_stream_8
191 #define bus_space_write_8               kcsan_bus_space_write_8
192 #define bus_space_write_stream_8        kcsan_bus_space_write_stream_8
193 #define bus_space_write_multi_8         kcsan_bus_space_write_multi_8
194 #define bus_space_write_multi_stream_8  kcsan_bus_space_write_multi_stream_8
195 #define bus_space_write_region_8        kcsan_bus_space_write_region_8
196 #define bus_space_write_region_stream_8 kcsan_bus_space_write_region_stream_8
197 #define bus_space_set_multi_8           kcsan_bus_space_set_multi_8
198 #define bus_space_set_multi_stream_8    kcsan_bus_space_set_multi_stream_8
199 #define bus_space_set_region_8          kcsan_bus_space_set_region_8
200 #define bus_space_set_region_stream_8   kcsan_bus_space_set_region_stream_8
201 #define bus_space_copy_multi_8          kcsan_bus_space_copy_multi_8
202 #define bus_space_copy_multi_stream_8   kcsan_bus_space_copy_multi_stream_8
203 #define bus_space_poke_8                kcsan_bus_space_poke_8
204 #define bus_space_peek_8                kcsan_bus_space_peek_8
205
206
207 #endif /* !KCSAN_RUNTIME */
208
209 #endif /* !_SYS__CSAN_BUS_H_ */