xref: /openbsd/sys/arch/sparc64/sparc64/busop.c (revision 66f9b62b)
1 /*
2  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
3  */
4 
5 /*      $OpenBSD: busop.c,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 #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
bus_space_read_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t * a,bus_size_t c)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
bus_space_write_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int16_t * a,bus_size_t c)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
bus_space_set_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v,bus_size_t c)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
bus_space_read_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t * a,bus_size_t c)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
bus_space_write_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int16_t * a,bus_size_t c)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
bus_space_set_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v,bus_size_t c)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
bus_space_copy_2(bus_space_tag_t t,bus_space_handle_t h1,bus_size_t o1,bus_space_handle_t h2,bus_size_t o2,bus_size_t c)171 bus_space_copy_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
bus_space_read_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t * a,bus_size_t c)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
bus_space_write_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int32_t * a,bus_size_t c)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
bus_space_set_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v,bus_size_t c)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
bus_space_read_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t * a,bus_size_t c)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
bus_space_write_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int32_t * a,bus_size_t c)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
bus_space_set_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v,bus_size_t c)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
bus_space_copy_4(bus_space_tag_t t,bus_space_handle_t h1,bus_size_t o1,bus_space_handle_t h2,bus_size_t o2,bus_size_t c)327 bus_space_copy_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
bus_space_read_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t * a,bus_size_t c)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
bus_space_write_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int64_t * a,bus_size_t c)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
bus_space_set_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v,bus_size_t c)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
bus_space_read_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t * a,bus_size_t c)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
bus_space_write_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int64_t * a,bus_size_t c)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
bus_space_set_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v,bus_size_t c)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
bus_space_copy_8(bus_space_tag_t t,bus_space_handle_t h1,bus_size_t o1,bus_space_handle_t h2,bus_size_t o2,bus_size_t c)483 bus_space_copy_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
bus_space_read_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t * a,bus_size_t c)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
bus_space_write_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int8_t * a,bus_size_t c)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
bus_space_set_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v,bus_size_t c)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
bus_space_read_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t * a,bus_size_t c)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
bus_space_write_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const u_int8_t * a,bus_size_t c)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
bus_space_set_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v,bus_size_t c)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
bus_space_copy_1(bus_space_tag_t t,bus_space_handle_t h1,bus_size_t o1,bus_space_handle_t h2,bus_size_t o2,bus_size_t c)639 bus_space_copy_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
bus_space_read_raw_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)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
bus_space_write_raw_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)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
bus_space_set_raw_multi_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v,size_t c)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
bus_space_read_raw_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)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
bus_space_write_raw_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)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
bus_space_set_raw_region_2(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int16_t v,size_t c)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 
801 
802 /*
803  * Implementing u_int32_t
804  */
805 
806 
807 void
bus_space_read_raw_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)808 bus_space_read_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
809     bus_size_t o,
810     void *a, size_t c)
811 {
812 	u_int32_t *p = a;
813 
814 	BUS_SPACE_ASSERT(t, h, o, 4);
815 	BUS_SPACE_TRACE(t, h,
816 	    ("bsrm4(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
817 	    (long long)o, t->sasi, c));
818 	c /= sizeof(u_int32_t);
819 
820 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
821 	asi_set(t->sasi);
822 	while (--c > 0) {
823 		u_int32_t r = lduwa_asi(h.bh_ptr + o);
824 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
825 		*p++ = r;
826 	}
827 
828 	BUS_SPACE_TRACE(t, h, ("\n"));
829 }
830 
831 void
bus_space_write_raw_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)832 bus_space_write_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
833     bus_size_t o,
834     const void *a, size_t c)
835 {
836 	const u_int32_t *p = a;
837 
838 	BUS_SPACE_ASSERT(t, h, o, 4);
839 	BUS_SPACE_TRACE(t, h,
840 	    ("bswm4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
841 	    (long long)o, t->sasi, c));
842 	c /= sizeof(u_int32_t);
843 
844 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
845 	asi_set(t->sasi);
846 	while (--c > 0) {
847 		u_int32_t r = *p++;
848 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
849 		stwa_asi(h.bh_ptr + o, r);
850 	}
851 
852 	BUS_SPACE_TRACE(t, h, ("\n"));
853 }
854 
855 void
bus_space_set_raw_multi_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v,size_t c)856 bus_space_set_raw_multi_4(bus_space_tag_t t, bus_space_handle_t h,
857     bus_size_t o, u_int32_t v,
858     size_t c)
859 {
860 	BUS_SPACE_ASSERT(t, h, o, 4);
861 	BUS_SPACE_TRACE(t, h,
862 	    ("bssm4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
863 	    (long long)o, t->sasi, c, v));
864 	c /= sizeof(u_int32_t);
865 
866 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
867 	asi_set(t->sasi);
868 	while (--c > 0)
869 		stwa_asi(h.bh_ptr + o, v);
870 }
871 
872 void
bus_space_read_raw_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)873 bus_space_read_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
874     bus_size_t o,
875     void *a, size_t c)
876 {
877 	u_int32_t *p = a;
878 	paddr_t ptr = h.bh_ptr + o;
879 
880 	BUS_SPACE_ASSERT(t, h, o, 4);
881 	BUS_SPACE_TRACE(t, h,
882 	    ("bsrr4(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
883 	    (long long)o, t->sasi, c));
884 	c /= sizeof(u_int32_t);
885 
886 	asi_set(t->sasi);
887 	for (; c; p++, c--, ptr += 4) {
888 		u_int32_t r = lduwa_asi(ptr);
889 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
890 		*p = r;
891 	}
892 
893 	BUS_SPACE_TRACE(t, h, ("\n"));
894 }
895 
896 void
bus_space_write_raw_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)897 bus_space_write_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
898     bus_size_t o,
899     const void *a, size_t c)
900 {
901 	const u_int32_t *p = a;
902 	paddr_t ptr = h.bh_ptr + o;
903 
904 	BUS_SPACE_ASSERT(t, h, o, 4);
905 	BUS_SPACE_TRACE(t, h,
906 	    ("bswr4(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
907 	    (long long)o, t->sasi, c));
908 	c /= sizeof(u_int32_t);
909 
910 	asi_set(t->sasi);
911 	for (; c; p++, c--, ptr += 4) {
912 		u_int32_t r = *p;
913 		BUS_SPACE_TRACE(t, h, (" %8.8x", r));
914 		stwa_asi(ptr, r);
915 	}
916 
917 	BUS_SPACE_TRACE(t, h, ("\n"));
918 }
919 
920 void
bus_space_set_raw_region_4(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int32_t v,size_t c)921 bus_space_set_raw_region_4(bus_space_tag_t t, bus_space_handle_t h,
922     bus_size_t o, u_int32_t v,
923     size_t c)
924 {
925 	paddr_t ptr = h.bh_ptr + o;
926 
927 	BUS_SPACE_ASSERT(t, h, o, 4);
928 	BUS_SPACE_TRACE(t, h,
929 	    ("bssr4(%llx + %llx, %x, %x) <- %8.8x\n", (long long)h.bh_ptr,
930 	    (long long)o, t->sasi, c, v));
931 	c /= sizeof(u_int32_t);
932 
933 	asi_set(t->sasi);
934 	for (; c; c--, ptr += 4)
935 		stwa_asi(ptr, v);
936 }
937 
938 
939 
940 /*
941  * Implementing u_int64_t
942  */
943 
944 
945 void
bus_space_read_raw_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)946 bus_space_read_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
947     bus_size_t o,
948     void *a, size_t c)
949 {
950 	u_int64_t *p = a;
951 
952 	BUS_SPACE_ASSERT(t, h, o, 8);
953 	BUS_SPACE_TRACE(t, h,
954 	    ("bsrm8(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
955 	    (long long)o, t->sasi, c));
956 	c /= sizeof(u_int64_t);
957 
958 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
959 	asi_set(t->sasi);
960 	while (--c > 0) {
961 		u_int64_t r = ldxa_asi(h.bh_ptr + o);
962 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
963 		*p++ = r;
964 	}
965 
966 	BUS_SPACE_TRACE(t, h, ("\n"));
967 }
968 
969 void
bus_space_write_raw_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)970 bus_space_write_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
971     bus_size_t o,
972     const void *a, size_t c)
973 {
974 	const u_int64_t *p = a;
975 
976 	BUS_SPACE_ASSERT(t, h, o, 8);
977 	BUS_SPACE_TRACE(t, h,
978 	    ("bswm8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
979 	    (long long)o, t->sasi, c));
980 	c /= sizeof(u_int64_t);
981 
982 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
983 	asi_set(t->sasi);
984 	while (--c > 0) {
985 		u_int64_t r = *p++;
986 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
987 		stxa_asi(h.bh_ptr + o, r);
988 	}
989 
990 	BUS_SPACE_TRACE(t, h, ("\n"));
991 }
992 
993 void
bus_space_set_raw_multi_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v,size_t c)994 bus_space_set_raw_multi_8(bus_space_tag_t t, bus_space_handle_t h,
995     bus_size_t o, u_int64_t v,
996     size_t c)
997 {
998 	BUS_SPACE_ASSERT(t, h, o, 8);
999 	BUS_SPACE_TRACE(t, h,
1000 	    ("bssm8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
1001 	    (long long)o, t->sasi, c, v));
1002 	c /= sizeof(u_int64_t);
1003 
1004 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1005 	asi_set(t->sasi);
1006 	while (--c > 0)
1007 		stxa_asi(h.bh_ptr + o, v);
1008 }
1009 
1010 void
bus_space_read_raw_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)1011 bus_space_read_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1012     bus_size_t o,
1013     void *a, size_t c)
1014 {
1015 	u_int64_t *p = a;
1016 	paddr_t ptr = h.bh_ptr + o;
1017 
1018 	BUS_SPACE_ASSERT(t, h, o, 8);
1019 	BUS_SPACE_TRACE(t, h,
1020 	    ("bsrr8(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
1021 	    (long long)o, t->sasi, c));
1022 	c /= sizeof(u_int64_t);
1023 
1024 	asi_set(t->sasi);
1025 	for (; c; p++, c--, ptr += 8) {
1026 		u_int64_t r = ldxa_asi(ptr);
1027 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1028 		*p = r;
1029 	}
1030 
1031 	BUS_SPACE_TRACE(t, h, ("\n"));
1032 }
1033 
1034 void
bus_space_write_raw_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)1035 bus_space_write_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1036     bus_size_t o,
1037     const void *a, size_t c)
1038 {
1039 	const u_int64_t *p = a;
1040 	paddr_t ptr = h.bh_ptr + o;
1041 
1042 	BUS_SPACE_ASSERT(t, h, o, 8);
1043 	BUS_SPACE_TRACE(t, h,
1044 	    ("bswr8(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1045 	    (long long)o, t->sasi, c));
1046 	c /= sizeof(u_int64_t);
1047 
1048 	asi_set(t->sasi);
1049 	for (; c; p++, c--, ptr += 8) {
1050 		u_int64_t r = *p;
1051 		BUS_SPACE_TRACE(t, h, (" %16.16llx", r));
1052 		stxa_asi(ptr, r);
1053 	}
1054 
1055 	BUS_SPACE_TRACE(t, h, ("\n"));
1056 }
1057 
1058 void
bus_space_set_raw_region_8(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int64_t v,size_t c)1059 bus_space_set_raw_region_8(bus_space_tag_t t, bus_space_handle_t h,
1060     bus_size_t o, u_int64_t v,
1061     size_t c)
1062 {
1063 	paddr_t ptr = h.bh_ptr + o;
1064 
1065 	BUS_SPACE_ASSERT(t, h, o, 8);
1066 	BUS_SPACE_TRACE(t, h,
1067 	    ("bssr8(%llx + %llx, %x, %x) <- %16.16llx\n", (long long)h.bh_ptr,
1068 	    (long long)o, t->sasi, c, v));
1069 	c /= sizeof(u_int64_t);
1070 
1071 	asi_set(t->sasi);
1072 	for (; c; c--, ptr += 8)
1073 		stxa_asi(ptr, v);
1074 }
1075 
1076 
1077 
1078 /*
1079  * Implementing u_int8_t
1080  */
1081 
1082 
1083 void
bus_space_read_raw_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)1084 bus_space_read_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1085     bus_size_t o,
1086     void *a, size_t c)
1087 {
1088 	u_int8_t *p = a;
1089 
1090 	BUS_SPACE_ASSERT(t, h, o, 1);
1091 	BUS_SPACE_TRACE(t, h,
1092 	    ("bsrm1(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
1093 	    (long long)o, t->sasi, c));
1094 	c /= sizeof(u_int8_t);
1095 
1096 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1097 	asi_set(t->sasi);
1098 	while (--c > 0) {
1099 		u_int8_t r = lduba_asi(h.bh_ptr + o);
1100 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1101 		*p++ = r;
1102 	}
1103 
1104 	BUS_SPACE_TRACE(t, h, ("\n"));
1105 }
1106 
1107 void
bus_space_write_raw_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)1108 bus_space_write_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1109     bus_size_t o,
1110     const void *a, size_t c)
1111 {
1112 	const u_int8_t *p = a;
1113 
1114 	BUS_SPACE_ASSERT(t, h, o, 1);
1115 	BUS_SPACE_TRACE(t, h,
1116 	    ("bswm1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1117 	    (long long)o, t->sasi, c));
1118 	c /= sizeof(u_int8_t);
1119 
1120 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1121 	asi_set(t->sasi);
1122 	while (--c > 0) {
1123 		u_int8_t r = *p++;
1124 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1125 		stba_asi(h.bh_ptr + o, r);
1126 	}
1127 
1128 	BUS_SPACE_TRACE(t, h, ("\n"));
1129 }
1130 
1131 void
bus_space_set_raw_multi_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v,size_t c)1132 bus_space_set_raw_multi_1(bus_space_tag_t t, bus_space_handle_t h,
1133     bus_size_t o, u_int8_t v,
1134     size_t c)
1135 {
1136 	BUS_SPACE_ASSERT(t, h, o, 1);
1137 	BUS_SPACE_TRACE(t, h,
1138 	    ("bssm1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
1139 	    (long long)o, t->sasi, c, v));
1140 	c /= sizeof(u_int8_t);
1141 
1142 	++c;  /* Looping on "--c" is slightly faster than on "c--" */
1143 	asi_set(t->sasi);
1144 	while (--c > 0)
1145 		stba_asi(h.bh_ptr + o, v);
1146 }
1147 
1148 void
bus_space_read_raw_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,void * a,size_t c)1149 bus_space_read_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1150     bus_size_t o,
1151     void *a, size_t c)
1152 {
1153 	u_int8_t *p = a;
1154 	paddr_t ptr = h.bh_ptr + o;
1155 
1156 	BUS_SPACE_ASSERT(t, h, o, 1);
1157 	BUS_SPACE_TRACE(t, h,
1158 	    ("bsrr1(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
1159 	    (long long)o, t->sasi, c));
1160 	c /= sizeof(u_int8_t);
1161 
1162 	asi_set(t->sasi);
1163 	for (; c; p++, c--, ptr += 1) {
1164 		u_int8_t r = lduba_asi(ptr);
1165 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1166 		*p = r;
1167 	}
1168 
1169 	BUS_SPACE_TRACE(t, h, ("\n"));
1170 }
1171 
1172 void
bus_space_write_raw_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,const void * a,size_t c)1173 bus_space_write_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1174     bus_size_t o,
1175     const void *a, size_t c)
1176 {
1177 	const u_int8_t *p = a;
1178 	paddr_t ptr = h.bh_ptr + o;
1179 
1180 	BUS_SPACE_ASSERT(t, h, o, 1);
1181 	BUS_SPACE_TRACE(t, h,
1182 	    ("bswr1(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
1183 	    (long long)o, t->sasi, c));
1184 	c /= sizeof(u_int8_t);
1185 
1186 	asi_set(t->sasi);
1187 	for (; c; p++, c--, ptr += 1) {
1188 		u_int8_t r = *p;
1189 		BUS_SPACE_TRACE(t, h, (" %2.2x", r));
1190 		stba_asi(ptr, r);
1191 	}
1192 
1193 	BUS_SPACE_TRACE(t, h, ("\n"));
1194 }
1195 
1196 void
bus_space_set_raw_region_1(bus_space_tag_t t,bus_space_handle_t h,bus_size_t o,u_int8_t v,size_t c)1197 bus_space_set_raw_region_1(bus_space_tag_t t, bus_space_handle_t h,
1198     bus_size_t o, u_int8_t v,
1199     size_t c)
1200 {
1201 	paddr_t ptr = h.bh_ptr + o;
1202 
1203 	BUS_SPACE_ASSERT(t, h, o, 1);
1204 	BUS_SPACE_TRACE(t, h,
1205 	    ("bssr1(%llx + %llx, %x, %x) <- %2.2x\n", (long long)h.bh_ptr,
1206 	    (long long)o, t->sasi, c, v));
1207 	c /= sizeof(u_int8_t);
1208 
1209 	asi_set(t->sasi);
1210 	for (; c; c--, ptr += 1)
1211 		stba_asi(ptr, v);
1212 }
1213 
1214 
1215 
1216