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