xref: /illumos-gate/usr/src/uts/intel/sys/ddi_isa.h (revision a56d24ea)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 #ifndef	_SYS_DDI_ISA_H
27 #define	_SYS_DDI_ISA_H
28 
29 #include <sys/isa_defs.h>
30 #include <sys/dditypes.h>
31 #include <sys/ndifm.h>
32 #ifdef	_KERNEL
33 #include <sys/ddi_obsolete.h>
34 #endif
35 
36 #ifdef	__cplusplus
37 extern "C" {
38 #endif
39 
40 #ifdef	_KERNEL
41 
42 /*
43  * These are the data access functions which the platform
44  * can choose to define as functions or macro's.
45  */
46 
47 /*
48  * DDI interfaces defined as macro's
49  */
50 
51 /*
52  * DDI interfaces defined as functions
53  */
54 
55 #ifdef	__STDC__
56 
57 /*
58  * ahi_acc_attr flags
59  */
60 #define	DDI_ACCATTR_CONFIG_SPACE	0x1
61 #define	DDI_ACCATTR_IO_SPACE		0x2
62 #define	DDI_ACCATTR_CPU_VADDR		0x4
63 #define	DDI_ACCATTR_DIRECT		0x8
64 
65 typedef struct ddi_acc_impl {
66 	ddi_acc_hdl_t	ahi_common;
67 	uint_t		ahi_acc_attr;
68 	ulong_t		ahi_io_port_base;
69 
70 	uint8_t
71 		(*ahi_get8)(struct ddi_acc_impl *handle, uint8_t *addr);
72 	uint16_t
73 		(*ahi_get16)(struct ddi_acc_impl *handle, uint16_t *addr);
74 	uint32_t
75 		(*ahi_get32)(struct ddi_acc_impl *handle, uint32_t *addr);
76 	uint64_t
77 		(*ahi_get64)(struct ddi_acc_impl *handle, uint64_t *addr);
78 
79 	void	(*ahi_put8)(struct ddi_acc_impl *handle, uint8_t *addr,
80 			uint8_t value);
81 	void	(*ahi_put16)(struct ddi_acc_impl *handle, uint16_t *addr,
82 			uint16_t value);
83 	void	(*ahi_put32)(struct ddi_acc_impl *handle, uint32_t *addr,
84 			uint32_t value);
85 	void	(*ahi_put64)(struct ddi_acc_impl *handle, uint64_t *addr,
86 			uint64_t value);
87 
88 	void	(*ahi_rep_get8)(struct ddi_acc_impl *handle,
89 			uint8_t *host_addr, uint8_t *dev_addr,
90 			size_t repcount, uint_t flags);
91 	void	(*ahi_rep_get16)(struct ddi_acc_impl *handle,
92 			uint16_t *host_addr, uint16_t *dev_addr,
93 			size_t repcount, uint_t flags);
94 	void	(*ahi_rep_get32)(struct ddi_acc_impl *handle,
95 			uint32_t *host_addr, uint32_t *dev_addr,
96 			size_t repcount, uint_t flags);
97 	void	(*ahi_rep_get64)(struct ddi_acc_impl *handle,
98 			uint64_t *host_addr, uint64_t *dev_addr,
99 			size_t repcount, uint_t flags);
100 
101 	void	(*ahi_rep_put8)(struct ddi_acc_impl *handle,
102 			uint8_t *host_addr, uint8_t *dev_addr,
103 			size_t repcount, uint_t flags);
104 	void	(*ahi_rep_put16)(struct ddi_acc_impl *handle,
105 			uint16_t *host_addr, uint16_t *dev_addr,
106 			size_t repcount, uint_t flags);
107 	void	(*ahi_rep_put32)(struct ddi_acc_impl *handle,
108 			uint32_t *host_addr, uint32_t *dev_addr,
109 			size_t repcount, uint_t flags);
110 	void	(*ahi_rep_put64)(struct ddi_acc_impl *handle,
111 			uint64_t *host_addr, uint64_t *dev_addr,
112 			size_t repcount, uint_t flags);
113 
114 	int	(*ahi_fault_check)(struct ddi_acc_impl *handle);
115 	void	(*ahi_fault_notify)(struct ddi_acc_impl *handle);
116 	uint32_t	ahi_fault;
117 	ndi_err_t *ahi_err;
118 	kmutex_t *ahi_peekpoke_mutexp;
119 	kmutex_t *ahi_err_mutexp;
120 	void (*ahi_scan)(dev_info_t *, ddi_fm_error_t *);
121 	dev_info_t *ahi_scan_dip;
122 } ddi_acc_impl_t;
123 
124 
125 /*
126  * Input functions to memory mapped IO
127  */
128 uint8_t
129 i_ddi_vaddr_get8(ddi_acc_impl_t *hdlp, uint8_t *addr);
130 
131 uint16_t
132 i_ddi_vaddr_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
133 
134 uint32_t
135 i_ddi_vaddr_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
136 
137 uint64_t
138 i_ddi_vaddr_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
139 
140 uint16_t
141 i_ddi_vaddr_swap_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
142 
143 uint32_t
144 i_ddi_vaddr_swap_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
145 
146 uint64_t
147 i_ddi_vaddr_swap_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
148 
149 /*
150  * Output functions to memory mapped IO
151  */
152 void
153 i_ddi_vaddr_put8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value);
154 
155 void
156 i_ddi_vaddr_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
157 
158 void
159 i_ddi_vaddr_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
160 
161 void
162 i_ddi_vaddr_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
163 
164 void
165 i_ddi_vaddr_swap_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
166 
167 void
168 i_ddi_vaddr_swap_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
169 
170 void
171 i_ddi_vaddr_swap_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
172 
173 /*
174  * Repeated input functions for memory mapped IO
175  */
176 void
177 i_ddi_vaddr_rep_get8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
178 	uint8_t *dev_addr, size_t repcount, uint_t flags);
179 
180 void
181 i_ddi_vaddr_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
182 	uint16_t *dev_addr, size_t repcount, uint_t flags);
183 
184 void
185 i_ddi_vaddr_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
186 	uint32_t *dev_addr, size_t repcount, uint_t flags);
187 
188 void
189 i_ddi_vaddr_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
190 	uint64_t *dev_addr, size_t repcount, uint_t flags);
191 
192 void
193 i_ddi_vaddr_swap_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
194 	uint16_t *dev_addr, size_t repcount, uint_t flags);
195 
196 void
197 i_ddi_vaddr_swap_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
198 	uint32_t *dev_addr, size_t repcount, uint_t flags);
199 
200 void
201 i_ddi_vaddr_swap_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
202 	uint64_t *dev_addr, size_t repcount, uint_t flags);
203 
204 /*
205  * Repeated output functions for memory mapped IO
206  */
207 void
208 i_ddi_vaddr_rep_put8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
209 	uint8_t *dev_addr, size_t repcount, uint_t flags);
210 
211 void
212 i_ddi_vaddr_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
213 	uint16_t *dev_addr, size_t repcount, uint_t flags);
214 
215 void
216 i_ddi_vaddr_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
217 	uint32_t *dev_addr, size_t repcount, uint_t flags);
218 
219 void
220 i_ddi_vaddr_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
221 	uint64_t *dev_addr, size_t repcount, uint_t flags);
222 
223 void
224 i_ddi_vaddr_swap_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
225 	uint16_t *dev_addr, size_t repcount, uint_t flags);
226 
227 void
228 i_ddi_vaddr_swap_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
229 	uint32_t *dev_addr, size_t repcount, uint_t flags);
230 
231 void
232 i_ddi_vaddr_swap_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
233 	uint64_t *dev_addr, size_t repcount, uint_t flags);
234 
235 /*
236  * Input functions to IO space
237  */
238 uint8_t
239 i_ddi_io_get8(ddi_acc_impl_t *hdlp, uint8_t *addr);
240 
241 uint16_t
242 i_ddi_io_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
243 
244 uint32_t
245 i_ddi_io_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
246 
247 uint64_t
248 i_ddi_io_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
249 
250 uint16_t
251 i_ddi_io_swap_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
252 
253 uint32_t
254 i_ddi_io_swap_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
255 
256 /*
257  * Output functions to IO space
258  */
259 void
260 i_ddi_io_put8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value);
261 
262 void
263 i_ddi_io_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
264 
265 void
266 i_ddi_io_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
267 
268 void
269 i_ddi_io_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
270 
271 void
272 i_ddi_io_swap_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
273 
274 void
275 i_ddi_io_swap_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
276 
277 /*
278  * Repeated input functions for IO space
279  */
280 void
281 i_ddi_io_rep_get8(ddi_acc_impl_t *hdlp, uint8_t *host_addr, uint8_t *dev_addr,
282 	size_t repcount, uint_t flags);
283 
284 void
285 i_ddi_io_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
286 	uint16_t *dev_addr, size_t repcount, uint_t flags);
287 
288 void
289 i_ddi_io_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
290 	uint32_t *dev_addr, size_t repcount, uint_t flags);
291 
292 void
293 i_ddi_io_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
294 	uint64_t *dev_addr, size_t repcount, uint_t flags);
295 
296 void
297 i_ddi_io_swap_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
298 	uint16_t *dev_addr, size_t repcount, uint_t flags);
299 
300 void
301 i_ddi_io_swap_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
302 	uint32_t *dev_addr, size_t repcount, uint_t flags);
303 
304 /*
305  * Repeated output functions for IO space
306  */
307 void
308 i_ddi_io_rep_put8(ddi_acc_impl_t *hdlp, uint8_t *host_addr, uint8_t *dev_addr,
309 	size_t repcount, uint_t flags);
310 
311 void
312 i_ddi_io_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
313 	uint16_t *dev_addr, size_t repcount, uint_t flags);
314 
315 void
316 i_ddi_io_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr, uint32_t *dev_addr,
317 	size_t repcount, uint_t flags);
318 
319 void
320 i_ddi_io_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr, uint64_t *dev_addr,
321 	size_t repcount, uint_t flags);
322 void
323 i_ddi_io_swap_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
324 	uint16_t *dev_addr, size_t repcount, uint_t flags);
325 
326 void
327 i_ddi_io_swap_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
328 	uint32_t *dev_addr, size_t repcount, uint_t flags);
329 
330 /*
331  * repeat for protected mode accesses
332  */
333 
334 /*
335  * Input functions to memory mapped IO
336  */
337 uint8_t
338 i_ddi_prot_vaddr_get8(ddi_acc_impl_t *hdlp, uint8_t *addr);
339 
340 uint16_t
341 i_ddi_prot_vaddr_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
342 
343 uint32_t
344 i_ddi_prot_vaddr_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
345 
346 uint64_t
347 i_ddi_prot_vaddr_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
348 
349 uint16_t
350 i_ddi_prot_vaddr_swap_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
351 
352 uint32_t
353 i_ddi_prot_vaddr_swap_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
354 
355 uint64_t
356 i_ddi_prot_vaddr_swap_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
357 
358 /*
359  * Output functions to memory mapped IO
360  */
361 void
362 i_ddi_prot_vaddr_put8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value);
363 
364 void
365 i_ddi_prot_vaddr_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
366 
367 void
368 i_ddi_prot_vaddr_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
369 
370 void
371 i_ddi_prot_vaddr_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
372 
373 void
374 i_ddi_prot_vaddr_swap_put16(ddi_acc_impl_t *hdlp, uint16_t *addr,
375 	uint16_t value);
376 
377 void
378 i_ddi_prot_vaddr_swap_put32(ddi_acc_impl_t *hdlp, uint32_t *addr,
379 	uint32_t value);
380 
381 void
382 i_ddi_prot_vaddr_swap_put64(ddi_acc_impl_t *hdlp, uint64_t *addr,
383 	uint64_t value);
384 
385 /*
386  * Repeated input functions for memory mapped IO
387  */
388 void
389 i_ddi_prot_vaddr_rep_get8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
390 	uint8_t *dev_addr, size_t repcount, uint_t flags);
391 
392 void
393 i_ddi_prot_vaddr_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
394 	uint16_t *dev_addr, size_t repcount, uint_t flags);
395 
396 void
397 i_ddi_prot_vaddr_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
398 	uint32_t *dev_addr, size_t repcount, uint_t flags);
399 
400 void
401 i_ddi_prot_vaddr_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
402 	uint64_t *dev_addr, size_t repcount, uint_t flags);
403 
404 void
405 i_ddi_prot_vaddr_swap_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
406 	uint16_t *dev_addr, size_t repcount, uint_t flags);
407 
408 void
409 i_ddi_prot_vaddr_swap_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
410 	uint32_t *dev_addr, size_t repcount, uint_t flags);
411 
412 void
413 i_ddi_prot_vaddr_swap_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
414 	uint64_t *dev_addr, size_t repcount, uint_t flags);
415 
416 /*
417  * Repeated output functions for memory mapped IO
418  */
419 void
420 i_ddi_prot_vaddr_rep_put8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
421 	uint8_t *dev_addr, size_t repcount, uint_t flags);
422 
423 void
424 i_ddi_prot_vaddr_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
425 	uint16_t *dev_addr, size_t repcount, uint_t flags);
426 
427 void
428 i_ddi_prot_vaddr_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
429 	uint32_t *dev_addr, size_t repcount, uint_t flags);
430 
431 void
432 i_ddi_prot_vaddr_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
433 	uint64_t *dev_addr, size_t repcount, uint_t flags);
434 
435 void
436 i_ddi_prot_vaddr_swap_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
437 	uint16_t *dev_addr, size_t repcount, uint_t flags);
438 
439 void
440 i_ddi_prot_vaddr_swap_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
441 	uint32_t *dev_addr, size_t repcount, uint_t flags);
442 
443 void
444 i_ddi_prot_vaddr_swap_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
445 	uint64_t *dev_addr, size_t repcount, uint_t flags);
446 
447 /*
448  * Input functions to IO space
449  */
450 uint8_t
451 i_ddi_prot_io_get8(ddi_acc_impl_t *hdlp, uint8_t *addr);
452 
453 uint16_t
454 i_ddi_prot_io_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
455 
456 uint32_t
457 i_ddi_prot_io_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
458 
459 uint16_t
460 i_ddi_prot_io_swap_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
461 
462 uint32_t
463 i_ddi_prot_io_swap_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
464 
465 /*
466  * Output functions to IO space
467  */
468 void
469 i_ddi_prot_io_put8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value);
470 
471 void
472 i_ddi_prot_io_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
473 
474 void
475 i_ddi_prot_io_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
476 
477 void
478 i_ddi_prot_io_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
479 
480 void
481 i_ddi_prot_io_swap_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
482 
483 void
484 i_ddi_prot_io_swap_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
485 
486 /*
487  * Repeated input functions for IO space
488  */
489 void
490 i_ddi_prot_io_rep_get8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
491 	uint8_t *dev_addr, size_t repcount, uint_t flags);
492 
493 void
494 i_ddi_prot_io_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
495 	uint16_t *dev_addr, size_t repcount, uint_t flags);
496 
497 void
498 i_ddi_prot_io_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
499 	uint32_t *dev_addr, size_t repcount, uint_t flags);
500 
501 void
502 i_ddi_prot_io_swap_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
503 	uint16_t *dev_addr, size_t repcount, uint_t flags);
504 
505 void
506 i_ddi_prot_io_swap_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
507 	uint32_t *dev_addr, size_t repcount, uint_t flags);
508 
509 /*
510  * Repeated output functions for IO space
511  */
512 void
513 i_ddi_prot_io_rep_put8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
514 	uint8_t *dev_addr, size_t repcount, uint_t flags);
515 
516 void
517 i_ddi_prot_io_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
518 	uint16_t *dev_addr, size_t repcount, uint_t flags);
519 
520 void
521 i_ddi_prot_io_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
522 	uint32_t *dev_addr, size_t repcount, uint_t flags);
523 
524 void
525 i_ddi_prot_io_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
526 	uint64_t *dev_addr, size_t repcount, uint_t flags);
527 void
528 i_ddi_prot_io_swap_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
529 	uint16_t *dev_addr, size_t repcount, uint_t flags);
530 
531 void
532 i_ddi_prot_io_swap_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
533 	uint32_t *dev_addr, size_t repcount, uint_t flags);
534 
535 /*
536  * Default fault-checking and notification functions
537  */
538 int
539 i_ddi_acc_fault_check(ddi_acc_impl_t *hdlp);
540 
541 void
542 i_ddi_acc_fault_notify(ddi_acc_impl_t *hdlp);
543 
544 /* DDI Fault Services functions */
545 void i_ddi_caut_get(size_t size, void *addr, void *val);
546 
547 uint8_t i_ddi_caut_get8(ddi_acc_impl_t *hdlp, uint8_t *addr);
548 uint16_t i_ddi_caut_get16(ddi_acc_impl_t *hdlp, uint16_t *addr);
549 uint32_t i_ddi_caut_get32(ddi_acc_impl_t *hdlp, uint32_t *addr);
550 uint64_t i_ddi_caut_get64(ddi_acc_impl_t *hdlp, uint64_t *addr);
551 
552 void i_ddi_caut_put8(ddi_acc_impl_t *hdlp, uint8_t *addr, uint8_t value);
553 void i_ddi_caut_put16(ddi_acc_impl_t *hdlp, uint16_t *addr, uint16_t value);
554 void i_ddi_caut_put32(ddi_acc_impl_t *hdlp, uint32_t *addr, uint32_t value);
555 void i_ddi_caut_put64(ddi_acc_impl_t *hdlp, uint64_t *addr, uint64_t value);
556 
557 void i_ddi_caut_rep_get8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
558     uint8_t *dev_addr, size_t repcount, uint_t flags);
559 void i_ddi_caut_rep_get16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
560     uint16_t *dev_addr, size_t repcount, uint_t flags);
561 void i_ddi_caut_rep_get32(ddi_acc_impl_t *hdlp, uint32_t *host_addr,
562     uint32_t *dev_addr, size_t repcount, uint_t flags);
563 void i_ddi_caut_rep_get64(ddi_acc_impl_t *hdlp, uint64_t *host_addr,
564     uint64_t *dev_addr, size_t repcount, uint_t flags);
565 
566 void i_ddi_caut_rep_put8(ddi_acc_impl_t *hdlp, uint8_t *host_addr,
567     uint8_t *dev_addr, size_t repcount, uint_t flags);
568 void i_ddi_caut_rep_put16(ddi_acc_impl_t *hdlp, uint16_t *host_addr,
569     uint16_t *dev_addr, size_t repcount, uint_t flags);
570 void i_ddi_caut_rep_put32(ddi_acc_impl_t *hdl, uint32_t *host_addr,
571     uint32_t *dev_addr, size_t repcount, uint_t flags);
572 void i_ddi_caut_rep_put64(ddi_acc_impl_t *hdl, uint64_t *host_addr,
573     uint64_t *dev_addr, size_t repcount, uint_t flags);
574 
575 boolean_t i_ddi_copybuf_required(ddi_dma_attr_t *attrp);
576 size_t i_ddi_copybuf_size();
577 uint32_t i_ddi_dma_max(dev_info_t *dip, ddi_dma_attr_t *attrp);
578 
579 /* handles case of running on top of hypervisor */
580 pfn_t i_ddi_paddr_to_pfn(paddr_t paddr);
581 
582 #endif	/* __STDC__ */
583 
584 #endif	/* _KERNEL */
585 
586 #ifdef	__cplusplus
587 }
588 #endif
589 
590 #endif	/* _SYS_DDI_ISA_H */
591