diff options
Diffstat (limited to 'sys/contrib/dev/nve/basetype.h')
-rw-r--r-- | sys/contrib/dev/nve/basetype.h | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/sys/contrib/dev/nve/basetype.h b/sys/contrib/dev/nve/basetype.h new file mode 100644 index 0000000..fd38148 --- /dev/null +++ b/sys/contrib/dev/nve/basetype.h @@ -0,0 +1,281 @@ +/***************************************************************************\ +|* *| +|* Copyright 2001-2004 NVIDIA Corporation. All Rights Reserved. *| +|* *| +|* THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL *| +|* TO NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY *| +|* THIRD PARTY IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORP. *| +|* *| +|* THE INFORMATION CONTAINED HEREIN IS PROVIDED "AS IS" WITHOUT *| +|* EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING ALL IMPLIED *| +|* WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A *| +|* PARTICULAR PURPOSE. *| +|* *| +\***************************************************************************/ + + +/*++ + +File: + + basetype.h + + +Abstract: + + This file contains the base type definitions used by the networking driver. + + +Revision History: + + SNo. Date Author Description + 1. 2/7/2000 AJha Created + +*/ + +#ifndef _BASETYPE_H_ +#define _BASETYPE_H_ + +#ifndef IN +#define IN +#endif + +#ifndef OUT +#define OUT +#endif + +// +// Useful "types" + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#if 1 +// +// Don't use as these are going to be deleted soon. Use NV_ instead +// +#define VOID void +typedef VOID *PVOID; + +typedef unsigned char UCHAR; +typedef UCHAR * PUCHAR; +typedef unsigned short USHORT; +typedef USHORT * PUSHORT; +#ifdef linux +typedef unsigned int ULONG; +#else +typedef unsigned long ULONG; +#endif +typedef ULONG * PULONG; + +typedef char CHAR; +typedef short SHORT; +typedef long LONG; + +typedef unsigned int UINT; +typedef unsigned int *PUINT; + + +#endif + + +#define NV_VOID void +typedef NV_VOID *PNV_VOID; + +typedef unsigned long NV_BOOLEAN, *PNV_BOOLEAN; + +typedef unsigned char NV_UINT8, *PNV_UINT8; +typedef unsigned short NV_UINT16, *PNV_UINT16; +#ifdef linux +typedef unsigned int NV_UINT32, *PNV_UINT32; +#else +typedef unsigned long NV_UINT32, *PNV_UINT32; +#endif + +typedef signed char NV_SINT8, *PNV_SINT8; +typedef signed short NV_SINT16, *PNV_SINT16; +typedef signed long NV_SINT32, *PNV_SINT32; + + +#if defined(linux) + + typedef unsigned long long NV_UINT64, *PNV_UINT64; + typedef signed long long NV_SINT64, *PNV_SINT64; + +#else + #if _MSC_VER >= 1200 // MSVC 6.0 onwards + typedef unsigned __int64 NV_UINT64, *PNV_UINT64; + typedef signed __int64 NV_SINT64, *PNV_SINT64; + #else + typedef unsigned long NV_UINT64, *PNV_UINT64; + typedef signed long NV_SINT64, *PNV_SINT64; + #endif + +#endif + +#ifndef _AMD64_ +typedef unsigned int NV_UINT; +typedef signed int NV_INT; +#else + +#if defined(linux) + +typedef unsigned long long NV_UINT; +typedef signed long long NV_INT; + +#else + +typedef unsigned __int64 NV_UINT; +typedef signed __int64 NV_INT; + +#endif +#endif + + +// +// Floating point definitions +// +typedef float NV_REAL32; // 4-byte floating point +typedef double NV_REAL64; // 8-byte floating point + + + +// +// Bit defintions +// +#define NV_BIT(bitpos) (1 << (bitpos)) + +// NV_BIT_SET +// Sets the specified bit position (0..31). +// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make sure bitpos fits into it. +// x = 0xA0 +// NV_BIT_SET(x, 1) +// Result: x = 0xA2 +#define NV_BIT_SET(bits, bitpos) ((bits) |= (NV_BIT(bitpos))) + +// NV_BIT_CLEAR +// Clears the specified bit position (0..31) +// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make sure bitpos fits into it. +// x = 0xAA +// NV_BIT_CLEAR(x, 1) +// Result: x = 0xA8 +#define NV_BIT_CLEAR(bits, bitpos) ((bits) &= (~NV_BIT(bitpos))) + +// NV_BIT_GET +// Gets the bit at the specified bit position (0..31) +// Parameter bits can be 1 byte to 4 bytes, but the caller needs to make sure bitpos fits into it. +// Result is either 1 or 0. +// x = 0xAA +// NV_BIT_GET(x, 1) +// Result: x = 1 +#define NV_BIT_GET(bits, bitpos) (((bits) >> (bitpos)) & 0x0001) + + +// NV_BIT_GETVALUE +// Gets the value from a 32 bit ULONG at specified bit position. +// Parameter bits needs to be 4 bytes long. +// Ex. ul32 = 0xFEDCBA98 +// ulVal = NV_BIT_GETVALUE(ul32, 3, 0) : Gets value from Bit position 3 to 0 +// Result : ulVal = 8 +#define NV_BIT_GETVALUE(ulOrigValue, bitposHi, bitposLow) (((ulOrigValue) >> (bitposLow)) & (~(0xFFFFFFFF << ((bitposHi) - (bitposLow) +1)))) + +// NV_BIT_SETVALUE +// Set a value in a 32 bit ULONG at a specific bit position. +// Parameter bits needs to be 4 bytes long. +// Ex. ul32 = 0xFEDCBA98 +// NV_BIT_SETVALUE(ul32, 0xF, 3, 0) : Sets value at Bit position 3 to 0 +// Result : ul32 becomes 0xFEDCBA9F +#define NV_BIT_SETVALUE(ulOrigValue, ulWindowValue, bitposHi, bitposLow) \ + ((ulOrigValue) = ((((ulOrigValue) & (~ ((0xFFFFFFFF >> (31 - (bitposHi))) & (0xFFFFFFFF << (bitposLow))))) | ((ulWindowValue) << (bitposLow))))) + + +#define NV_BYTE(ulus, bytepos) ((ulus >> (8 * (bytepos))) & 0xFF) + + +#define SWAP_U16(us) ((((us) & 0x00FF) << 8) | \ + (((us) & 0xFF00) >> 8)) + +#define SWAP_U32(ul) ((((ul) & 0x000000FF) << 24) | \ + (((ul) & 0x0000FF00) << 8) | \ + (((ul) & 0x00FF0000) >> 8) | \ + (((ul) & 0xFF000000) >> 24)) + +#define NV_FIELD_OFFSET(TYPE, FIELD) ((NV_UINT32)((NV_UINT64)&((TYPE *)0)->FIELD)) + +#define ADDRESS_OFFSET(structure, member) ((NV_UINT32) ((NV_UINT8 *) &(structure).member \ + - (NV_UINT8 *) &(structure))) + + +#define NV_MIN(a, b) ((a < b) ? a : b) +#define NV_MAX(a, b) ((a > b) ? a : b) + +#ifdef AMD64 +#define PNV_VOID_TO_NV_UINT64(x) ((NV_UINT64)(x)) +#define PNV_VOID_TO_NV_UINT32(x) ((NV_UINT32)(NV_UINT64)(x)) +#define NV_UINT64_TO_PNV_VOID(x) ((PNV_VOID)(x)) +#define NV_UINT32_TO_PNV_VOID(x) ((PNV_VOID)(NV_UINT64)(x)) +#else +#define PNV_VOID_TO_NV_UINT64(x) ((NV_UINT64)(NV_UINT32)(x)) +#define PNV_VOID_TO_NV_UINT32(x) ((NV_UINT32)(x)) +#define NV_UINT64_TO_PNV_VOID(x) ((PNV_VOID)(NV_UINT32)(x)) +#define NV_UINT32_TO_PNV_VOID(x) ((PNV_VOID)(x)) +#endif + +#define NV_MAKE_TAG32(s) (((NV_UINT32)((s)[3]) << 24) | ((NV_UINT32)((s)[2]) << 16) | \ + ((NV_UINT32)((s)[1]) << 8) | ((NV_UINT32)((s)[0]))) + +#define NV_MAKE_TAG64(s) (((NV_UINT64)((s)[7]) << 56) | ((NV_UINT64)((s)[6]) << 48) | \ + ((NV_UINT64)((s)[5]) << 40) | ((NV_UINT64)((s)[4]) << 32) | \ + ((NV_UINT64)((s)[3]) << 24) | ((NV_UINT64)((s)[2]) << 16) | \ + ((NV_UINT64)((s)[1]) << 8) | ((NV_UINT64)((s)[0]))) + +typedef union _NVLARGE_INTEGER { + +#if 0 + // NO UNNAMED UNIONS ALLOWED !@ + struct { + NV_UINT32 LowPart; + NV_SINT32 HighPart; + }; +#endif + + struct { + NV_UINT32 LowPart; + NV_SINT32 HighPart; + } u; + + NV_SINT64 QuadPart; + +} NVLARGE_INTEGER, *PNVLARGE_INTEGER; + + +#ifndef LINUX +typedef unsigned short NV_WCHAR; +#else +typedef unsigned long NV_WCHAR; +#endif + +typedef NV_WCHAR *PNV_WSTR; + +#if defined(linux) +#if !defined(NV_API_CALL) +#if defined (__i386__) +#define NV_API_CALL __attribute__ ((regparm(0))) +#else +#define NV_API_CALL +#endif +#endif +#else +#define NV_API_CALL +#endif + +#endif // _BASETYPE_H_ |