xref: /openbsd/sys/arch/sparc64/sparc64/busop.c (revision 404b540a)
1 /*
2  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
3  */
4 
5 /*      $OpenBSD: busop.c,v 1.1 2003/02/17 01:29:20 henric 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 #include <sys/param.h>
35 #include <sys/systm.h>
36 #include <sys/kernel.h>
37 
38 #include <machine/bus.h>
39 
40 /*
41  * Implementing u_int16_t
42  */
43 
44 
45 void
46 bus_space_read_multi_2(bus_space_tag_t t, bus_space_handle_t h,
47     bus_size_t o,
48     u_int16_t *a, bus_size_t c)
49 {
50 	u_int16_t *p = a;
51 
52 	BUS_SPACE_ASSERT(t, h, o, 2);
53 	BUS_SPACE_TRACE(t, h,
54 	    ("bsrm2(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
55 	    (long long)o, t->asi, c));
56 
57 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
58 	asi_set(t->asi);
59 	while (--c > 0) {
60 		u_int16_t r = lduha_asi(h.bh_ptr + o);
61 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
62 		*p++ = r;
63 	}
64 
65 	BUS_SPACE_TRACE(t, h, ("\n"));
66 }
67 
68 void
69 bus_space_write_multi_2(bus_space_tag_t t, bus_space_handle_t h,
70     bus_size_t o,
71     const u_int16_t *a, bus_size_t c)
72 {
73 	const u_int16_t *p = a;
74 
75 	BUS_SPACE_ASSERT(t, h, o, 2);
76 	BUS_SPACE_TRACE(t, h,
77 	    ("bswm2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
78 	    (long long)o, t->asi, c));
79 
80 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
81 	asi_set(t->asi);
82 	while (--c > 0) {
83 		u_int16_t r = *p++;
84 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
85 		stha_asi(h.bh_ptr + o, r);
86 	}
87 
88 	BUS_SPACE_TRACE(t, h, ("\n"));
89 }
90 
91 void
92 bus_space_set_multi_2(bus_space_tag_t t, bus_space_handle_t h,
93     bus_size_t o, u_int16_t v,
94     bus_size_t c)
95 {
96 	BUS_SPACE_ASSERT(t, h, o, 2);
97 	BUS_SPACE_TRACE(t, h,
98 	    ("bssm2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr,
99 	    (long long)o, t->asi, c, v));
100 
101 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
102 	asi_set(t->asi);
103 	while (--c > 0)
104 		stha_asi(h.bh_ptr + o, v);
105 }
106 
107 void
108 bus_space_read_region_2(bus_space_tag_t t, bus_space_handle_t h,
109     bus_size_t o,
110     u_int16_t *a, bus_size_t c)
111 {
112 	u_int16_t *p = a;
113 	paddr_t ptr = h.bh_ptr + o;
114 
115 	BUS_SPACE_ASSERT(t, h, o, 2);
116 	BUS_SPACE_TRACE(t, h,
117 	    ("bsrr2(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
118 	    (long long)o, t->asi, c));
119 
120 	asi_set(t->asi);
121 	for (; c; p++, c--, ptr += 2) {
122 		u_int16_t r = lduha_asi(ptr);
123 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
124 		*p = r;
125 	}
126 
127 	BUS_SPACE_TRACE(t, h, ("\n"));
128 }
129 
130 void
131 bus_space_write_region_2(bus_space_tag_t t, bus_space_handle_t h,
132     bus_size_t o,
133     const u_int16_t *a, bus_size_t c)
134 {
135 	const u_int16_t *p = a;
136 	paddr_t ptr = h.bh_ptr + o;
137 
138 	BUS_SPACE_ASSERT(t, h, o, 2);
139 	BUS_SPACE_TRACE(t, h,
140 	    ("bswr2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
141 	    (long long)o, t->asi, c));
142 
143 	asi_set(t->asi);
144 	for (; c; p++, c--, ptr += 2) {
145 		u_int16_t r = *p;
146 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
147 		stha_asi(ptr, r);
148 	}
149 
150 	BUS_SPACE_TRACE(t, h, ("\n"));
151 }
152 
153 void
154 bus_space_set_region_2(bus_space_tag_t t, bus_space_handle_t h,
155     bus_size_t o, u_int16_t v,
156     bus_size_t c)
157 {
158 	paddr_t ptr = h.bh_ptr + o;
159 
160 	BUS_SPACE_ASSERT(t, h, o, 2);
161 	BUS_SPACE_TRACE(t, h,
162 	    ("bssr2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr,
163 	    (long long)o, t->asi, c, v));
164 
165 	asi_set(t->asi);
166 	for (; c; c--, ptr += 2)
167 		stha_asi(ptr, v);
168 }
169 
170 void
171 bus_space_copy_region_2(bus_space_tag_t t, bus_space_handle_t h1,
172     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
173     bus_size_t c)
174 {
175 	paddr_t ptr1 = h1.bh_ptr + o1;
176 	paddr_t ptr2 = h2.bh_ptr + o2;
177 
178 	BUS_SPACE_ASSERT(t, h1, o2, 2);
179 	BUS_SPACE_ASSERT(t, h2, o2, 2);
180 	BUS_SPACE_TRACE(t, h1,
181 	    ("bscr2(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
182 	    (long long)h1.bh_ptr, (long long)o1,
183 	    (long long)h2.bh_ptr, (long long)o2,
184 	    t->asi, c));
185 
186 	asi_set(t->asi);
187         for (; c; c--, ptr1 += 2, ptr2 += 2) {
188 		u_int16_t r = lduha_asi(ptr2);
189 		BUS_SPACE_TRACE(t, h1, (" %4.4x", r));
190 		stha_asi(ptr1, r);
191 	}
192 	BUS_SPACE_TRACE(t, h1, ("\n"));
193 }
194 
195 
196 /*
197  * Implementing u_int32_t
198  */
199 
200 
201 void
202 bus_space_read_multi_4(bus_space_tag_t t, bus_space_handle_t h,
203     bus_size_t o,
204     u_int32_t *a, bus_size_t c)
205 {
206 	u_int32_t *p = a;
207 
208 	BUS_SPACE_ASSERT(t, h, o, 4);
209 	BUS_SPACE_TRACE(t, h,
210 	    ("bsrm4(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
211 	    (long long)o, t->asi, c));
212 
213 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
214 	asi_set(t->asi);
215 	while (--c > 0) {
216 		u_int32_t r = lduwa_asi(h.bh_ptr + o);
217 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
218 		*p++ = r;
219 	}
220 
221 	BUS_SPACE_TRACE(t, h, ("\n"));
222 }
223 
224 void
225 bus_space_write_multi_4(bus_space_tag_t t, bus_space_handle_t h,
226     bus_size_t o,
227     const u_int32_t *a, bus_size_t c)
228 {
229 	const u_int32_t *p = a;
230 
231 	BUS_SPACE_ASSERT(t, h, o, 4);
232 	BUS_SPACE_TRACE(t, h,
233 	    ("bswm4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
234 	    (long long)o, t->asi, c));
235 
236 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
237 	asi_set(t->asi);
238 	while (--c > 0) {
239 		u_int32_t r = *p++;
240 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
241 		stwa_asi(h.bh_ptr + o, r);
242 	}
243 
244 	BUS_SPACE_TRACE(t, h, ("\n"));
245 }
246 
247 void
248 bus_space_set_multi_4(bus_space_tag_t t, bus_space_handle_t h,
249     bus_size_t o, u_int32_t v,
250     bus_size_t c)
251 {
252 	BUS_SPACE_ASSERT(t, h, o, 4);
253 	BUS_SPACE_TRACE(t, h,
254 	    ("bssm4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
255 	    (long long)o, t->asi, c, v));
256 
257 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
258 	asi_set(t->asi);
259 	while (--c > 0)
260 		stwa_asi(h.bh_ptr + o, v);
261 }
262 
263 void
264 bus_space_read_region_4(bus_space_tag_t t, bus_space_handle_t h,
265     bus_size_t o,
266     u_int32_t *a, bus_size_t c)
267 {
268 	u_int32_t *p = a;
269 	paddr_t ptr = h.bh_ptr + o;
270 
271 	BUS_SPACE_ASSERT(t, h, o, 4);
272 	BUS_SPACE_TRACE(t, h,
273 	    ("bsrr4(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
274 	    (long long)o, t->asi, c));
275 
276 	asi_set(t->asi);
277 	for (; c; p++, c--, ptr += 4) {
278 		u_int32_t r = lduwa_asi(ptr);
279 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
280 		*p = r;
281 	}
282 
283 	BUS_SPACE_TRACE(t, h, ("\n"));
284 }
285 
286 void
287 bus_space_write_region_4(bus_space_tag_t t, bus_space_handle_t h,
288     bus_size_t o,
289     const u_int32_t *a, bus_size_t c)
290 {
291 	const u_int32_t *p = a;
292 	paddr_t ptr = h.bh_ptr + o;
293 
294 	BUS_SPACE_ASSERT(t, h, o, 4);
295 	BUS_SPACE_TRACE(t, h,
296 	    ("bswr4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
297 	    (long long)o, t->asi, c));
298 
299 	asi_set(t->asi);
300 	for (; c; p++, c--, ptr += 4) {
301 		u_int32_t r = *p;
302 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
303 		stwa_asi(ptr, r);
304 	}
305 
306 	BUS_SPACE_TRACE(t, h, ("\n"));
307 }
308 
309 void
310 bus_space_set_region_4(bus_space_tag_t t, bus_space_handle_t h,
311     bus_size_t o, u_int32_t v,
312     bus_size_t c)
313 {
314 	paddr_t ptr = h.bh_ptr + o;
315 
316 	BUS_SPACE_ASSERT(t, h, o, 4);
317 	BUS_SPACE_TRACE(t, h,
318 	    ("bssr4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
319 	    (long long)o, t->asi, c, v));
320 
321 	asi_set(t->asi);
322 	for (; c; c--, ptr += 4)
323 		stwa_asi(ptr, v);
324 }
325 
326 void
327 bus_space_copy_region_4(bus_space_tag_t t, bus_space_handle_t h1,
328     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
329     bus_size_t c)
330 {
331 	paddr_t ptr1 = h1.bh_ptr + o1;
332 	paddr_t ptr2 = h2.bh_ptr + o2;
333 
334 	BUS_SPACE_ASSERT(t, h1, o2, 4);
335 	BUS_SPACE_ASSERT(t, h2, o2, 4);
336 	BUS_SPACE_TRACE(t, h1,
337 	    ("bscr4(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
338 	    (long long)h1.bh_ptr, (long long)o1,
339 	    (long long)h2.bh_ptr, (long long)o2,
340 	    t->asi, c));
341 
342 	asi_set(t->asi);
343         for (; c; c--, ptr1 += 4, ptr2 += 4) {
344 		u_int32_t r = lduwa_asi(ptr2);
345 		BUS_SPACE_TRACE(t, h1, (" %8.8x", r));
346 		stwa_asi(ptr1, r);
347 	}
348 	BUS_SPACE_TRACE(t, h1, ("\n"));
349 }
350 
351 
352 /*
353  * Implementing u_int64_t
354  */
355 
356 
357 void
358 bus_space_read_multi_8(bus_space_tag_t t, bus_space_handle_t h,
359     bus_size_t o,
360     u_int64_t *a, bus_size_t c)
361 {
362 	u_int64_t *p = a;
363 
364 	BUS_SPACE_ASSERT(t, h, o, 8);
365 	BUS_SPACE_TRACE(t, h,
366 	    ("bsrm8(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
367 	    (long long)o, t->asi, c));
368 
369 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
370 	asi_set(t->asi);
371 	while (--c > 0) {
372 		u_int64_t r = ldxa_asi(h.bh_ptr + o);
373 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
374 		*p++ = r;
375 	}
376 
377 	BUS_SPACE_TRACE(t, h, ("\n"));
378 }
379 
380 void
381 bus_space_write_multi_8(bus_space_tag_t t, bus_space_handle_t h,
382     bus_size_t o,
383     const u_int64_t *a, bus_size_t c)
384 {
385 	const u_int64_t *p = a;
386 
387 	BUS_SPACE_ASSERT(t, h, o, 8);
388 	BUS_SPACE_TRACE(t, h,
389 	    ("bswm8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
390 	    (long long)o, t->asi, c));
391 
392 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
393 	asi_set(t->asi);
394 	while (--c > 0) {
395 		u_int64_t r = *p++;
396 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
397 		stxa_asi(h.bh_ptr + o, r);
398 	}
399 
400 	BUS_SPACE_TRACE(t, h, ("\n"));
401 }
402 
403 void
404 bus_space_set_multi_8(bus_space_tag_t t, bus_space_handle_t h,
405     bus_size_t o, u_int64_t v,
406     bus_size_t c)
407 {
408 	BUS_SPACE_ASSERT(t, h, o, 8);
409 	BUS_SPACE_TRACE(t, h,
410 	    ("bssm8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
411 	    (long long)o, t->asi, c, v));
412 
413 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
414 	asi_set(t->asi);
415 	while (--c > 0)
416 		stxa_asi(h.bh_ptr + o, v);
417 }
418 
419 void
420 bus_space_read_region_8(bus_space_tag_t t, bus_space_handle_t h,
421     bus_size_t o,
422     u_int64_t *a, bus_size_t c)
423 {
424 	u_int64_t *p = a;
425 	paddr_t ptr = h.bh_ptr + o;
426 
427 	BUS_SPACE_ASSERT(t, h, o, 8);
428 	BUS_SPACE_TRACE(t, h,
429 	    ("bsrr8(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
430 	    (long long)o, t->asi, c));
431 
432 	asi_set(t->asi);
433 	for (; c; p++, c--, ptr += 8) {
434 		u_int64_t r = ldxa_asi(ptr);
435 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
436 		*p = r;
437 	}
438 
439 	BUS_SPACE_TRACE(t, h, ("\n"));
440 }
441 
442 void
443 bus_space_write_region_8(bus_space_tag_t t, bus_space_handle_t h,
444     bus_size_t o,
445     const u_int64_t *a, bus_size_t c)
446 {
447 	const u_int64_t *p = a;
448 	paddr_t ptr = h.bh_ptr + o;
449 
450 	BUS_SPACE_ASSERT(t, h, o, 8);
451 	BUS_SPACE_TRACE(t, h,
452 	    ("bswr8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
453 	    (long long)o, t->asi, c));
454 
455 	asi_set(t->asi);
456 	for (; c; p++, c--, ptr += 8) {
457 		u_int64_t r = *p;
458 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
459 		stxa_asi(ptr, r);
460 	}
461 
462 	BUS_SPACE_TRACE(t, h, ("\n"));
463 }
464 
465 void
466 bus_space_set_region_8(bus_space_tag_t t, bus_space_handle_t h,
467     bus_size_t o, u_int64_t v,
468     bus_size_t c)
469 {
470 	paddr_t ptr = h.bh_ptr + o;
471 
472 	BUS_SPACE_ASSERT(t, h, o, 8);
473 	BUS_SPACE_TRACE(t, h,
474 	    ("bssr8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
475 	    (long long)o, t->asi, c, v));
476 
477 	asi_set(t->asi);
478 	for (; c; c--, ptr += 8)
479 		stxa_asi(ptr, v);
480 }
481 
482 void
483 bus_space_copy_region_8(bus_space_tag_t t, bus_space_handle_t h1,
484     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
485     bus_size_t c)
486 {
487 	paddr_t ptr1 = h1.bh_ptr + o1;
488 	paddr_t ptr2 = h2.bh_ptr + o2;
489 
490 	BUS_SPACE_ASSERT(t, h1, o2, 8);
491 	BUS_SPACE_ASSERT(t, h2, o2, 8);
492 	BUS_SPACE_TRACE(t, h1,
493 	    ("bscr8(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
494 	    (long long)h1.bh_ptr, (long long)o1,
495 	    (long long)h2.bh_ptr, (long long)o2,
496 	    t->asi, c));
497 
498 	asi_set(t->asi);
499         for (; c; c--, ptr1 += 8, ptr2 += 8) {
500 		u_int64_t r = ldxa_asi(ptr2);
501 		BUS_SPACE_TRACE(t, h1, (" %16.16llx", r));
502 		stxa_asi(ptr1, r);
503 	}
504 	BUS_SPACE_TRACE(t, h1, ("\n"));
505 }
506 
507 
508 /*
509  * Implementing u_int8_t
510  */
511 
512 
513 void
514 bus_space_read_multi_1(bus_space_tag_t t, bus_space_handle_t h,
515     bus_size_t o,
516     u_int8_t *a, bus_size_t c)
517 {
518 	u_int8_t *p = a;
519 
520 	BUS_SPACE_ASSERT(t, h, o, 1);
521 	BUS_SPACE_TRACE(t, h,
522 	    ("bsrm1(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
523 	    (long long)o, t->asi, c));
524 
525 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
526 	asi_set(t->asi);
527 	while (--c > 0) {
528 		u_int8_t r = lduba_asi(h.bh_ptr + o);
529 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
530 		*p++ = r;
531 	}
532 
533 	BUS_SPACE_TRACE(t, h, ("\n"));
534 }
535 
536 void
537 bus_space_write_multi_1(bus_space_tag_t t, bus_space_handle_t h,
538     bus_size_t o,
539     const u_int8_t *a, bus_size_t c)
540 {
541 	const u_int8_t *p = a;
542 
543 	BUS_SPACE_ASSERT(t, h, o, 1);
544 	BUS_SPACE_TRACE(t, h,
545 	    ("bswm1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
546 	    (long long)o, t->asi, c));
547 
548 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
549 	asi_set(t->asi);
550 	while (--c > 0) {
551 		u_int8_t r = *p++;
552 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
553 		stba_asi(h.bh_ptr + o, r);
554 	}
555 
556 	BUS_SPACE_TRACE(t, h, ("\n"));
557 }
558 
559 void
560 bus_space_set_multi_1(bus_space_tag_t t, bus_space_handle_t h,
561     bus_size_t o, u_int8_t v,
562     bus_size_t c)
563 {
564 	BUS_SPACE_ASSERT(t, h, o, 1);
565 	BUS_SPACE_TRACE(t, h,
566 	    ("bssm1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
567 	    (long long)o, t->asi, c, v));
568 
569 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
570 	asi_set(t->asi);
571 	while (--c > 0)
572 		stba_asi(h.bh_ptr + o, v);
573 }
574 
575 void
576 bus_space_read_region_1(bus_space_tag_t t, bus_space_handle_t h,
577     bus_size_t o,
578     u_int8_t *a, bus_size_t c)
579 {
580 	u_int8_t *p = a;
581 	paddr_t ptr = h.bh_ptr + o;
582 
583 	BUS_SPACE_ASSERT(t, h, o, 1);
584 	BUS_SPACE_TRACE(t, h,
585 	    ("bsrr1(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
586 	    (long long)o, t->asi, c));
587 
588 	asi_set(t->asi);
589 	for (; c; p++, c--, ptr += 1) {
590 		u_int8_t r = lduba_asi(ptr);
591 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
592 		*p = r;
593 	}
594 
595 	BUS_SPACE_TRACE(t, h, ("\n"));
596 }
597 
598 void
599 bus_space_write_region_1(bus_space_tag_t t, bus_space_handle_t h,
600     bus_size_t o,
601     const u_int8_t *a, bus_size_t c)
602 {
603 	const u_int8_t *p = a;
604 	paddr_t ptr = h.bh_ptr + o;
605 
606 	BUS_SPACE_ASSERT(t, h, o, 1);
607 	BUS_SPACE_TRACE(t, h,
608 	    ("bswr1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
609 	    (long long)o, t->asi, c));
610 
611 	asi_set(t->asi);
612 	for (; c; p++, c--, ptr += 1) {
613 		u_int8_t r = *p;
614 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
615 		stba_asi(ptr, r);
616 	}
617 
618 	BUS_SPACE_TRACE(t, h, ("\n"));
619 }
620 
621 void
622 bus_space_set_region_1(bus_space_tag_t t, bus_space_handle_t h,
623     bus_size_t o, u_int8_t v,
624     bus_size_t c)
625 {
626 	paddr_t ptr = h.bh_ptr + o;
627 
628 	BUS_SPACE_ASSERT(t, h, o, 1);
629 	BUS_SPACE_TRACE(t, h,
630 	    ("bssr1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
631 	    (long long)o, t->asi, c, v));
632 
633 	asi_set(t->asi);
634 	for (; c; c--, ptr += 1)
635 		stba_asi(ptr, v);
636 }
637 
638 void
639 bus_space_copy_region_1(bus_space_tag_t t, bus_space_handle_t h1,
640     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
641     bus_size_t c)
642 {
643 	paddr_t ptr1 = h1.bh_ptr + o1;
644 	paddr_t ptr2 = h2.bh_ptr + o2;
645 
646 	BUS_SPACE_ASSERT(t, h1, o2, 1);
647 	BUS_SPACE_ASSERT(t, h2, o2, 1);
648 	BUS_SPACE_TRACE(t, h1,
649 	    ("bscr1(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
650 	    (long long)h1.bh_ptr, (long long)o1,
651 	    (long long)h2.bh_ptr, (long long)o2,
652 	    t->asi, c));
653 
654 	asi_set(t->asi);
655         for (; c; c--, ptr1 += 1, ptr2 += 1) {
656 		u_int8_t r = lduba_asi(ptr2);
657 		BUS_SPACE_TRACE(t, h1, (" %2.2x", r));
658 		stba_asi(ptr1, r);
659 	}
660 	BUS_SPACE_TRACE(t, h1, ("\n"));
661 }
662 
663 
664 /*
665  * Implementing u_int16_t
666  */
667 
668 
669 void
670 bus_space_read_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h,
671     bus_size_t o,
672     void *a, size_t c)
673 {
674 	u_int16_t *p = a;
675 
676 	BUS_SPACE_ASSERT(t, h, o, 2);
677 	BUS_SPACE_TRACE(t, h,
678 	    ("bsrm2(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
679 	    (long long)o, t->sasi, c));
680 	c /= sizeof(u_int16_t);
681 
682 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
683 	asi_set(t->sasi);
684 	while (--c > 0) {
685 		u_int16_t r = lduha_asi(h.bh_ptr + o);
686 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
687 		*p++ = r;
688 	}
689 
690 	BUS_SPACE_TRACE(t, h, ("\n"));
691 }
692 
693 void
694 bus_space_write_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h,
695     bus_size_t o,
696     const void *a, size_t c)
697 {
698 	const u_int16_t *p = a;
699 
700 	BUS_SPACE_ASSERT(t, h, o, 2);
701 	BUS_SPACE_TRACE(t, h,
702 	    ("bswm2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
703 	    (long long)o, t->sasi, c));
704 	c /= sizeof(u_int16_t);
705 
706 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
707 	asi_set(t->sasi);
708 	while (--c > 0) {
709 		u_int16_t r = *p++;
710 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
711 		stha_asi(h.bh_ptr + o, r);
712 	}
713 
714 	BUS_SPACE_TRACE(t, h, ("\n"));
715 }
716 
717 void
718 bus_space_set_raw_multi_2(bus_space_tag_t t, bus_space_handle_t h,
719     bus_size_t o, u_int16_t v,
720     size_t c)
721 {
722 	BUS_SPACE_ASSERT(t, h, o, 2);
723 	BUS_SPACE_TRACE(t, h,
724 	    ("bssm2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr,
725 	    (long long)o, t->sasi, c, v));
726 	c /= sizeof(u_int16_t);
727 
728 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
729 	asi_set(t->sasi);
730 	while (--c > 0)
731 		stha_asi(h.bh_ptr + o, v);
732 }
733 
734 void
735 bus_space_read_raw_region_2(bus_space_tag_t t, bus_space_handle_t h,
736     bus_size_t o,
737     void *a, size_t c)
738 {
739 	u_int16_t *p = a;
740 	paddr_t ptr = h.bh_ptr + o;
741 
742 	BUS_SPACE_ASSERT(t, h, o, 2);
743 	BUS_SPACE_TRACE(t, h,
744 	    ("bsrr2(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
745 	    (long long)o, t->sasi, c));
746 	c /= sizeof(u_int16_t);
747 
748 	asi_set(t->sasi);
749 	for (; c; p++, c--, ptr += 2) {
750 		u_int16_t r = lduha_asi(ptr);
751 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
752 		*p = r;
753 	}
754 
755 	BUS_SPACE_TRACE(t, h, ("\n"));
756 }
757 
758 void
759 bus_space_write_raw_region_2(bus_space_tag_t t, bus_space_handle_t h,
760     bus_size_t o,
761     const void *a, size_t c)
762 {
763 	const u_int16_t *p = a;
764 	paddr_t ptr = h.bh_ptr + o;
765 
766 	BUS_SPACE_ASSERT(t, h, o, 2);
767 	BUS_SPACE_TRACE(t, h,
768 	    ("bswr2(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
769 	    (long long)o, t->sasi, c));
770 	c /= sizeof(u_int16_t);
771 
772 	asi_set(t->sasi);
773 	for (; c; p++, c--, ptr += 2) {
774 		u_int16_t r = *p;
775 		BUS_SPACE_TRACE(t, h, (" %4.4x", r));
776 		stha_asi(ptr, r);
777 	}
778 
779 	BUS_SPACE_TRACE(t, h, ("\n"));
780 }
781 
782 void
783 bus_space_set_raw_region_2(bus_space_tag_t t, bus_space_handle_t h,
784     bus_size_t o, u_int16_t v,
785     size_t c)
786 {
787 	paddr_t ptr = h.bh_ptr + o;
788 
789 	BUS_SPACE_ASSERT(t, h, o, 2);
790 	BUS_SPACE_TRACE(t, h,
791 	    ("bssr2(%llx + %llx, %x, %x) <- %4.4x\n", (long long)h.bh_ptr,
792 	    (long long)o, t->sasi, c, v));
793 	c /= sizeof(u_int16_t);
794 
795 	asi_set(t->sasi);
796 	for (; c; c--, ptr += 2)
797 		stha_asi(ptr, v);
798 }
799 
800 void
801 bus_space_copy_raw_region_2(bus_space_tag_t t, bus_space_handle_t h1,
802     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
803     size_t c)
804 {
805 	paddr_t ptr1 = h1.bh_ptr + o1;
806 	paddr_t ptr2 = h2.bh_ptr + o2;
807 
808 	BUS_SPACE_ASSERT(t, h1, o2, 2);
809 	BUS_SPACE_ASSERT(t, h2, o2, 2);
810 	BUS_SPACE_TRACE(t, h1,
811 	    ("bscr2(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
812 	    (long long)h1.bh_ptr, (long long)o1,
813 	    (long long)h2.bh_ptr, (long long)o2,
814 	    t->sasi, c));
815 	c /= sizeof(u_int16_t);
816 
817 	asi_set(t->sasi);
818         for (; c; c--, ptr1 += 2, ptr2 += 2) {
819 		u_int16_t r = lduha_asi(ptr2);
820 		BUS_SPACE_TRACE(t, h1, (" %4.4x", r));
821 		stha_asi(ptr1, r);
822 	}
823 	BUS_SPACE_TRACE(t, h1, ("\n"));
824 }
825 
826 
827 /*
828  * Implementing u_int32_t
829  */
830 
831 
832 void
833 bus_space_read_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
834     bus_size_t o,
835     void *a, size_t c)
836 {
837 	u_int32_t *p = a;
838 
839 	BUS_SPACE_ASSERT(t, h, o, 4);
840 	BUS_SPACE_TRACE(t, h,
841 	    ("bsrm4(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
842 	    (long long)o, t->sasi, c));
843 	c /= sizeof(u_int32_t);
844 
845 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
846 	asi_set(t->sasi);
847 	while (--c > 0) {
848 		u_int32_t r = lduwa_asi(h.bh_ptr + o);
849 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
850 		*p++ = r;
851 	}
852 
853 	BUS_SPACE_TRACE(t, h, ("\n"));
854 }
855 
856 void
857 bus_space_write_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
858     bus_size_t o,
859     const void *a, size_t c)
860 {
861 	const u_int32_t *p = a;
862 
863 	BUS_SPACE_ASSERT(t, h, o, 4);
864 	BUS_SPACE_TRACE(t, h,
865 	    ("bswm4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
866 	    (long long)o, t->sasi, c));
867 	c /= sizeof(u_int32_t);
868 
869 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
870 	asi_set(t->sasi);
871 	while (--c > 0) {
872 		u_int32_t r = *p++;
873 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
874 		stwa_asi(h.bh_ptr + o, r);
875 	}
876 
877 	BUS_SPACE_TRACE(t, h, ("\n"));
878 }
879 
880 void
881 bus_space_set_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
882     bus_size_t o, u_int32_t v,
883     size_t c)
884 {
885 	BUS_SPACE_ASSERT(t, h, o, 4);
886 	BUS_SPACE_TRACE(t, h,
887 	    ("bssm4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
888 	    (long long)o, t->sasi, c, v));
889 	c /= sizeof(u_int32_t);
890 
891 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
892 	asi_set(t->sasi);
893 	while (--c > 0)
894 		stwa_asi(h.bh_ptr + o, v);
895 }
896 
897 void
898 bus_space_read_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
899     bus_size_t o,
900     void *a, size_t c)
901 {
902 	u_int32_t *p = a;
903 	paddr_t ptr = h.bh_ptr + o;
904 
905 	BUS_SPACE_ASSERT(t, h, o, 4);
906 	BUS_SPACE_TRACE(t, h,
907 	    ("bsrr4(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
908 	    (long long)o, t->sasi, c));
909 	c /= sizeof(u_int32_t);
910 
911 	asi_set(t->sasi);
912 	for (; c; p++, c--, ptr += 4) {
913 		u_int32_t r = lduwa_asi(ptr);
914 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
915 		*p = r;
916 	}
917 
918 	BUS_SPACE_TRACE(t, h, ("\n"));
919 }
920 
921 void
922 bus_space_write_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
923     bus_size_t o,
924     const void *a, size_t c)
925 {
926 	const u_int32_t *p = a;
927 	paddr_t ptr = h.bh_ptr + o;
928 
929 	BUS_SPACE_ASSERT(t, h, o, 4);
930 	BUS_SPACE_TRACE(t, h,
931 	    ("bswr4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
932 	    (long long)o, t->sasi, c));
933 	c /= sizeof(u_int32_t);
934 
935 	asi_set(t->sasi);
936 	for (; c; p++, c--, ptr += 4) {
937 		u_int32_t r = *p;
938 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
939 		stwa_asi(ptr, r);
940 	}
941 
942 	BUS_SPACE_TRACE(t, h, ("\n"));
943 }
944 
945 void
946 bus_space_set_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
947     bus_size_t o, u_int32_t v,
948     size_t c)
949 {
950 	paddr_t ptr = h.bh_ptr + o;
951 
952 	BUS_SPACE_ASSERT(t, h, o, 4);
953 	BUS_SPACE_TRACE(t, h,
954 	    ("bssr4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
955 	    (long long)o, t->sasi, c, v));
956 	c /= sizeof(u_int32_t);
957 
958 	asi_set(t->sasi);
959 	for (; c; c--, ptr += 4)
960 		stwa_asi(ptr, v);
961 }
962 
963 void
964 bus_space_copy_raw_region_4(bus_space_tag_t t, bus_space_handle_t h1,
965     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
966     size_t c)
967 {
968 	paddr_t ptr1 = h1.bh_ptr + o1;
969 	paddr_t ptr2 = h2.bh_ptr + o2;
970 
971 	BUS_SPACE_ASSERT(t, h1, o2, 4);
972 	BUS_SPACE_ASSERT(t, h2, o2, 4);
973 	BUS_SPACE_TRACE(t, h1,
974 	    ("bscr4(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
975 	    (long long)h1.bh_ptr, (long long)o1,
976 	    (long long)h2.bh_ptr, (long long)o2,
977 	    t->sasi, c));
978 	c /= sizeof(u_int32_t);
979 
980 	asi_set(t->sasi);
981         for (; c; c--, ptr1 += 4, ptr2 += 4) {
982 		u_int32_t r = lduwa_asi(ptr2);
983 		BUS_SPACE_TRACE(t, h1, (" %8.8x", r));
984 		stwa_asi(ptr1, r);
985 	}
986 	BUS_SPACE_TRACE(t, h1, ("\n"));
987 }
988 
989 
990 /*
991  * Implementing u_int64_t
992  */
993 
994 
995 void
996 bus_space_read_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
997     bus_size_t o,
998     void *a, size_t c)
999 {
1000 	u_int64_t *p = a;
1001 
1002 	BUS_SPACE_ASSERT(t, h, o, 8);
1003 	BUS_SPACE_TRACE(t, h,
1004 	    ("bsrm8(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
1005 	    (long long)o, t->sasi, c));
1006 	c /= sizeof(u_int64_t);
1007 
1008 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1009 	asi_set(t->sasi);
1010 	while (--c > 0) {
1011 		u_int64_t r = ldxa_asi(h.bh_ptr + o);
1012 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1013 		*p++ = r;
1014 	}
1015 
1016 	BUS_SPACE_TRACE(t, h, ("\n"));
1017 }
1018 
1019 void
1020 bus_space_write_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
1021     bus_size_t o,
1022     const void *a, size_t c)
1023 {
1024 	const u_int64_t *p = a;
1025 
1026 	BUS_SPACE_ASSERT(t, h, o, 8);
1027 	BUS_SPACE_TRACE(t, h,
1028 	    ("bswm8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1029 	    (long long)o, t->sasi, c));
1030 	c /= sizeof(u_int64_t);
1031 
1032 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1033 	asi_set(t->sasi);
1034 	while (--c > 0) {
1035 		u_int64_t r = *p++;
1036 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1037 		stxa_asi(h.bh_ptr + o, r);
1038 	}
1039 
1040 	BUS_SPACE_TRACE(t, h, ("\n"));
1041 }
1042 
1043 void
1044 bus_space_set_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
1045     bus_size_t o, u_int64_t v,
1046     size_t c)
1047 {
1048 	BUS_SPACE_ASSERT(t, h, o, 8);
1049 	BUS_SPACE_TRACE(t, h,
1050 	    ("bssm8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
1051 	    (long long)o, t->sasi, c, v));
1052 	c /= sizeof(u_int64_t);
1053 
1054 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1055 	asi_set(t->sasi);
1056 	while (--c > 0)
1057 		stxa_asi(h.bh_ptr + o, v);
1058 }
1059 
1060 void
1061 bus_space_read_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1062     bus_size_t o,
1063     void *a, size_t c)
1064 {
1065 	u_int64_t *p = a;
1066 	paddr_t ptr = h.bh_ptr + o;
1067 
1068 	BUS_SPACE_ASSERT(t, h, o, 8);
1069 	BUS_SPACE_TRACE(t, h,
1070 	    ("bsrr8(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
1071 	    (long long)o, t->sasi, c));
1072 	c /= sizeof(u_int64_t);
1073 
1074 	asi_set(t->sasi);
1075 	for (; c; p++, c--, ptr += 8) {
1076 		u_int64_t r = ldxa_asi(ptr);
1077 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1078 		*p = r;
1079 	}
1080 
1081 	BUS_SPACE_TRACE(t, h, ("\n"));
1082 }
1083 
1084 void
1085 bus_space_write_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1086     bus_size_t o,
1087     const void *a, size_t c)
1088 {
1089 	const u_int64_t *p = a;
1090 	paddr_t ptr = h.bh_ptr + o;
1091 
1092 	BUS_SPACE_ASSERT(t, h, o, 8);
1093 	BUS_SPACE_TRACE(t, h,
1094 	    ("bswr8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1095 	    (long long)o, t->sasi, c));
1096 	c /= sizeof(u_int64_t);
1097 
1098 	asi_set(t->sasi);
1099 	for (; c; p++, c--, ptr += 8) {
1100 		u_int64_t r = *p;
1101 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1102 		stxa_asi(ptr, r);
1103 	}
1104 
1105 	BUS_SPACE_TRACE(t, h, ("\n"));
1106 }
1107 
1108 void
1109 bus_space_set_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1110     bus_size_t o, u_int64_t v,
1111     size_t c)
1112 {
1113 	paddr_t ptr = h.bh_ptr + o;
1114 
1115 	BUS_SPACE_ASSERT(t, h, o, 8);
1116 	BUS_SPACE_TRACE(t, h,
1117 	    ("bssr8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
1118 	    (long long)o, t->sasi, c, v));
1119 	c /= sizeof(u_int64_t);
1120 
1121 	asi_set(t->sasi);
1122 	for (; c; c--, ptr += 8)
1123 		stxa_asi(ptr, v);
1124 }
1125 
1126 void
1127 bus_space_copy_raw_region_8(bus_space_tag_t t, bus_space_handle_t h1,
1128     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
1129     size_t c)
1130 {
1131 	paddr_t ptr1 = h1.bh_ptr + o1;
1132 	paddr_t ptr2 = h2.bh_ptr + o2;
1133 
1134 	BUS_SPACE_ASSERT(t, h1, o2, 8);
1135 	BUS_SPACE_ASSERT(t, h2, o2, 8);
1136 	BUS_SPACE_TRACE(t, h1,
1137 	    ("bscr8(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
1138 	    (long long)h1.bh_ptr, (long long)o1,
1139 	    (long long)h2.bh_ptr, (long long)o2,
1140 	    t->sasi, c));
1141 	c /= sizeof(u_int64_t);
1142 
1143 	asi_set(t->sasi);
1144         for (; c; c--, ptr1 += 8, ptr2 += 8) {
1145 		u_int64_t r = ldxa_asi(ptr2);
1146 		BUS_SPACE_TRACE(t, h1, (" %16.16llx", r));
1147 		stxa_asi(ptr1, r);
1148 	}
1149 	BUS_SPACE_TRACE(t, h1, ("\n"));
1150 }
1151 
1152 
1153 /*
1154  * Implementing u_int8_t
1155  */
1156 
1157 
1158 void
1159 bus_space_read_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1160     bus_size_t o,
1161     void *a, size_t c)
1162 {
1163 	u_int8_t *p = a;
1164 
1165 	BUS_SPACE_ASSERT(t, h, o, 1);
1166 	BUS_SPACE_TRACE(t, h,
1167 	    ("bsrm1(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
1168 	    (long long)o, t->sasi, c));
1169 	c /= sizeof(u_int8_t);
1170 
1171 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1172 	asi_set(t->sasi);
1173 	while (--c > 0) {
1174 		u_int8_t r = lduba_asi(h.bh_ptr + o);
1175 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1176 		*p++ = r;
1177 	}
1178 
1179 	BUS_SPACE_TRACE(t, h, ("\n"));
1180 }
1181 
1182 void
1183 bus_space_write_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1184     bus_size_t o,
1185     const void *a, size_t c)
1186 {
1187 	const u_int8_t *p = a;
1188 
1189 	BUS_SPACE_ASSERT(t, h, o, 1);
1190 	BUS_SPACE_TRACE(t, h,
1191 	    ("bswm1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1192 	    (long long)o, t->sasi, c));
1193 	c /= sizeof(u_int8_t);
1194 
1195 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1196 	asi_set(t->sasi);
1197 	while (--c > 0) {
1198 		u_int8_t r = *p++;
1199 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1200 		stba_asi(h.bh_ptr + o, r);
1201 	}
1202 
1203 	BUS_SPACE_TRACE(t, h, ("\n"));
1204 }
1205 
1206 void
1207 bus_space_set_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1208     bus_size_t o, u_int8_t v,
1209     size_t c)
1210 {
1211 	BUS_SPACE_ASSERT(t, h, o, 1);
1212 	BUS_SPACE_TRACE(t, h,
1213 	    ("bssm1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
1214 	    (long long)o, t->sasi, c, v));
1215 	c /= sizeof(u_int8_t);
1216 
1217 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1218 	asi_set(t->sasi);
1219 	while (--c > 0)
1220 		stba_asi(h.bh_ptr + o, v);
1221 }
1222 
1223 void
1224 bus_space_read_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1225     bus_size_t o,
1226     void *a, size_t c)
1227 {
1228 	u_int8_t *p = a;
1229 	paddr_t ptr = h.bh_ptr + o;
1230 
1231 	BUS_SPACE_ASSERT(t, h, o, 1);
1232 	BUS_SPACE_TRACE(t, h,
1233 	    ("bsrr1(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
1234 	    (long long)o, t->sasi, c));
1235 	c /= sizeof(u_int8_t);
1236 
1237 	asi_set(t->sasi);
1238 	for (; c; p++, c--, ptr += 1) {
1239 		u_int8_t r = lduba_asi(ptr);
1240 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1241 		*p = r;
1242 	}
1243 
1244 	BUS_SPACE_TRACE(t, h, ("\n"));
1245 }
1246 
1247 void
1248 bus_space_write_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1249     bus_size_t o,
1250     const void *a, size_t c)
1251 {
1252 	const u_int8_t *p = a;
1253 	paddr_t ptr = h.bh_ptr + o;
1254 
1255 	BUS_SPACE_ASSERT(t, h, o, 1);
1256 	BUS_SPACE_TRACE(t, h,
1257 	    ("bswr1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1258 	    (long long)o, t->sasi, c));
1259 	c /= sizeof(u_int8_t);
1260 
1261 	asi_set(t->sasi);
1262 	for (; c; p++, c--, ptr += 1) {
1263 		u_int8_t r = *p;
1264 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1265 		stba_asi(ptr, r);
1266 	}
1267 
1268 	BUS_SPACE_TRACE(t, h, ("\n"));
1269 }
1270 
1271 void
1272 bus_space_set_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1273     bus_size_t o, u_int8_t v,
1274     size_t c)
1275 {
1276 	paddr_t ptr = h.bh_ptr + o;
1277 
1278 	BUS_SPACE_ASSERT(t, h, o, 1);
1279 	BUS_SPACE_TRACE(t, h,
1280 	    ("bssr1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
1281 	    (long long)o, t->sasi, c, v));
1282 	c /= sizeof(u_int8_t);
1283 
1284 	asi_set(t->sasi);
1285 	for (; c; c--, ptr += 1)
1286 		stba_asi(ptr, v);
1287 }
1288 
1289 void
1290 bus_space_copy_raw_region_1(bus_space_tag_t t, bus_space_handle_t h1,
1291     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
1292     size_t c)
1293 {
1294 	paddr_t ptr1 = h1.bh_ptr + o1;
1295 	paddr_t ptr2 = h2.bh_ptr + o2;
1296 
1297 	BUS_SPACE_ASSERT(t, h1, o2, 1);
1298 	BUS_SPACE_ASSERT(t, h2, o2, 1);
1299 	BUS_SPACE_TRACE(t, h1,
1300 	    ("bscr1(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
1301 	    (long long)h1.bh_ptr, (long long)o1,
1302 	    (long long)h2.bh_ptr, (long long)o2,
1303 	    t->sasi, c));
1304 	c /= sizeof(u_int8_t);
1305 
1306 	asi_set(t->sasi);
1307         for (; c; c--, ptr1 += 1, ptr2 += 1) {
1308 		u_int8_t r = lduba_asi(ptr2);
1309 		BUS_SPACE_TRACE(t, h1, (" %2.2x", r));
1310 		stba_asi(ptr1, r);
1311 	}
1312 	BUS_SPACE_TRACE(t, h1, ("\n"));
1313 }
1314 
1315 
1316