Annotation of sys/arch/sparc64/sparc64/busop.c, Revision 1.1.1.1
1.1 nbrk 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:
CVSweb