]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/mips/nlm/bus_space_rmi_pci.c
Update nvi to 2.2.0-05ed8b9
[FreeBSD/FreeBSD.git] / sys / mips / nlm / bus_space_rmi_pci.c
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3  *
4  * Copyright 2003-2011 Netlogic Microsystems (Netlogic). All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are
9  * met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY Netlogic Microsystems ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NETLOGIC OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28  * THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  * NETLOGIC_BSD */
31
32 #include <sys/cdefs.h>
33 __FBSDID("$FreeBSD$");
34
35 #include <sys/param.h>
36 #include <sys/systm.h>
37 #include <sys/bus.h>
38 #include <sys/kernel.h>
39 #include <sys/endian.h>
40 #include <sys/malloc.h>
41 #include <sys/ktr.h>
42
43 #include <vm/vm.h>
44 #include <vm/pmap.h>
45 #include <vm/vm_kern.h>
46 #include <vm/vm_extern.h>
47
48 #include <machine/bus.h>
49 #include <machine/cache.h>
50
51 static int
52 rmi_pci_bus_space_map(void *t, bus_addr_t addr,
53     bus_size_t size, int flags,
54     bus_space_handle_t * bshp);
55
56 static void
57 rmi_pci_bus_space_unmap(void *t, bus_space_handle_t bsh,
58     bus_size_t size);
59
60 static int
61 rmi_pci_bus_space_subregion(void *t,
62     bus_space_handle_t bsh,
63     bus_size_t offset, bus_size_t size,
64     bus_space_handle_t * nbshp);
65
66 static u_int8_t
67 rmi_pci_bus_space_read_1(void *t,
68     bus_space_handle_t handle,
69     bus_size_t offset);
70
71 static u_int16_t
72 rmi_pci_bus_space_read_2(void *t,
73     bus_space_handle_t handle,
74     bus_size_t offset);
75
76 static u_int32_t
77 rmi_pci_bus_space_read_4(void *t,
78     bus_space_handle_t handle,
79     bus_size_t offset);
80
81 static void
82 rmi_pci_bus_space_read_multi_1(void *t,
83     bus_space_handle_t handle,
84     bus_size_t offset, u_int8_t * addr,
85     size_t count);
86
87 static void
88 rmi_pci_bus_space_read_multi_2(void *t,
89     bus_space_handle_t handle,
90     bus_size_t offset, u_int16_t * addr,
91     size_t count);
92
93 static void
94 rmi_pci_bus_space_read_multi_4(void *t,
95     bus_space_handle_t handle,
96     bus_size_t offset, u_int32_t * addr,
97     size_t count);
98
99 static void
100 rmi_pci_bus_space_read_region_1(void *t,
101     bus_space_handle_t bsh,
102     bus_size_t offset, u_int8_t * addr,
103     size_t count);
104
105 static void
106 rmi_pci_bus_space_read_region_2(void *t,
107     bus_space_handle_t bsh,
108     bus_size_t offset, u_int16_t * addr,
109     size_t count);
110
111 static void
112 rmi_pci_bus_space_read_region_4(void *t,
113     bus_space_handle_t bsh,
114     bus_size_t offset, u_int32_t * addr,
115     size_t count);
116
117 static void
118 rmi_pci_bus_space_write_1(void *t,
119     bus_space_handle_t handle,
120     bus_size_t offset, u_int8_t value);
121
122 static void
123 rmi_pci_bus_space_write_2(void *t,
124     bus_space_handle_t handle,
125     bus_size_t offset, u_int16_t value);
126
127 static void
128 rmi_pci_bus_space_write_4(void *t,
129     bus_space_handle_t handle,
130     bus_size_t offset, u_int32_t value);
131
132 static void
133 rmi_pci_bus_space_write_multi_1(void *t,
134     bus_space_handle_t handle,
135     bus_size_t offset,
136     const u_int8_t * addr,
137     size_t count);
138
139 static void
140 rmi_pci_bus_space_write_multi_2(void *t,
141     bus_space_handle_t handle,
142     bus_size_t offset,
143     const u_int16_t * addr,
144     size_t count);
145
146 static void
147 rmi_pci_bus_space_write_multi_4(void *t,
148     bus_space_handle_t handle,
149     bus_size_t offset,
150     const u_int32_t * addr,
151     size_t count);
152
153 static void
154 rmi_pci_bus_space_write_region_2(void *t,
155     bus_space_handle_t bsh,
156     bus_size_t offset,
157     const u_int16_t * addr,
158     size_t count);
159
160 static void
161 rmi_pci_bus_space_write_region_4(void *t,
162     bus_space_handle_t bsh,
163     bus_size_t offset,
164     const u_int32_t * addr,
165     size_t count);
166
167 static void
168 rmi_pci_bus_space_set_region_2(void *t,
169     bus_space_handle_t bsh,
170     bus_size_t offset, u_int16_t value,
171     size_t count);
172
173 static void
174 rmi_pci_bus_space_set_region_4(void *t,
175     bus_space_handle_t bsh,
176     bus_size_t offset, u_int32_t value,
177     size_t count);
178
179 static void
180 rmi_pci_bus_space_barrier(void *tag __unused, bus_space_handle_t bsh __unused,
181     bus_size_t offset __unused, bus_size_t len __unused, int flags);
182
183 static void
184 rmi_pci_bus_space_copy_region_2(void *t,
185     bus_space_handle_t bsh1,
186     bus_size_t off1,
187     bus_space_handle_t bsh2,
188     bus_size_t off2, size_t count);
189
190 u_int8_t
191 rmi_pci_bus_space_read_stream_1(void *t, bus_space_handle_t handle,
192     bus_size_t offset);
193
194 static u_int16_t
195 rmi_pci_bus_space_read_stream_2(void *t, bus_space_handle_t handle,
196     bus_size_t offset);
197
198 static u_int32_t
199 rmi_pci_bus_space_read_stream_4(void *t, bus_space_handle_t handle,
200     bus_size_t offset);
201
202 static void
203 rmi_pci_bus_space_read_multi_stream_1(void *t,
204     bus_space_handle_t handle,
205     bus_size_t offset, u_int8_t * addr,
206     size_t count);
207
208 static void
209 rmi_pci_bus_space_read_multi_stream_2(void *t,
210     bus_space_handle_t handle,
211     bus_size_t offset, u_int16_t * addr,
212     size_t count);
213
214 static void
215 rmi_pci_bus_space_read_multi_stream_4(void *t,
216     bus_space_handle_t handle,
217     bus_size_t offset, u_int32_t * addr,
218     size_t count);
219
220 void
221 rmi_pci_bus_space_write_stream_1(void *t, bus_space_handle_t bsh,
222     bus_size_t offset, u_int8_t value);
223
224 static void
225 rmi_pci_bus_space_write_stream_2(void *t, bus_space_handle_t handle,
226     bus_size_t offset, u_int16_t value);
227
228 static void
229 rmi_pci_bus_space_write_stream_4(void *t, bus_space_handle_t handle,
230     bus_size_t offset, u_int32_t value);
231
232 static void
233 rmi_pci_bus_space_write_multi_stream_1(void *t,
234     bus_space_handle_t handle,
235     bus_size_t offset,
236     const u_int8_t * addr,
237     size_t count);
238
239 static void
240 rmi_pci_bus_space_write_multi_stream_2(void *t,
241     bus_space_handle_t handle,
242     bus_size_t offset,
243     const u_int16_t * addr,
244     size_t count);
245
246 static void
247 rmi_pci_bus_space_write_multi_stream_4(void *t,
248     bus_space_handle_t handle,
249     bus_size_t offset,
250     const u_int32_t * addr,
251     size_t count);
252
253 #define TODO() printf("XLR memory bus space function '%s' unimplemented\n", __func__)
254
255 static struct bus_space local_rmi_pci_bus_space = {
256         /* cookie */
257         (void *)0,
258
259         /* mapping/unmapping */
260         rmi_pci_bus_space_map,
261         rmi_pci_bus_space_unmap,
262         rmi_pci_bus_space_subregion,
263
264         /* allocation/deallocation */
265         NULL,
266         NULL,
267
268         /* barrier */
269         rmi_pci_bus_space_barrier,
270
271         /* read (single) */
272         rmi_pci_bus_space_read_1,
273         rmi_pci_bus_space_read_2,
274         rmi_pci_bus_space_read_4,
275         NULL,
276
277         /* read multiple */
278         rmi_pci_bus_space_read_multi_1,
279         rmi_pci_bus_space_read_multi_2,
280         rmi_pci_bus_space_read_multi_4,
281         NULL,
282
283         /* read region */
284         rmi_pci_bus_space_read_region_1,
285         rmi_pci_bus_space_read_region_2,
286         rmi_pci_bus_space_read_region_4,
287         NULL,
288
289         /* write (single) */
290         rmi_pci_bus_space_write_1,
291         rmi_pci_bus_space_write_2,
292         rmi_pci_bus_space_write_4,
293         NULL,
294
295         /* write multiple */
296         rmi_pci_bus_space_write_multi_1,
297         rmi_pci_bus_space_write_multi_2,
298         rmi_pci_bus_space_write_multi_4,
299         NULL,
300
301         /* write region */
302         NULL,
303         rmi_pci_bus_space_write_region_2,
304         rmi_pci_bus_space_write_region_4,
305         NULL,
306
307         /* set multiple */
308         NULL,
309         NULL,
310         NULL,
311         NULL,
312
313         /* set region */
314         NULL,
315         rmi_pci_bus_space_set_region_2,
316         rmi_pci_bus_space_set_region_4,
317         NULL,
318
319         /* copy */
320         NULL,
321         rmi_pci_bus_space_copy_region_2,
322         NULL,
323         NULL,
324
325         /* read (single) stream */
326         rmi_pci_bus_space_read_stream_1,
327         rmi_pci_bus_space_read_stream_2,
328         rmi_pci_bus_space_read_stream_4,
329         NULL,
330
331         /* read multiple stream */
332         rmi_pci_bus_space_read_multi_stream_1,
333         rmi_pci_bus_space_read_multi_stream_2,
334         rmi_pci_bus_space_read_multi_stream_4,
335         NULL,
336
337         /* read region stream */
338         rmi_pci_bus_space_read_region_1,
339         rmi_pci_bus_space_read_region_2,
340         rmi_pci_bus_space_read_region_4,
341         NULL,
342
343         /* write (single) stream */
344         rmi_pci_bus_space_write_stream_1,
345         rmi_pci_bus_space_write_stream_2,
346         rmi_pci_bus_space_write_stream_4,
347         NULL,
348
349         /* write multiple stream */
350         rmi_pci_bus_space_write_multi_stream_1,
351         rmi_pci_bus_space_write_multi_stream_2,
352         rmi_pci_bus_space_write_multi_stream_4,
353         NULL,
354
355         /* write region stream */
356         NULL,
357         rmi_pci_bus_space_write_region_2,
358         rmi_pci_bus_space_write_region_4,
359         NULL,
360 };
361
362 /* generic bus_space tag */
363 bus_space_tag_t rmi_pci_bus_space = &local_rmi_pci_bus_space;
364
365 /*
366  * Map a region of device bus space into CPU virtual address space.
367  */
368 static int
369 rmi_pci_bus_space_map(void *t __unused, bus_addr_t addr,
370     bus_size_t size __unused, int flags __unused,
371     bus_space_handle_t * bshp)
372 {
373         *bshp = addr;
374         return (0);
375 }
376
377 /*
378  * Unmap a region of device bus space.
379  */
380 static void
381 rmi_pci_bus_space_unmap(void *t __unused, bus_space_handle_t bsh __unused,
382     bus_size_t size __unused)
383 {
384 }
385
386 /*
387  * Get a new handle for a subregion of an already-mapped area of bus space.
388  */
389
390 static int
391 rmi_pci_bus_space_subregion(void *t __unused, bus_space_handle_t bsh,
392     bus_size_t offset, bus_size_t size __unused,
393     bus_space_handle_t * nbshp)
394 {
395         *nbshp = bsh + offset;
396         return (0);
397 }
398
399 /*
400  * Read a 1, 2, 4, or 8 byte quantity from bus space
401  * described by tag/handle/offset.
402  */
403
404 static u_int8_t
405 rmi_pci_bus_space_read_1(void *tag, bus_space_handle_t handle,
406     bus_size_t offset)
407 {
408         return (u_int8_t) (*(volatile u_int8_t *)(handle + offset));
409 }
410
411 static u_int16_t
412 rmi_pci_bus_space_read_2(void *tag, bus_space_handle_t handle,
413     bus_size_t offset)
414 {
415         u_int16_t value;
416
417         value = *(volatile u_int16_t *)(handle + offset);
418         return bswap16(value);
419 }
420
421 static u_int32_t
422 rmi_pci_bus_space_read_4(void *tag, bus_space_handle_t handle,
423     bus_size_t offset)
424 {
425         uint32_t value;
426
427         value = *(volatile u_int32_t *)(handle + offset);
428         return bswap32(value);
429 }
430
431 /*
432  * Read `count' 1, 2, 4, or 8 byte quantities from bus space
433  * described by tag/handle/offset and copy into buffer provided.
434  */
435 static void
436 rmi_pci_bus_space_read_multi_1(void *tag, bus_space_handle_t handle,
437     bus_size_t offset, u_int8_t * addr, size_t count)
438 {
439         while (count--) {
440                 *addr = *(volatile u_int8_t *)(handle + offset);
441                 addr++;
442         }
443 }
444
445 static void
446 rmi_pci_bus_space_read_multi_2(void *tag, bus_space_handle_t handle,
447     bus_size_t offset, u_int16_t * addr, size_t count)
448 {
449
450         while (count--) {
451                 *addr = *(volatile u_int16_t *)(handle + offset);
452                 *addr = bswap16(*addr);
453                 addr++;
454         }
455 }
456
457 static void
458 rmi_pci_bus_space_read_multi_4(void *tag, bus_space_handle_t handle,
459     bus_size_t offset, u_int32_t * addr, size_t count)
460 {
461
462         while (count--) {
463                 *addr = *(volatile u_int32_t *)(handle + offset);
464                 *addr = bswap32(*addr);
465                 addr++;
466         }
467 }
468
469 /*
470  * Write the 1, 2, 4, or 8 byte value `value' to bus space
471  * described by tag/handle/offset.
472  */
473
474 static void
475 rmi_pci_bus_space_write_1(void *tag, bus_space_handle_t handle,
476     bus_size_t offset, u_int8_t value)
477 {
478         mips_sync();
479         *(volatile u_int8_t *)(handle + offset) = value;
480 }
481
482 static void
483 rmi_pci_bus_space_write_2(void *tag, bus_space_handle_t handle,
484     bus_size_t offset, u_int16_t value)
485 {
486         mips_sync();
487         *(volatile u_int16_t *)(handle + offset) = bswap16(value);
488 }
489
490 static void
491 rmi_pci_bus_space_write_4(void *tag, bus_space_handle_t handle,
492     bus_size_t offset, u_int32_t value)
493 {
494         mips_sync();
495         *(volatile u_int32_t *)(handle + offset) = bswap32(value);
496 }
497
498 /*
499  * Write `count' 1, 2, 4, or 8 byte quantities from the buffer
500  * provided to bus space described by tag/handle/offset.
501  */
502
503 static void
504 rmi_pci_bus_space_write_multi_1(void *tag, bus_space_handle_t handle,
505     bus_size_t offset, const u_int8_t * addr, size_t count)
506 {
507         mips_sync();
508         while (count--) {
509                 (*(volatile u_int8_t *)(handle + offset)) = *addr;
510                 addr++;
511         }
512 }
513
514 static void
515 rmi_pci_bus_space_write_multi_2(void *tag, bus_space_handle_t handle,
516     bus_size_t offset, const u_int16_t * addr, size_t count)
517 {
518         mips_sync();
519         while (count--) {
520                 (*(volatile u_int16_t *)(handle + offset)) = bswap16(*addr);
521                 addr++;
522         }
523 }
524
525 static void
526 rmi_pci_bus_space_write_multi_4(void *tag, bus_space_handle_t handle,
527     bus_size_t offset, const u_int32_t * addr, size_t count)
528 {
529         mips_sync();
530         while (count--) {
531                 (*(volatile u_int32_t *)(handle + offset)) = bswap32(*addr);
532                 addr++;
533         }
534 }
535
536 /*
537  * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
538  * by tag/handle starting at `offset'.
539  */
540
541 static void
542 rmi_pci_bus_space_set_region_2(void *t, bus_space_handle_t bsh,
543     bus_size_t offset, u_int16_t value, size_t count)
544 {
545         bus_addr_t addr = bsh + offset;
546
547         for (; count != 0; count--, addr += 2)
548                 (*(volatile u_int16_t *)(addr)) = value;
549 }
550
551 static void
552 rmi_pci_bus_space_set_region_4(void *t, bus_space_handle_t bsh,
553     bus_size_t offset, u_int32_t value, size_t count)
554 {
555         bus_addr_t addr = bsh + offset;
556
557         for (; count != 0; count--, addr += 4)
558                 (*(volatile u_int32_t *)(addr)) = value;
559 }
560
561 /*
562  * Copy `count' 1, 2, 4, or 8 byte values from bus space starting
563  * at tag/bsh1/off1 to bus space starting at tag/bsh2/off2.
564  */
565 static void
566 rmi_pci_bus_space_copy_region_2(void *t, bus_space_handle_t bsh1,
567     bus_size_t off1, bus_space_handle_t bsh2,
568     bus_size_t off2, size_t count)
569 {
570         TODO();
571 }
572
573 /*
574  * Read `count' 1, 2, 4, or 8 byte quantities from bus space
575  * described by tag/handle/offset and copy into buffer provided.
576  */
577
578 u_int8_t
579 rmi_pci_bus_space_read_stream_1(void *t, bus_space_handle_t handle,
580     bus_size_t offset)
581 {
582
583         return *((volatile u_int8_t *)(handle + offset));
584 }
585
586 static u_int16_t
587 rmi_pci_bus_space_read_stream_2(void *t, bus_space_handle_t handle,
588     bus_size_t offset)
589 {
590         return *(volatile u_int16_t *)(handle + offset);
591 }
592
593 static u_int32_t
594 rmi_pci_bus_space_read_stream_4(void *t, bus_space_handle_t handle,
595     bus_size_t offset)
596 {
597         return (*(volatile u_int32_t *)(handle + offset));
598 }
599
600 static void
601 rmi_pci_bus_space_read_multi_stream_1(void *tag, bus_space_handle_t handle,
602     bus_size_t offset, u_int8_t * addr, size_t count)
603 {
604         while (count--) {
605                 *addr = (*(volatile u_int8_t *)(handle + offset));
606                 addr++;
607         }
608 }
609
610 static void
611 rmi_pci_bus_space_read_multi_stream_2(void *tag, bus_space_handle_t handle,
612     bus_size_t offset, u_int16_t * addr, size_t count)
613 {
614         while (count--) {
615                 *addr = (*(volatile u_int16_t *)(handle + offset));
616                 addr++;
617         }
618 }
619
620 static void
621 rmi_pci_bus_space_read_multi_stream_4(void *tag, bus_space_handle_t handle,
622     bus_size_t offset, u_int32_t * addr, size_t count)
623 {
624         while (count--) {
625                 *addr = (*(volatile u_int32_t *)(handle + offset));
626                 addr++;
627         }
628 }
629
630 /*
631  * Read `count' 1, 2, 4, or 8 byte quantities from bus space
632  * described by tag/handle and starting at `offset' and copy into
633  * buffer provided.
634  */
635 void
636 rmi_pci_bus_space_read_region_1(void *t, bus_space_handle_t bsh,
637     bus_size_t offset, u_int8_t * addr, size_t count)
638 {
639         bus_addr_t baddr = bsh + offset;
640
641         while (count--) {
642                 *addr++ = (*(volatile u_int8_t *)(baddr));
643                 baddr += 1;
644         }
645 }
646
647 void
648 rmi_pci_bus_space_read_region_2(void *t, bus_space_handle_t bsh,
649     bus_size_t offset, u_int16_t * addr, size_t count)
650 {
651         bus_addr_t baddr = bsh + offset;
652
653         while (count--) {
654                 *addr++ = (*(volatile u_int16_t *)(baddr));
655                 baddr += 2;
656         }
657 }
658
659 void
660 rmi_pci_bus_space_read_region_4(void *t, bus_space_handle_t bsh,
661     bus_size_t offset, u_int32_t * addr, size_t count)
662 {
663         bus_addr_t baddr = bsh + offset;
664
665         while (count--) {
666                 *addr++ = (*(volatile u_int32_t *)(baddr));
667                 baddr += 4;
668         }
669 }
670
671 void
672 rmi_pci_bus_space_write_stream_1(void *t, bus_space_handle_t handle,
673     bus_size_t offset, u_int8_t value)
674 {
675         mips_sync();
676         *(volatile u_int8_t *)(handle + offset) = value;
677 }
678
679 static void
680 rmi_pci_bus_space_write_stream_2(void *t, bus_space_handle_t handle,
681     bus_size_t offset, u_int16_t value)
682 {
683         mips_sync();
684         *(volatile u_int16_t *)(handle + offset) = value;
685 }
686
687 static void
688 rmi_pci_bus_space_write_stream_4(void *t, bus_space_handle_t handle,
689     bus_size_t offset, u_int32_t value)
690 {
691         mips_sync();
692         *(volatile u_int32_t *)(handle + offset) = value;
693 }
694
695 static void
696 rmi_pci_bus_space_write_multi_stream_1(void *tag, bus_space_handle_t handle,
697     bus_size_t offset, const u_int8_t * addr, size_t count)
698 {
699         mips_sync();
700         while (count--) {
701                 (*(volatile u_int8_t *)(handle + offset)) = *addr;
702                 addr++;
703         }
704 }
705
706 static void
707 rmi_pci_bus_space_write_multi_stream_2(void *tag, bus_space_handle_t handle,
708     bus_size_t offset, const u_int16_t * addr, size_t count)
709 {
710         mips_sync();
711         while (count--) {
712                 (*(volatile u_int16_t *)(handle + offset)) = *addr;
713                 addr++;
714         }
715 }
716
717 static void
718 rmi_pci_bus_space_write_multi_stream_4(void *tag, bus_space_handle_t handle,
719     bus_size_t offset, const u_int32_t * addr, size_t count)
720 {
721         mips_sync();
722         while (count--) {
723                 (*(volatile u_int32_t *)(handle + offset)) = *addr;
724                 addr++;
725         }
726 }
727
728 void
729 rmi_pci_bus_space_write_region_2(void *t,
730     bus_space_handle_t bsh,
731     bus_size_t offset,
732     const u_int16_t * addr,
733     size_t count)
734 {
735         bus_addr_t baddr = (bus_addr_t) bsh + offset;
736
737         while (count--) {
738                 (*(volatile u_int16_t *)(baddr)) = *addr;
739                 addr++;
740                 baddr += 2;
741         }
742 }
743
744 void
745 rmi_pci_bus_space_write_region_4(void *t, bus_space_handle_t bsh,
746     bus_size_t offset, const u_int32_t * addr, size_t count)
747 {
748         bus_addr_t baddr = bsh + offset;
749
750         while (count--) {
751                 (*(volatile u_int32_t *)(baddr)) = *addr;
752                 addr++;
753                 baddr += 4;
754         }
755 }
756
757 static void
758 rmi_pci_bus_space_barrier(void *tag __unused, bus_space_handle_t bsh __unused,
759     bus_size_t offset __unused, bus_size_t len __unused, int flags)
760 {
761
762 }