xref: /onnv-gate/usr/src/uts/common/io/xge/drv/xge_osdep.h (revision 8275:7c223a798022)
11256Syl150051 /*
21256Syl150051  * CDDL HEADER START
31256Syl150051  *
41256Syl150051  * The contents of this file are subject to the terms of the
51256Syl150051  * Common Development and Distribution License (the "License").
61256Syl150051  * You may not use this file except in compliance with the License.
71256Syl150051  *
81256Syl150051  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
91256Syl150051  * or http://www.opensolaris.org/os/licensing.
101256Syl150051  * See the License for the specific language governing permissions
111256Syl150051  * and limitations under the License.
121256Syl150051  *
131256Syl150051  * When distributing Covered Code, include this CDDL HEADER in each
141256Syl150051  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
151256Syl150051  * If applicable, add the following below this CDDL HEADER, with the
161256Syl150051  * fields enclosed by brackets "[]" replaced with your own identifying
171256Syl150051  * information: Portions Copyright [yyyy] [name of copyright owner]
181256Syl150051  *
191256Syl150051  * CDDL HEADER END
201256Syl150051  */
211256Syl150051 
221256Syl150051 /*
23*6937Sxw161283  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
241256Syl150051  * Use is subject to license terms.
251256Syl150051  */
261256Syl150051 
271256Syl150051 /*
281256Syl150051  *  Copyright (c) 2002-2005 Neterion, Inc.
291256Syl150051  *  All right Reserved.
301256Syl150051  *
311256Syl150051  *  FileName :    xge_osdep.h
321256Syl150051  *
331256Syl150051  *  Description:  OSPAL - Solaris
341256Syl150051  *
351256Syl150051  */
361256Syl150051 
371256Syl150051 #ifndef _SYS_XGE_OSDEP_H
381256Syl150051 #define	_SYS_XGE_OSDEP_H
391256Syl150051 
401256Syl150051 #include <sys/ddi.h>
411256Syl150051 #include <sys/sunddi.h>
421256Syl150051 #include <sys/varargs.h>
431256Syl150051 #include <sys/atomic.h>
441256Syl150051 #include <sys/policy.h>
451256Syl150051 #include <sys/int_fmtio.h>
461256Syl150051 #include <sys/thread.h>
471256Syl150051 #include <sys/cpuvar.h>
481256Syl150051 
491256Syl150051 #include <inet/common.h>
501256Syl150051 #include <inet/ip.h>
511256Syl150051 #include <inet/mi.h>
521256Syl150051 #include <inet/nd.h>
531256Syl150051 
541256Syl150051 #ifdef __cplusplus
551256Syl150051 extern "C" {
561256Syl150051 #endif
571256Syl150051 
581256Syl150051 /* ------------------------- includes and defines ------------------------- */
591256Syl150051 
601256Syl150051 #define	XGE_HAL_TX_MULTI_POST_IRQ	1
611256Syl150051 #define	XGE_HAL_TX_MULTI_RESERVE_IRQ	1
621256Syl150051 #define	XGE_HAL_TX_MULTI_FREE_IRQ	1
631256Syl150051 #define	XGE_HAL_DMA_DTR_CONSISTENT	1
641256Syl150051 #define	XGE_HAL_DMA_STATS_STREAMING	1
651256Syl150051 
661256Syl150051 #if defined(__sparc)
671256Syl150051 #define	XGE_OS_DMA_REQUIRES_SYNC	1
683115Syl150051 #endif
693115Syl150051 
701256Syl150051 #define	XGE_HAL_ALIGN_XMIT		1
711256Syl150051 
721256Syl150051 #ifdef _BIG_ENDIAN
731256Syl150051 #define	XGE_OS_HOST_BIG_ENDIAN		1
741256Syl150051 #else
751256Syl150051 #define	XGE_OS_HOST_LITTLE_ENDIAN	1
761256Syl150051 #endif
771256Syl150051 
78*6937Sxw161283 #if defined(__sparc)
79*6937Sxw161283 #define	XGE_OS_HOST_PAGE_SIZE		8192
80*6937Sxw161283 #else
81*6937Sxw161283 #define	XGE_OS_HOST_PAGE_SIZE		4096
82*6937Sxw161283 #endif
83*6937Sxw161283 
841256Syl150051 #if defined(_LP64)
851256Syl150051 #define	XGE_OS_PLATFORM_64BIT		1
861256Syl150051 #else
871256Syl150051 #define	XGE_OS_PLATFORM_32BIT		1
881256Syl150051 #endif
891256Syl150051 
901256Syl150051 #define	XGE_OS_HAS_SNPRINTF		1
911256Syl150051 
923115Syl150051 /* LRO defines */
933115Syl150051 #define	XGE_LL_IP_FAST_CSUM(hdr, len)	0 /* ip_ocsum(hdr, len>>1, 0); */
943115Syl150051 
951256Syl150051 /* ---------------------- fixed size primitive types ----------------------- */
961256Syl150051 
971256Syl150051 #define	u8			uint8_t
981256Syl150051 #define	u16			uint16_t
991256Syl150051 #define	u32			uint32_t
1001256Syl150051 #define	u64			uint64_t
1011256Syl150051 typedef	u64			dma_addr_t;
1021256Syl150051 #define	ulong_t			ulong_t
1031256Syl150051 #define	ptrdiff_t		ptrdiff_t
1041256Syl150051 typedef	kmutex_t		spinlock_t;
1051256Syl150051 typedef dev_info_t		*pci_dev_h;
1061256Syl150051 typedef ddi_acc_handle_t	pci_reg_h;
1071256Syl150051 typedef ddi_acc_handle_t	pci_cfg_h;
108*6937Sxw161283 typedef uint_t			pci_irq_h;
1091256Syl150051 typedef ddi_dma_handle_t	pci_dma_h;
1101256Syl150051 typedef ddi_acc_handle_t	pci_dma_acc_h;
1111256Syl150051 
1123115Syl150051 /* LRO types */
1133115Syl150051 #define	OS_NETSTACK_BUF		mblk_t *
1143115Syl150051 #define	OS_LL_HEADER		uint8_t *
1153115Syl150051 #define	OS_IP_HEADER		uint8_t *
1163115Syl150051 #define	OS_TL_HEADER		uint8_t *
1173115Syl150051 
1181256Syl150051 /* -------------------------- "libc" functionality ------------------------- */
1191256Syl150051 
120*6937Sxw161283 #define	xge_os_strlcpy			(void) strlcpy
1211256Syl150051 #define	xge_os_strlen			strlen
1221256Syl150051 #define	xge_os_snprintf			snprintf
1231256Syl150051 #define	xge_os_memzero(addr, size)	bzero(addr, size)
1241256Syl150051 #define	xge_os_memcpy(dst, src, size)	bcopy(src, dst, size)
1251256Syl150051 #define	xge_os_memcmp(src1, src2, size)	bcmp(src1, src2, size)
1263115Syl150051 #define	xge_os_ntohl			ntohl
1273115Syl150051 #define	xge_os_htons			htons
1283115Syl150051 #define	xge_os_ntohs			ntohs
1291256Syl150051 
1301256Syl150051 #ifdef __GNUC__
1311256Syl150051 #define	xge_os_printf(fmt...)		cmn_err(CE_CONT, fmt)
1321256Syl150051 #define	xge_os_sprintf(buf, fmt...)	strlen(sprintf(buf, fmt))
1331256Syl150051 #else
1341256Syl150051 #define	xge_os_vaprintf(fmt) { \
1351256Syl150051 	va_list va; \
1361256Syl150051 	va_start(va, fmt); \
1371256Syl150051 	vcmn_err(CE_CONT, fmt, va); \
1381256Syl150051 	va_end(va); \
1391256Syl150051 }
1401256Syl150051 
xge_os_printf(char * fmt,...)1411256Syl150051 static inline void xge_os_printf(char *fmt, ...) {
1421256Syl150051 	xge_os_vaprintf(fmt);
1431256Syl150051 }
1441256Syl150051 
1451256Syl150051 #define	xge_os_vasprintf(buf, fmt) { \
1461256Syl150051 	va_list va; \
1471256Syl150051 	va_start(va, fmt); \
1481256Syl150051 	(void) vsprintf(buf, fmt, va); \
1491256Syl150051 	va_end(va); \
1501256Syl150051 }
1511256Syl150051 
xge_os_sprintf(char * buf,char * fmt,...)1521256Syl150051 static inline int xge_os_sprintf(char *buf, char *fmt, ...) {
1531256Syl150051 	xge_os_vasprintf(buf, fmt);
1541256Syl150051 	return (strlen(buf));
1551256Syl150051 }
1561256Syl150051 #endif
1571256Syl150051 
1581256Syl150051 #define	xge_os_timestamp(buf) { \
1591256Syl150051 	todinfo_t todinfo = utc_to_tod(ddi_get_time()); \
160*6937Sxw161283 	(void) xge_os_sprintf(buf, "%02d/%02d/%02d.%02d:%02d:%02d: ", \
1611256Syl150051 	    todinfo.tod_day, todinfo.tod_month, \
1621256Syl150051 	    (1970 + todinfo.tod_year - 70), \
1631256Syl150051 	    todinfo.tod_hour, todinfo.tod_min, todinfo.tod_sec); \
1641256Syl150051 }
1651256Syl150051 
1661256Syl150051 #define	xge_os_println			xge_os_printf
1671256Syl150051 
1681256Syl150051 /* -------------------- synchronization primitives ------------------------- */
1691256Syl150051 
1701256Syl150051 #define	xge_os_spin_lock_init(lockp, ctxh) \
1711256Syl150051 	mutex_init(lockp, NULL, MUTEX_DRIVER, NULL)
1721256Syl150051 #define	xge_os_spin_lock_init_irq(lockp, irqh) \
173*6937Sxw161283 	mutex_init(lockp, NULL, MUTEX_DRIVER, DDI_INTR_PRI(irqh))
1741256Syl150051 #define	xge_os_spin_lock_destroy(lockp, cthx) \
1751256Syl150051 	(cthx = cthx, mutex_destroy(lockp))
1761256Syl150051 #define	xge_os_spin_lock_destroy_irq(lockp, cthx) \
1771256Syl150051 	(cthx = cthx, mutex_destroy(lockp))
1781256Syl150051 #define	xge_os_spin_lock(lockp)			mutex_enter(lockp)
1791256Syl150051 #define	xge_os_spin_unlock(lockp)		mutex_exit(lockp)
1801256Syl150051 #define	xge_os_spin_lock_irq(lockp, flags) (flags = flags, mutex_enter(lockp))
1811256Syl150051 #define	xge_os_spin_unlock_irq(lockp, flags)	mutex_exit(lockp)
1821256Syl150051 
1831256Syl150051 /* x86 arch will never re-order writes, Sparc can */
1841256Syl150051 #define	xge_os_wmb()				membar_producer()
1851256Syl150051 
1861256Syl150051 #define	xge_os_udelay(us)			drv_usecwait(us)
1871256Syl150051 #define	xge_os_mdelay(ms)			drv_usecwait(ms * 1000)
1881256Syl150051 
1891256Syl150051 #define	xge_os_cmpxchg(targetp, cmp, newval)		\
1901256Syl150051 	sizeof (*(targetp)) == 4 ?			\
1911256Syl150051 	cas32((uint32_t *)targetp, cmp, newval) :	\
1921256Syl150051 	cas64((uint64_t *)targetp, cmp, newval)
1931256Syl150051 
1941256Syl150051 /* ------------------------- misc primitives ------------------------------- */
1951256Syl150051 
1961256Syl150051 #define	xge_os_unlikely(x)		(x)
1971256Syl150051 #define	xge_os_prefetch(a)		(a = a)
1981256Syl150051 #define	xge_os_prefetchw
1991256Syl150051 #ifdef __GNUC__
2001256Syl150051 #define	xge_os_bug(fmt...)		cmn_err(CE_PANIC, fmt)
2011256Syl150051 #else
xge_os_bug(char * fmt,...)2021256Syl150051 static inline void xge_os_bug(char *fmt, ...) {
2031256Syl150051 	va_list ap;
2041256Syl150051 
2051256Syl150051 	va_start(ap, fmt);
2061256Syl150051 	vcmn_err(CE_PANIC, fmt, ap);
2071256Syl150051 	va_end(ap);
2081256Syl150051 }
2091256Syl150051 #endif
2101256Syl150051 
2111256Syl150051 /* -------------------------- compiler stuffs ------------------------------ */
2121256Syl150051 
2131256Syl150051 #if defined(__i386)
2141256Syl150051 #define	__xge_os_cacheline_size		64 /* L1-cache line size: x86_64 */
2151256Syl150051 #else
2161256Syl150051 #define	__xge_os_cacheline_size		64 /* L1-cache line size: sparcv9 */
2171256Syl150051 #endif
2181256Syl150051 
2191256Syl150051 #ifdef __GNUC__
2201256Syl150051 #define	__xge_os_attr_cacheline_aligned	\
2211256Syl150051 	__attribute__((__aligned__(__xge_os_cacheline_size)))
2221256Syl150051 #else
2231256Syl150051 #define	__xge_os_attr_cacheline_aligned
2241256Syl150051 #endif
2251256Syl150051 
2261256Syl150051 /* ---------------------- memory primitives -------------------------------- */
2271256Syl150051 
__xge_os_malloc(pci_dev_h pdev,unsigned long size,char * file,int line)2281256Syl150051 static inline void *__xge_os_malloc(pci_dev_h pdev, unsigned long size,
2291256Syl150051     char *file, int line)
2301256Syl150051 {
2311256Syl150051 	void *vaddr = kmem_alloc(size, KM_SLEEP);
2321256Syl150051 
2331256Syl150051 	XGE_OS_MEMORY_CHECK_MALLOC(vaddr, size, file, line);
2341256Syl150051 	return (vaddr);
2351256Syl150051 }
2361256Syl150051 
xge_os_free(pci_dev_h pdev,const void * vaddr,unsigned long size)2371256Syl150051 static inline void xge_os_free(pci_dev_h pdev, const void *vaddr,
2381256Syl150051     unsigned long size)
2391256Syl150051 {
2401256Syl150051 	XGE_OS_MEMORY_CHECK_FREE(vaddr, size);
2411256Syl150051 	kmem_free((void*)vaddr, size);
2421256Syl150051 }
2431256Syl150051 
2441256Syl150051 #define	xge_os_malloc(pdev, size) \
2451256Syl150051 	__xge_os_malloc(pdev, size, __FILE__, __LINE__)
2461256Syl150051 
__xge_os_dma_malloc(pci_dev_h pdev,unsigned long size,int dma_flags,pci_dma_h * p_dmah,pci_dma_acc_h * p_dma_acch,char * file,int line)2471256Syl150051 static inline void *__xge_os_dma_malloc(pci_dev_h pdev, unsigned long size,
2481256Syl150051     int dma_flags, pci_dma_h *p_dmah, pci_dma_acc_h *p_dma_acch, char *file,
2491256Syl150051     int line)
2501256Syl150051 {
2511256Syl150051 	void *vaddr;
2521256Syl150051 	int ret;
2531256Syl150051 	size_t real_size;
2541256Syl150051 	extern ddi_device_acc_attr_t *p_xge_dev_attr;
2551256Syl150051 	extern struct ddi_dma_attr *p_hal_dma_attr;
2561256Syl150051 
257*6937Sxw161283 	ret = ddi_dma_alloc_handle(pdev, p_hal_dma_attr,
2581256Syl150051 	    DDI_DMA_DONTWAIT, 0, p_dmah);
2591256Syl150051 	if (ret != DDI_SUCCESS) {
2601256Syl150051 		return (NULL);
2611256Syl150051 	}
2621256Syl150051 
2631256Syl150051 	ret = ddi_dma_mem_alloc(*p_dmah, size, p_xge_dev_attr,
2641256Syl150051 	    (dma_flags & XGE_OS_DMA_CONSISTENT ?
2653115Syl150051 	    DDI_DMA_CONSISTENT : DDI_DMA_STREAMING), DDI_DMA_DONTWAIT, 0,
2663115Syl150051 	    (caddr_t *)&vaddr, &real_size, p_dma_acch);
2671256Syl150051 	if (ret != DDI_SUCCESS) {
2681256Syl150051 		ddi_dma_free_handle(p_dmah);
2691256Syl150051 		return (NULL);
2701256Syl150051 	}
2711256Syl150051 
2721256Syl150051 	if (size > real_size) {
2731256Syl150051 		ddi_dma_mem_free(p_dma_acch);
2741256Syl150051 		ddi_dma_free_handle(p_dmah);
2751256Syl150051 		return (NULL);
2761256Syl150051 	}
2771256Syl150051 
2781256Syl150051 	XGE_OS_MEMORY_CHECK_MALLOC(vaddr, size, file, line);
2791256Syl150051 
2801256Syl150051 	return (vaddr);
2811256Syl150051 }
2821256Syl150051 
2831256Syl150051 #define	xge_os_dma_malloc(pdev, size, dma_flags, p_dmah, p_dma_acch) \
2841256Syl150051 	__xge_os_dma_malloc(pdev, size, dma_flags, p_dmah, p_dma_acch, \
2851256Syl150051 	    __FILE__, __LINE__)
2861256Syl150051 
xge_os_dma_free(pci_dev_h pdev,const void * vaddr,int size,pci_dma_acc_h * p_dma_acch,pci_dma_h * p_dmah)2871256Syl150051 static inline void xge_os_dma_free(pci_dev_h pdev, const void *vaddr, int size,
2881256Syl150051     pci_dma_acc_h *p_dma_acch, pci_dma_h *p_dmah)
2891256Syl150051 {
2901256Syl150051 	XGE_OS_MEMORY_CHECK_FREE(vaddr, 0);
2911256Syl150051 	ddi_dma_mem_free(p_dma_acch);
2921256Syl150051 	ddi_dma_free_handle(p_dmah);
2931256Syl150051 }
2941256Syl150051 
2951256Syl150051 
2961256Syl150051 /* --------------------------- pci primitives ------------------------------ */
2971256Syl150051 
2981256Syl150051 #define	xge_os_pci_read8(pdev, cfgh, where, val)	\
2991256Syl150051 	(*(val) = pci_config_get8(cfgh, where))
3001256Syl150051 
3011256Syl150051 #define	xge_os_pci_write8(pdev, cfgh, where, val)	\
3021256Syl150051 	pci_config_put8(cfgh, where, val)
3031256Syl150051 
3041256Syl150051 #define	xge_os_pci_read16(pdev, cfgh, where, val)	\
3051256Syl150051 	(*(val) = pci_config_get16(cfgh, where))
3061256Syl150051 
3071256Syl150051 #define	xge_os_pci_write16(pdev, cfgh, where, val)	\
3081256Syl150051 	pci_config_put16(cfgh, where, val)
3091256Syl150051 
3101256Syl150051 #define	xge_os_pci_read32(pdev, cfgh, where, val)	\
3111256Syl150051 	(*(val) = pci_config_get32(cfgh, where))
3121256Syl150051 
3131256Syl150051 #define	xge_os_pci_write32(pdev, cfgh, where, val)	\
3141256Syl150051 	pci_config_put32(cfgh, where, val)
3151256Syl150051 
3161256Syl150051 /* --------------------------- io primitives ------------------------------- */
3171256Syl150051 
3181256Syl150051 #define	xge_os_pio_mem_read8(pdev, regh, addr)		\
3191256Syl150051 	(ddi_get8(regh, (uint8_t *)(addr)))
3201256Syl150051 
3211256Syl150051 #define	xge_os_pio_mem_write8(pdev, regh, val, addr)	\
3221256Syl150051 	(ddi_put8(regh, (uint8_t *)(addr), val))
3231256Syl150051 
3241256Syl150051 #define	xge_os_pio_mem_read16(pdev, regh, addr)		\
3251256Syl150051 	(ddi_get16(regh, (uint16_t *)(addr)))
3261256Syl150051 
3271256Syl150051 #define	xge_os_pio_mem_write16(pdev, regh, val, addr)	\
3281256Syl150051 	(ddi_put16(regh, (uint16_t *)(addr), val))
3291256Syl150051 
3301256Syl150051 #define	xge_os_pio_mem_read32(pdev, regh, addr)		\
3311256Syl150051 	(ddi_get32(regh, (uint32_t *)(addr)))
3321256Syl150051 
3331256Syl150051 #define	xge_os_pio_mem_write32(pdev, regh, val, addr)	\
3341256Syl150051 	(ddi_put32(regh, (uint32_t *)(addr), val))
3351256Syl150051 
3361256Syl150051 #define	xge_os_pio_mem_read64(pdev, regh, addr)		\
3371256Syl150051 	(ddi_get64(regh, (uint64_t *)(addr)))
3381256Syl150051 
3391256Syl150051 #define	xge_os_pio_mem_write64(pdev, regh, val, addr)	\
3401256Syl150051 	(ddi_put64(regh, (uint64_t *)(addr), val))
3411256Syl150051 
3421256Syl150051 #define	xge_os_flush_bridge xge_os_pio_mem_read64
3431256Syl150051 
3441256Syl150051 /* --------------------------- dma primitives ----------------------------- */
3451256Syl150051 
3461256Syl150051 #define	XGE_OS_DMA_DIR_TODEVICE		DDI_DMA_SYNC_FORDEV
3471256Syl150051 #define	XGE_OS_DMA_DIR_FROMDEVICE	DDI_DMA_SYNC_FORKERNEL
3481256Syl150051 #define	XGE_OS_DMA_DIR_BIDIRECTIONAL	-1
3491256Syl150051 #if defined(__x86)
3501256Syl150051 #define	XGE_OS_DMA_USES_IOMMU		0
3511256Syl150051 #else
3521256Syl150051 #define	XGE_OS_DMA_USES_IOMMU		1
3531256Syl150051 #endif
3541256Syl150051 
3551256Syl150051 #define	XGE_OS_INVALID_DMA_ADDR		((dma_addr_t)0)
3561256Syl150051 
xge_os_dma_map(pci_dev_h pdev,pci_dma_h dmah,void * vaddr,size_t size,int dir,int dma_flags)3571256Syl150051 static inline dma_addr_t xge_os_dma_map(pci_dev_h pdev, pci_dma_h dmah,
3581256Syl150051     void *vaddr, size_t size, int dir, int dma_flags) {
3591256Syl150051 	int ret;
3601256Syl150051 	uint_t flags;
3611256Syl150051 	uint_t ncookies;
3621256Syl150051 	ddi_dma_cookie_t dma_cookie;
3631256Syl150051 
3641256Syl150051 	switch (dir) {
3651256Syl150051 	case XGE_OS_DMA_DIR_TODEVICE:
3661256Syl150051 		flags = DDI_DMA_WRITE;
3671256Syl150051 		break;
3681256Syl150051 	case XGE_OS_DMA_DIR_FROMDEVICE:
3691256Syl150051 		flags = DDI_DMA_READ;
3701256Syl150051 		break;
3711256Syl150051 	case XGE_OS_DMA_DIR_BIDIRECTIONAL:
3721256Syl150051 		flags = DDI_DMA_RDWR;
3731256Syl150051 		break;
3741256Syl150051 	default:
3751256Syl150051 		return (0);
3761256Syl150051 	}
3771256Syl150051 
3781256Syl150051 	flags |= (dma_flags & XGE_OS_DMA_CONSISTENT) ?
3791256Syl150051 	    DDI_DMA_CONSISTENT : DDI_DMA_STREAMING;
3801256Syl150051 
3811256Syl150051 	ret = ddi_dma_addr_bind_handle(dmah, NULL, vaddr, size, flags,
3821256Syl150051 	    DDI_DMA_SLEEP, 0, &dma_cookie, &ncookies);
3831256Syl150051 	if (ret != DDI_SUCCESS) {
3841256Syl150051 		return (0);
3851256Syl150051 	}
3861256Syl150051 
3871256Syl150051 	if (ncookies != 1 || dma_cookie.dmac_size < size) {
3881256Syl150051 		(void) ddi_dma_unbind_handle(dmah);
3891256Syl150051 		return (0);
3901256Syl150051 	}
3911256Syl150051 
3921256Syl150051 	return (dma_cookie.dmac_laddress);
3931256Syl150051 }
3941256Syl150051 
xge_os_dma_unmap(pci_dev_h pdev,pci_dma_h dmah,dma_addr_t dma_addr,size_t size,int dir)3951256Syl150051 static inline void xge_os_dma_unmap(pci_dev_h pdev, pci_dma_h dmah,
3961256Syl150051     dma_addr_t dma_addr, size_t size, int dir)
3971256Syl150051 {
3981256Syl150051 	(void) ddi_dma_unbind_handle(dmah);
3991256Syl150051 }
4001256Syl150051 
xge_os_dma_sync(pci_dev_h pdev,pci_dma_h dmah,dma_addr_t dma_addr,u64 dma_offset,size_t length,int dir)4011256Syl150051 static inline void xge_os_dma_sync(pci_dev_h pdev, pci_dma_h dmah,
4021256Syl150051     dma_addr_t dma_addr, u64 dma_offset, size_t length, int dir)
4031256Syl150051 {
4041256Syl150051 	(void) ddi_dma_sync(dmah, dma_offset, length, dir);
4051256Syl150051 }
4061256Syl150051 
4071256Syl150051 #ifdef __cplusplus
4081256Syl150051 }
4091256Syl150051 #endif
4101256Syl150051 
4111256Syl150051 #endif /* _SYS_XGE_OSDEP_H */
412