2 * Copyright 2004, Broadcom Corporation
5 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
6 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
7 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
8 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
16 /* Define 'SITE_TYPEDEFS' in the compile to include a site specific
17 * typedef file "site_typedefs.h".
19 * If 'SITE_TYPEDEFS' is not defined, then the "Inferred Typedefs"
20 * section of this file makes inferences about the compile environment
21 * based on defined symbols and possibly compiler pragmas.
23 * Following these two sections is the "Default Typedefs"
24 * section. This section is only prcessed if 'USE_TYPEDEF_DEFAULTS' is
25 * defined. This section has a default set of typedefs and a few
26 * proprocessor symbols (TRUE, FALSE, NULL, ...).
32 * Site Specific Typedefs
36 #include "site_typedefs.h"
45 /* Infer the compile environment based on preprocessor symbols and pramas.
46 * Override type definitions as needed, and include configuration dependent
47 * header files to define types.
60 #else /* ! __cplusplus */
65 typedef unsigned char bool; /* consistent w/BOOL */
69 #endif /* ! __cplusplus */
71 /* use the Windows ULONG_PTR type when compiling for 64 bit */
72 #if defined(_WIN64) && !defined(EFI)
74 #define TYPEDEF_UINTPTR
75 typedef ULONG_PTR uintptr
;
76 #elif defined(__x86_64__)
77 #define TYPEDEF_UINTPTR
78 typedef unsigned long long int uintptr
;
86 #if defined(EFI) && !defined(_WIN64)
90 #if defined(_NEED_SIZE_T_)
91 typedef long unsigned int size_t;
95 typedef long unsigned int size_t;
96 #endif /* __DJGPP__ */
98 #ifdef _MSC_VER /* Microsoft C */
100 #define TYPEDEF_UINT64
101 typedef signed __int64 int64
;
102 typedef unsigned __int64 uint64
;
109 #if defined(__NetBSD__)
110 #define TYPEDEF_ULONG
116 #define TYPEDEF_USHORT
117 #define TYPEDEF_ULONG
119 #include <linux/version.h>
120 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19))
122 #endif /* >= 2.6.19 */
123 #endif /* __KERNEL__ */
126 #if !defined(linux) && !defined(_WIN32) && !defined(_CFE_) && \
127 !defined(_HNDRTE_) && !defined(_MINOSL_) && !defined(__DJGPP__) && !defined(__IOPOS__)
129 #define TYPEDEF_USHORT
133 /* Do not support the (u)int64 types with strict ansi for GNU C */
134 #if defined(__GNUC__) && defined(__STRICT_ANSI__)
135 #define TYPEDEF_INT64
136 #define TYPEDEF_UINT64
139 /* ICL accepts unsigned 64 bit type only, and complains in ANSI mode
140 * for singned or unsigned */
143 #define TYPEDEF_INT64
145 #if defined(__STDC__)
146 #define TYPEDEF_UINT64
151 #if !defined(_WIN32) && !defined(_CFE_) && !defined(_MINOSL_) && \
152 !defined(__DJGPP__) && !defined(__IOPOS__)
154 /* pick up ushort & uint from standard types.h */
155 #if defined(linux) && defined(__KERNEL__)
157 #include <linux/types.h> /* sys/types.h and linux/types.h are oil and water */
161 #include <sys/types.h>
169 #ifdef __BIG_ENDIAN__
173 #error "IL_BIGENDIAN was defined for a little-endian compile"
175 #endif /* __BIG_ENDIAN__ */
177 #if !defined(__cplusplus)
179 #if defined(__i386__)
180 typedef unsigned char bool;
182 typedef unsigned int bool;
191 #include <IOKit/IOTypes.h>
194 #endif /* __cplusplus */
199 /* use the default typedefs in the next section of this file */
200 #define USE_TYPEDEF_DEFAULTS
202 #endif /* SITE_TYPEDEFS */
210 #ifdef USE_TYPEDEF_DEFAULTS
211 #undef USE_TYPEDEF_DEFAULTS
214 typedef /* @abstract@ */ unsigned char bool;
217 /* define uchar, ushort, uint, ulong */
219 #ifndef TYPEDEF_UCHAR
220 typedef unsigned char uchar
;
223 #ifndef TYPEDEF_USHORT
224 typedef unsigned short ushort
;
228 typedef unsigned int uint
;
231 #ifndef TYPEDEF_ULONG
232 typedef unsigned long ulong
;
235 /* define [u]int8/16/32/64, uintptr */
237 #ifndef TYPEDEF_UINT8
238 typedef unsigned char uint8
;
241 #ifndef TYPEDEF_UINT16
242 typedef unsigned short uint16
;
245 #ifndef TYPEDEF_UINT32
246 typedef unsigned int uint32
;
249 #ifndef TYPEDEF_UINT64
250 typedef unsigned long long uint64
;
253 #ifndef TYPEDEF_UINTPTR
254 typedef unsigned int uintptr
;
258 typedef signed char int8
;
261 #ifndef TYPEDEF_INT16
262 typedef signed short int16
;
265 #ifndef TYPEDEF_INT32
266 typedef signed int int32
;
269 #ifndef TYPEDEF_INT64
270 typedef signed long long int64
;
273 /* define float32/64, float_t */
275 #ifndef TYPEDEF_FLOAT32
276 typedef float float32
;
279 #ifndef TYPEDEF_FLOAT64
280 typedef double float64
;
284 * abstracted floating point type allows for compile time selection of
285 * single or double precision arithmetic. Compiling with -DFLOAT32
286 * selects single precision; the default is double precision.
289 #ifndef TYPEDEF_FLOAT_T
292 typedef float32 float_t
;
293 #else /* default to double precision floating point */
294 typedef float64 float_t
;
297 #endif /* TYPEDEF_FLOAT_T */
299 /* define macro values */
306 #define TRUE 1 /* TRUE */
318 #define ON 1 /* ON = 1 */
321 #define AUTO (-1) /* Auto = -1 */
323 /* define PTRSZ, INLINE */
326 #define PTRSZ sizeof(char*)
333 #define INLINE __inline
335 #elif defined(__GNUC__)
337 #define INLINE __inline__
343 #endif /* _MSC_VER */
349 #undef TYPEDEF_USHORT
353 #undef TYPEDEF_UINT16
354 #undef TYPEDEF_UINT32
355 #undef TYPEDEF_UINT64
356 #undef TYPEDEF_UINTPTR
361 #undef TYPEDEF_FLOAT32
362 #undef TYPEDEF_FLOAT64
363 #undef TYPEDEF_FLOAT_T
365 #endif /* USE_TYPEDEF_DEFAULTS */
368 * Including the bcmdefs.h here, to make sure everyone including typedefs.h
369 * gets this automatically
373 #endif /* _TYPEDEFS_H_ */