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