1 /*
2 * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
3 */
4
5 /* $OpenBSD: busop.h,v 1.2 2010/04/04 12:50:00 miod Exp $ */
6
7 /*
8 * Copyright (c) 2003 Henric Jungheim
9 * All rights reserved.
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 * 3. The name of the author may not be used to endorse or promote products
20 * derived from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34 /*
35 * Implementing u_int16_t
36 */
37
38
39 static inline u_int16_t bus_space_read_2(bus_space_tag_t,
40 bus_space_handle_t, bus_size_t);
41 static inline void bus_space_write_2(bus_space_tag_t,
42 bus_space_handle_t, bus_size_t, u_int16_t);
43 void bus_space_read_multi_2(bus_space_tag_t, bus_space_handle_t,
44 bus_size_t,
45 u_int16_t *, bus_size_t);
46 void bus_space_write_multi_2(bus_space_tag_t, bus_space_handle_t,
47 bus_size_t,
48 const u_int16_t *, bus_size_t);
49 void bus_space_set_multi_2(bus_space_tag_t, bus_space_handle_t,
50 bus_size_t, u_int16_t,
51 bus_size_t);
52 void bus_space_read_region_2(bus_space_tag_t, bus_space_handle_t,
53 bus_size_t,
54 u_int16_t *, bus_size_t);
55 void bus_space_write_region_2(bus_space_tag_t, bus_space_handle_t,
56 bus_size_t,
57 const u_int16_t *, bus_size_t);
58 void bus_space_set_region_2(bus_space_tag_t, bus_space_handle_t,
59 bus_size_t, u_int16_t,
60 bus_size_t);
61 void bus_space_copy_2(bus_space_tag_t, bus_space_handle_t,
62 bus_size_t, bus_space_handle_t, bus_size_t,
63 bus_size_t);
64
65 static inline
bus_space_read_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)66 u_int16_t bus_space_read_2(bus_space_tag_t t, bus_space_handle_t h,
67 bus_size_t o)
68 {
69 u_int16_t r;
70
71 BUS_SPACE_ASSERT(t, h, o, 2);
72 r = lduha(h.bh_ptr + o, t->asi);
73 BUS_SPACE_TRACE(t, h,
74 ("bsr2(%llx + %llx, %x) -> %4.4x\n",
75 (long long)h.bh_ptr,
76 (long long)o,
77 t->asi,
78 r));
79 return (r);
80 }
81
82 static inline
bus_space_write_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v)83 void bus_space_write_2(bus_space_tag_t t, bus_space_handle_t h,
84 bus_size_t o, u_int16_t v)
85 {
86 BUS_SPACE_ASSERT(t, h, o, 2);
87 BUS_SPACE_TRACE(t, h,
88 ("bsw2(%llx + %llx, %x) <- %4.4x\n",
89 (long long)h.bh_ptr,
90 (long long)o,
91 t->asi,
92 v));
93 stha(h.bh_ptr + o, t->asi, v);
94 }
95
96
97 /*
98 * Implementing u_int32_t
99 */
100
101
102 static inline u_int32_t bus_space_read_4(bus_space_tag_t,
103 bus_space_handle_t, bus_size_t);
104 static inline void bus_space_write_4(bus_space_tag_t,
105 bus_space_handle_t, bus_size_t, u_int32_t);
106 void bus_space_read_multi_4(bus_space_tag_t, bus_space_handle_t,
107 bus_size_t,
108 u_int32_t *, bus_size_t);
109 void bus_space_write_multi_4(bus_space_tag_t, bus_space_handle_t,
110 bus_size_t,
111 const u_int32_t *, bus_size_t);
112 void bus_space_set_multi_4(bus_space_tag_t, bus_space_handle_t,
113 bus_size_t, u_int32_t,
114 bus_size_t);
115 void bus_space_read_region_4(bus_space_tag_t, bus_space_handle_t,
116 bus_size_t,
117 u_int32_t *, bus_size_t);
118 void bus_space_write_region_4(bus_space_tag_t, bus_space_handle_t,
119 bus_size_t,
120 const u_int32_t *, bus_size_t);
121 void bus_space_set_region_4(bus_space_tag_t, bus_space_handle_t,
122 bus_size_t, u_int32_t,
123 bus_size_t);
124 void bus_space_copy_4(bus_space_tag_t, bus_space_handle_t,
125 bus_size_t, bus_space_handle_t, bus_size_t,
126 bus_size_t);
127
128 static inline
bus_space_read_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)129 u_int32_t bus_space_read_4(bus_space_tag_t t, bus_space_handle_t h,
130 bus_size_t o)
131 {
132 u_int32_t r;
133
134 BUS_SPACE_ASSERT(t, h, o, 4);
135 r = lduwa(h.bh_ptr + o, t->asi);
136 BUS_SPACE_TRACE(t, h,
137 ("bsr4(%llx + %llx, %x) -> %8.8x\n",
138 (long long)h.bh_ptr,
139 (long long)o,
140 t->asi,
141 r));
142 return (r);
143 }
144
145 static inline
bus_space_write_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v)146 void bus_space_write_4(bus_space_tag_t t, bus_space_handle_t h,
147 bus_size_t o, u_int32_t v)
148 {
149 BUS_SPACE_ASSERT(t, h, o, 4);
150 BUS_SPACE_TRACE(t, h,
151 ("bsw4(%llx + %llx, %x) <- %8.8x\n",
152 (long long)h.bh_ptr,
153 (long long)o,
154 t->asi,
155 v));
156 stwa(h.bh_ptr + o, t->asi, v);
157 }
158
159
160 /*
161 * Implementing u_int64_t
162 */
163
164
165 static inline u_int64_t bus_space_read_8(bus_space_tag_t,
166 bus_space_handle_t, bus_size_t);
167 static inline void bus_space_write_8(bus_space_tag_t,
168 bus_space_handle_t, bus_size_t, u_int64_t);
169 void bus_space_read_multi_8(bus_space_tag_t, bus_space_handle_t,
170 bus_size_t,
171 u_int64_t *, bus_size_t);
172 void bus_space_write_multi_8(bus_space_tag_t, bus_space_handle_t,
173 bus_size_t,
174 const u_int64_t *, bus_size_t);
175 void bus_space_set_multi_8(bus_space_tag_t, bus_space_handle_t,
176 bus_size_t, u_int64_t,
177 bus_size_t);
178 void bus_space_read_region_8(bus_space_tag_t, bus_space_handle_t,
179 bus_size_t,
180 u_int64_t *, bus_size_t);
181 void bus_space_write_region_8(bus_space_tag_t, bus_space_handle_t,
182 bus_size_t,
183 const u_int64_t *, bus_size_t);
184 void bus_space_set_region_8(bus_space_tag_t, bus_space_handle_t,
185 bus_size_t, u_int64_t,
186 bus_size_t);
187 void bus_space_copy_8(bus_space_tag_t, bus_space_handle_t,
188 bus_size_t, bus_space_handle_t, bus_size_t,
189 bus_size_t);
190
191 static inline
bus_space_read_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)192 u_int64_t bus_space_read_8(bus_space_tag_t t, bus_space_handle_t h,
193 bus_size_t o)
194 {
195 u_int64_t r;
196
197 BUS_SPACE_ASSERT(t, h, o, 8);
198 r = ldxa(h.bh_ptr + o, t->asi);
199 BUS_SPACE_TRACE(t, h,
200 ("bsr8(%llx + %llx, %x) -> %16.16llx\n",
201 (long long)h.bh_ptr,
202 (long long)o,
203 t->asi,
204 r));
205 return (r);
206 }
207
208 static inline
bus_space_write_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v)209 void bus_space_write_8(bus_space_tag_t t, bus_space_handle_t h,
210 bus_size_t o, u_int64_t v)
211 {
212 BUS_SPACE_ASSERT(t, h, o, 8);
213 BUS_SPACE_TRACE(t, h,
214 ("bsw8(%llx + %llx, %x) <- %16.16llx\n",
215 (long long)h.bh_ptr,
216 (long long)o,
217 t->asi,
218 v));
219 stxa(h.bh_ptr + o, t->asi, v);
220 }
221
222
223 /*
224 * Implementing u_int8_t
225 */
226
227
228 static inline u_int8_t bus_space_read_1(bus_space_tag_t,
229 bus_space_handle_t, bus_size_t);
230 static inline void bus_space_write_1(bus_space_tag_t,
231 bus_space_handle_t, bus_size_t, u_int8_t);
232 void bus_space_read_multi_1(bus_space_tag_t, bus_space_handle_t,
233 bus_size_t,
234 u_int8_t *, bus_size_t);
235 void bus_space_write_multi_1(bus_space_tag_t, bus_space_handle_t,
236 bus_size_t,
237 const u_int8_t *, bus_size_t);
238 void bus_space_set_multi_1(bus_space_tag_t, bus_space_handle_t,
239 bus_size_t, u_int8_t,
240 bus_size_t);
241 void bus_space_read_region_1(bus_space_tag_t, bus_space_handle_t,
242 bus_size_t,
243 u_int8_t *, bus_size_t);
244 void bus_space_write_region_1(bus_space_tag_t, bus_space_handle_t,
245 bus_size_t,
246 const u_int8_t *, bus_size_t);
247 void bus_space_set_region_1(bus_space_tag_t, bus_space_handle_t,
248 bus_size_t, u_int8_t,
249 bus_size_t);
250 void bus_space_copy_1(bus_space_tag_t, bus_space_handle_t,
251 bus_size_t, bus_space_handle_t, bus_size_t,
252 bus_size_t);
253
254 static inline
bus_space_read_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)255 u_int8_t bus_space_read_1(bus_space_tag_t t, bus_space_handle_t h,
256 bus_size_t o)
257 {
258 u_int8_t r;
259
260 BUS_SPACE_ASSERT(t, h, o, 1);
261 r = lduba(h.bh_ptr + o, t->asi);
262 BUS_SPACE_TRACE(t, h,
263 ("bsr1(%llx + %llx, %x) -> %2.2x\n",
264 (long long)h.bh_ptr,
265 (long long)o,
266 t->asi,
267 r));
268 return (r);
269 }
270
271 static inline
bus_space_write_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v)272 void bus_space_write_1(bus_space_tag_t t, bus_space_handle_t h,
273 bus_size_t o, u_int8_t v)
274 {
275 BUS_SPACE_ASSERT(t, h, o, 1);
276 BUS_SPACE_TRACE(t, h,
277 ("bsw1(%llx + %llx, %x) <- %2.2x\n",
278 (long long)h.bh_ptr,
279 (long long)o,
280 t->asi,
281 v));
282 stba(h.bh_ptr + o, t->asi, v);
283 }
284
285
286 /*
287 * Implementing u_int16_t
288 */
289
290
291 static inline u_int16_t bus_space_read_raw_2(bus_space_tag_t,
292 bus_space_handle_t, bus_size_t);
293 static inline void bus_space_write_raw_2(bus_space_tag_t,
294 bus_space_handle_t, bus_size_t, u_int16_t);
295 void bus_space_read_raw_multi_2(bus_space_tag_t, bus_space_handle_t,
296 bus_size_t,
297 void *, size_t);
298 void bus_space_write_raw_multi_2(bus_space_tag_t, bus_space_handle_t,
299 bus_size_t,
300 const void *, size_t);
301 void bus_space_set_raw_multi_2(bus_space_tag_t, bus_space_handle_t,
302 bus_size_t, u_int16_t,
303 size_t);
304 void bus_space_read_raw_region_2(bus_space_tag_t, bus_space_handle_t,
305 bus_size_t,
306 void *, size_t);
307 void bus_space_write_raw_region_2(bus_space_tag_t, bus_space_handle_t,
308 bus_size_t,
309 const void *, size_t);
310 void bus_space_set_raw_region_2(bus_space_tag_t, bus_space_handle_t,
311 bus_size_t, u_int16_t,
312 size_t);
313
314 static inline
bus_space_read_raw_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)315 u_int16_t bus_space_read_raw_2(bus_space_tag_t t, bus_space_handle_t h,
316 bus_size_t o)
317 {
318 u_int16_t r;
319
320 BUS_SPACE_ASSERT(t, h, o, 2);
321 r = lduha(h.bh_ptr + o, t->sasi);
322 BUS_SPACE_TRACE(t, h,
323 ("bsr2(%llx + %llx, %x) -> %4.4x\n",
324 (long long)h.bh_ptr,
325 (long long)o,
326 t->sasi,
327 r));
328 return (r);
329 }
330
331 static inline
bus_space_write_raw_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v)332 void bus_space_write_raw_2(bus_space_tag_t t, bus_space_handle_t h,
333 bus_size_t o, u_int16_t v)
334 {
335 BUS_SPACE_ASSERT(t, h, o, 2);
336 BUS_SPACE_TRACE(t, h,
337 ("bsw2(%llx + %llx, %x) <- %4.4x\n",
338 (long long)h.bh_ptr,
339 (long long)o,
340 t->sasi,
341 v));
342 stha(h.bh_ptr + o, t->sasi, v);
343 }
344
345
346 /*
347 * Implementing u_int32_t
348 */
349
350
351 static inline u_int32_t bus_space_read_raw_4(bus_space_tag_t,
352 bus_space_handle_t, bus_size_t);
353 static inline void bus_space_write_raw_4(bus_space_tag_t,
354 bus_space_handle_t, bus_size_t, u_int32_t);
355 void bus_space_read_raw_multi_4(bus_space_tag_t, bus_space_handle_t,
356 bus_size_t,
357 void *, size_t);
358 void bus_space_write_raw_multi_4(bus_space_tag_t, bus_space_handle_t,
359 bus_size_t,
360 const void *, size_t);
361 void bus_space_set_raw_multi_4(bus_space_tag_t, bus_space_handle_t,
362 bus_size_t, u_int32_t,
363 size_t);
364 void bus_space_read_raw_region_4(bus_space_tag_t, bus_space_handle_t,
365 bus_size_t,
366 void *, size_t);
367 void bus_space_write_raw_region_4(bus_space_tag_t, bus_space_handle_t,
368 bus_size_t,
369 const void *, size_t);
370 void bus_space_set_raw_region_4(bus_space_tag_t, bus_space_handle_t,
371 bus_size_t, u_int32_t,
372 size_t);
373
374 static inline
bus_space_read_raw_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)375 u_int32_t bus_space_read_raw_4(bus_space_tag_t t, bus_space_handle_t h,
376 bus_size_t o)
377 {
378 u_int32_t r;
379
380 BUS_SPACE_ASSERT(t, h, o, 4);
381 r = lduwa(h.bh_ptr + o, t->sasi);
382 BUS_SPACE_TRACE(t, h,
383 ("bsr4(%llx + %llx, %x) -> %8.8x\n",
384 (long long)h.bh_ptr,
385 (long long)o,
386 t->sasi,
387 r));
388 return (r);
389 }
390
391 static inline
bus_space_write_raw_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v)392 void bus_space_write_raw_4(bus_space_tag_t t, bus_space_handle_t h,
393 bus_size_t o, u_int32_t v)
394 {
395 BUS_SPACE_ASSERT(t, h, o, 4);
396 BUS_SPACE_TRACE(t, h,
397 ("bsw4(%llx + %llx, %x) <- %8.8x\n",
398 (long long)h.bh_ptr,
399 (long long)o,
400 t->sasi,
401 v));
402 stwa(h.bh_ptr + o, t->sasi, v);
403 }
404
405
406 /*
407 * Implementing u_int64_t
408 */
409
410
411 static inline u_int64_t bus_space_read_raw_8(bus_space_tag_t,
412 bus_space_handle_t, bus_size_t);
413 static inline void bus_space_write_raw_8(bus_space_tag_t,
414 bus_space_handle_t, bus_size_t, u_int64_t);
415 void bus_space_read_raw_multi_8(bus_space_tag_t, bus_space_handle_t,
416 bus_size_t,
417 void *, size_t);
418 void bus_space_write_raw_multi_8(bus_space_tag_t, bus_space_handle_t,
419 bus_size_t,
420 const void *, size_t);
421 void bus_space_set_raw_multi_8(bus_space_tag_t, bus_space_handle_t,
422 bus_size_t, u_int64_t,
423 size_t);
424 void bus_space_read_raw_region_8(bus_space_tag_t, bus_space_handle_t,
425 bus_size_t,
426 void *, size_t);
427 void bus_space_write_raw_region_8(bus_space_tag_t, bus_space_handle_t,
428 bus_size_t,
429 const void *, size_t);
430 void bus_space_set_raw_region_8(bus_space_tag_t, bus_space_handle_t,
431 bus_size_t, u_int64_t,
432 size_t);
433
434 static inline
bus_space_read_raw_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)435 u_int64_t bus_space_read_raw_8(bus_space_tag_t t, bus_space_handle_t h,
436 bus_size_t o)
437 {
438 u_int64_t r;
439
440 BUS_SPACE_ASSERT(t, h, o, 8);
441 r = ldxa(h.bh_ptr + o, t->sasi);
442 BUS_SPACE_TRACE(t, h,
443 ("bsr8(%llx + %llx, %x) -> %16.16llx\n",
444 (long long)h.bh_ptr,
445 (long long)o,
446 t->sasi,
447 r));
448 return (r);
449 }
450
451 static inline
bus_space_write_raw_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v)452 void bus_space_write_raw_8(bus_space_tag_t t, bus_space_handle_t h,
453 bus_size_t o, u_int64_t v)
454 {
455 BUS_SPACE_ASSERT(t, h, o, 8);
456 BUS_SPACE_TRACE(t, h,
457 ("bsw8(%llx + %llx, %x) <- %16.16llx\n",
458 (long long)h.bh_ptr,
459 (long long)o,
460 t->sasi,
461 v));
462 stxa(h.bh_ptr + o, t->sasi, v);
463 }
464
465
466 /*
467 * Implementing u_int8_t
468 */
469
470
471 static inline u_int8_t bus_space_read_raw_1(bus_space_tag_t,
472 bus_space_handle_t, bus_size_t);
473 static inline void bus_space_write_raw_1(bus_space_tag_t,
474 bus_space_handle_t, bus_size_t, u_int8_t);
475 void bus_space_read_raw_multi_1(bus_space_tag_t, bus_space_handle_t,
476 bus_size_t,
477 void *, size_t);
478 void bus_space_write_raw_multi_1(bus_space_tag_t, bus_space_handle_t,
479 bus_size_t,
480 const void *, size_t);
481 void bus_space_set_raw_multi_1(bus_space_tag_t, bus_space_handle_t,
482 bus_size_t, u_int8_t,
483 size_t);
484 void bus_space_read_raw_region_1(bus_space_tag_t, bus_space_handle_t,
485 bus_size_t,
486 void *, size_t);
487 void bus_space_write_raw_region_1(bus_space_tag_t, bus_space_handle_t,
488 bus_size_t,
489 const void *, size_t);
490 void bus_space_set_raw_region_1(bus_space_tag_t, bus_space_handle_t,
491 bus_size_t, u_int8_t,
492 size_t);
493
494 static inline
bus_space_read_raw_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o)495 u_int8_t bus_space_read_raw_1(bus_space_tag_t t, bus_space_handle_t h,
496 bus_size_t o)
497 {
498 u_int8_t r;
499
500 BUS_SPACE_ASSERT(t, h, o, 1);
501 r = lduba(h.bh_ptr + o, t->sasi);
502 BUS_SPACE_TRACE(t, h,
503 ("bsr1(%llx + %llx, %x) -> %2.2x\n",
504 (long long)h.bh_ptr,
505 (long long)o,
506 t->sasi,
507 r));
508 return (r);
509 }
510
511 static inline
bus_space_write_raw_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v)512 void bus_space_write_raw_1(bus_space_tag_t t, bus_space_handle_t h,
513 bus_size_t o, u_int8_t v)
514 {
515 BUS_SPACE_ASSERT(t, h, o, 1);
516 BUS_SPACE_TRACE(t, h,
517 ("bsw1(%llx + %llx, %x) <- %2.2x\n",
518 (long long)h.bh_ptr,
519 (long long)o,
520 t->sasi,
521 v));
522 stba(h.bh_ptr + o, t->sasi, v);
523 }
524
525
526