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 }
Cache object: 9bc64df39f987e131e28c4e1170e3cbe
|