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