xge_osdep.h revision 75d94465dbafa487b716482dc36d5150a4ec9853
a23fd118e437af0a7877dd313db8fdaa3537c675yl * CDDL HEADER START
a23fd118e437af0a7877dd313db8fdaa3537c675yl * The contents of this file are subject to the terms of the
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Common Development and Distribution License (the "License").
a23fd118e437af0a7877dd313db8fdaa3537c675yl * You may not use this file except in compliance with the License.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See the License for the specific language governing permissions
a23fd118e437af0a7877dd313db8fdaa3537c675yl * and limitations under the License.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * When distributing Covered Code, include this CDDL HEADER in each
a23fd118e437af0a7877dd313db8fdaa3537c675yl * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * If applicable, add the following below this CDDL HEADER, with the
a23fd118e437af0a7877dd313db8fdaa3537c675yl * fields enclosed by brackets "[]" replaced with your own identifying
a23fd118e437af0a7877dd313db8fdaa3537c675yl * information: Portions Copyright [yyyy] [name of copyright owner]
a23fd118e437af0a7877dd313db8fdaa3537c675yl * CDDL HEADER END
7eced415e5dd557aef2d78483b5a7785f0e13670xw * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Use is subject to license terms.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Copyright (c) 2002-2005 Neterion, Inc.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * All right Reserved.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * FileName : xge_osdep.h
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Description: OSPAL - Solaris
a23fd118e437af0a7877dd313db8fdaa3537c675ylextern "C" {
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* ------------------------- includes and defines ------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#if defined(__sparc)
7eced415e5dd557aef2d78483b5a7785f0e13670xw#if defined(__sparc)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#if defined(_LP64)
8347601bcb0a439f6e50fc36b4039a73d08700e1yl/* LRO defines */
8347601bcb0a439f6e50fc36b4039a73d08700e1yl#define XGE_LL_IP_FAST_CSUM(hdr, len) 0 /* ip_ocsum(hdr, len>>1, 0); */
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* ---------------------- fixed size primitive types ----------------------- */
8347601bcb0a439f6e50fc36b4039a73d08700e1yl/* LRO types */
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* -------------------------- "libc" functionality ------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_memcpy(dst, src, size) bcopy(src, dst, size)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_memcmp(src1, src2, size) bcmp(src1, src2, size)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_sprintf(buf, fmt...) strlen(sprintf(buf, fmt))
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline int xge_os_sprintf(char *buf, char *fmt, ...) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_sprintf(buf, "%02d/%02d/%02d.%02d:%02d:%02d: ", \
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* -------------------- synchronization primitives ------------------------- */
7eced415e5dd557aef2d78483b5a7785f0e13670xw mutex_init(lockp, NULL, MUTEX_DRIVER, DDI_INTR_PRI(irqh))
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_spin_lock_irq(lockp, flags) (flags = flags, mutex_enter(lockp))
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_spin_unlock_irq(lockp, flags) mutex_exit(lockp)
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* x86 arch will never re-order writes, Sparc can */
75d94465dbafa487b716482dc36d5150a4ec9853Josef 'Jeff' Sipek atomic_cas_32((uint32_t *)targetp, cmp, newval) : \
75d94465dbafa487b716482dc36d5150a4ec9853Josef 'Jeff' Sipek atomic_cas_64((uint64_t *)targetp, cmp, newval)
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* ------------------------- misc primitives ------------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_unlikely(x) (x)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_prefetch(a) (a = a)
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* -------------------------- compiler stuffs ------------------------------ */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#if defined(__i386)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __xge_os_cacheline_size 64 /* L1-cache line size: x86_64 */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __xge_os_cacheline_size 64 /* L1-cache line size: sparcv9 */
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* ---------------------- memory primitives -------------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void *__xge_os_malloc(pci_dev_h pdev, unsigned long size,
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void xge_os_free(pci_dev_h pdev, const void *vaddr,
a23fd118e437af0a7877dd313db8fdaa3537c675yl unsigned long size)
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void *__xge_os_dma_malloc(pci_dev_h pdev, unsigned long size,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int dma_flags, pci_dma_h *p_dmah, pci_dma_acc_h *p_dma_acch, char *file,
8347601bcb0a439f6e50fc36b4039a73d08700e1yl DDI_DMA_CONSISTENT : DDI_DMA_STREAMING), DDI_DMA_DONTWAIT, 0,
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define xge_os_dma_malloc(pdev, size, dma_flags, p_dmah, p_dma_acch) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl __xge_os_dma_malloc(pdev, size, dma_flags, p_dmah, p_dma_acch, \
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void xge_os_dma_free(pci_dev_h pdev, const void *vaddr, int size,
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* --------------------------- pci primitives ------------------------------ */
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* --------------------------- io primitives ------------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675yl/* --------------------------- dma primitives ----------------------------- */
a23fd118e437af0a7877dd313db8fdaa3537c675yl#if defined(__x86)
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline dma_addr_t xge_os_dma_map(pci_dev_h pdev, pci_dma_h dmah,
a23fd118e437af0a7877dd313db8fdaa3537c675yl switch (dir) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return (0);
a23fd118e437af0a7877dd313db8fdaa3537c675yl ret = ddi_dma_addr_bind_handle(dmah, NULL, vaddr, size, flags,
a23fd118e437af0a7877dd313db8fdaa3537c675yl return (0);
a23fd118e437af0a7877dd313db8fdaa3537c675yl return (0);
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void xge_os_dma_unmap(pci_dev_h pdev, pci_dma_h dmah,
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic inline void xge_os_dma_sync(pci_dev_h pdev, pci_dma_h dmah,
a23fd118e437af0a7877dd313db8fdaa3537c675yl dma_addr_t dma_addr, u64 dma_offset, size_t length, int dir)
a23fd118e437af0a7877dd313db8fdaa3537c675yl#endif /* _SYS_XGE_OSDEP_H */