Root/target/linux/brcm-2.4/files/arch/mips/bcm947xx/include/typedefs.h

1/*
2 * Copyright 2007, Broadcom Corporation
3 * All Rights Reserved.
4 *
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.
9 */
10
11#ifndef _TYPEDEFS_H_
12#define _TYPEDEFS_H_
13
14
15/* Define 'SITE_TYPEDEFS' in the compile to include a site specific
16 * typedef file "site_typedefs.h".
17 *
18 * If 'SITE_TYPEDEFS' is not defined, then the "Inferred Typedefs"
19 * section of this file makes inferences about the compile environment
20 * based on defined symbols and possibly compiler pragmas.
21 *
22 * Following these two sections is the "Default Typedefs"
23 * section. This section is only prcessed if 'USE_TYPEDEF_DEFAULTS' is
24 * defined. This section has a default set of typedefs and a few
25 * proprocessor symbols (TRUE, FALSE, NULL, ...).
26 */
27
28#ifdef SITE_TYPEDEFS
29
30/*
31 * Site Specific Typedefs
32 *
33 */
34
35#include "site_typedefs.h"
36
37#else
38
39/*
40 * Inferred Typedefs
41 *
42 */
43
44/* Infer the compile environment based on preprocessor symbols and pramas.
45 * Override type definitions as needed, and include configuration dependent
46 * header files to define types.
47 */
48
49#ifdef __cplusplus
50
51#define TYPEDEF_BOOL
52#ifndef FALSE
53#define FALSE false
54#endif
55#ifndef TRUE
56#define TRUE true
57#endif
58
59#else /* ! __cplusplus */
60
61#if defined(_WIN32)
62
63#define TYPEDEF_BOOL
64typedef unsigned char bool; /* consistent w/BOOL */
65
66#endif /* _WIN32 */
67
68#endif /* ! __cplusplus */
69
70/* use the Windows ULONG_PTR type when compiling for 64 bit */
71#if defined(_WIN64) && !defined(EFI)
72#include <basetsd.h>
73#define TYPEDEF_UINTPTR
74typedef ULONG_PTR uintptr;
75#elif defined(__x86_64__)
76#define TYPEDEF_UINTPTR
77typedef unsigned long long int uintptr;
78#endif
79
80
81#if defined(_MINOSL_)
82#define _NEED_SIZE_T_
83#endif
84
85#if defined(EFI) && !defined(_WIN64)
86#define _NEED_SIZE_T_
87#endif
88
89#if defined(_NEED_SIZE_T_)
90typedef long unsigned int size_t;
91#endif
92
93#ifdef __DJGPP__
94typedef long unsigned int size_t;
95#endif /* __DJGPP__ */
96
97#ifdef _MSC_VER /* Microsoft C */
98#define TYPEDEF_INT64
99#define TYPEDEF_UINT64
100typedef signed __int64 int64;
101typedef unsigned __int64 uint64;
102#endif
103
104#if defined(MACOSX)
105#define TYPEDEF_BOOL
106#endif
107
108#if defined(__NetBSD__)
109#define TYPEDEF_ULONG
110#endif
111
112
113#ifdef linux
114#define TYPEDEF_UINT
115#define TYPEDEF_USHORT
116#define TYPEDEF_ULONG
117#ifdef __KERNEL__
118#include <linux/version.h>
119#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19))
120#define TYPEDEF_BOOL
121#endif /* >= 2.6.19 */
122#endif /* __KERNEL__ */
123#endif /* linux */
124
125#if !defined(linux) && !defined(_WIN32) && !defined(_CFE_) && \
126    !defined(_HNDRTE_) && !defined(_MINOSL_) && !defined(__DJGPP__) && !defined(__IOPOS__)
127#define TYPEDEF_UINT
128#define TYPEDEF_USHORT
129#endif
130
131
132/* Do not support the (u)int64 types with strict ansi for GNU C */
133#if defined(__GNUC__) && defined(__STRICT_ANSI__)
134#define TYPEDEF_INT64
135#define TYPEDEF_UINT64
136#endif
137
138/* ICL accepts unsigned 64 bit type only, and complains in ANSI mode
139 * for singned or unsigned
140 */
141#if defined(__ICL)
142
143#define TYPEDEF_INT64
144
145#if defined(__STDC__)
146#define TYPEDEF_UINT64
147#endif
148
149#endif /* __ICL */
150
151#if !defined(_WIN32) && !defined(_CFE_) && !defined(_MINOSL_) && \
152    !defined(__DJGPP__) && !defined(__IOPOS__)
153
154/* pick up ushort & uint from standard types.h */
155#if defined(linux) && defined(__KERNEL__)
156
157#include <linux/types.h> /* sys/types.h and linux/types.h are oil and water */
158
159#else
160
161#include <sys/types.h>
162
163#endif
164
165#endif
166
167#if defined(MACOSX)
168
169#ifdef __BIG_ENDIAN__
170#define IL_BIGENDIAN
171#else
172#ifdef IL_BIGENDIAN
173#error "IL_BIGENDIAN was defined for a little-endian compile"
174#endif
175#endif /* __BIG_ENDIAN__ */
176
177#if !defined(__cplusplus)
178
179#if defined(__i386__)
180typedef unsigned char bool;
181#else
182typedef unsigned int bool;
183#endif
184#define TYPE_BOOL 1
185enum {
186    false = 0,
187    true = 1
188};
189
190#if defined(KERNEL)
191#include <IOKit/IOTypes.h>
192#endif /* KERNEL */
193
194#endif /* __cplusplus */
195
196#endif /* MACOSX */
197
198
199/* use the default typedefs in the next section of this file */
200#define USE_TYPEDEF_DEFAULTS
201
202#endif /* SITE_TYPEDEFS */
203
204
205/*
206 * Default Typedefs
207 *
208 */
209
210#ifdef USE_TYPEDEF_DEFAULTS
211#undef USE_TYPEDEF_DEFAULTS
212
213#ifndef TYPEDEF_BOOL
214typedef /* @abstract@ */ unsigned char bool;
215#endif
216
217/* define uchar, ushort, uint, ulong */
218
219#ifndef TYPEDEF_UCHAR
220typedef unsigned char uchar;
221#endif
222
223#ifndef TYPEDEF_USHORT
224typedef unsigned short ushort;
225#endif
226
227#ifndef TYPEDEF_UINT
228typedef unsigned int uint;
229#endif
230
231#ifndef TYPEDEF_ULONG
232typedef unsigned long ulong;
233#endif
234
235/* define [u]int8/16/32/64, uintptr */
236
237#ifndef TYPEDEF_UINT8
238typedef unsigned char uint8;
239#endif
240
241#ifndef TYPEDEF_UINT16
242typedef unsigned short uint16;
243#endif
244
245#ifndef TYPEDEF_UINT32
246typedef unsigned int uint32;
247#endif
248
249#ifndef TYPEDEF_UINT64
250typedef unsigned long long uint64;
251#endif
252
253#ifndef TYPEDEF_UINTPTR
254typedef unsigned int uintptr;
255#endif
256
257#ifndef TYPEDEF_INT8
258typedef signed char int8;
259#endif
260
261#ifndef TYPEDEF_INT16
262typedef signed short int16;
263#endif
264
265#ifndef TYPEDEF_INT32
266typedef signed int int32;
267#endif
268
269#ifndef TYPEDEF_INT64
270typedef signed long long int64;
271#endif
272
273/* define float32/64, float_t */
274
275#ifndef TYPEDEF_FLOAT32
276typedef float float32;
277#endif
278
279#ifndef TYPEDEF_FLOAT64
280typedef double float64;
281#endif
282
283/*
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.
287 */
288
289#ifndef TYPEDEF_FLOAT_T
290
291#if defined(FLOAT32)
292typedef float32 float_t;
293#else /* default to double precision floating point */
294typedef float64 float_t;
295#endif
296
297#endif /* TYPEDEF_FLOAT_T */
298
299/* define macro values */
300
301#ifndef FALSE
302#define FALSE 0
303#endif
304
305#ifndef TRUE
306#define TRUE 1 /* TRUE */
307#endif
308
309#ifndef NULL
310#define NULL 0
311#endif
312
313#ifndef OFF
314#define OFF 0
315#endif
316
317#ifndef ON
318#define ON 1 /* ON = 1 */
319#endif
320
321#define AUTO (-1) /* Auto = -1 */
322
323/* define PTRSZ, INLINE */
324
325#ifndef PTRSZ
326#define PTRSZ sizeof(char*)
327#endif
328
329#ifndef INLINE
330
331#ifdef _MSC_VER
332
333#define INLINE __inline
334
335#elif defined(__GNUC__)
336
337#define INLINE __inline__
338
339#else
340
341#define INLINE
342
343#endif /* _MSC_VER */
344
345#endif /* INLINE */
346
347#undef TYPEDEF_BOOL
348#undef TYPEDEF_UCHAR
349#undef TYPEDEF_USHORT
350#undef TYPEDEF_UINT
351#undef TYPEDEF_ULONG
352#undef TYPEDEF_UINT8
353#undef TYPEDEF_UINT16
354#undef TYPEDEF_UINT32
355#undef TYPEDEF_UINT64
356#undef TYPEDEF_UINTPTR
357#undef TYPEDEF_INT8
358#undef TYPEDEF_INT16
359#undef TYPEDEF_INT32
360#undef TYPEDEF_INT64
361#undef TYPEDEF_FLOAT32
362#undef TYPEDEF_FLOAT64
363#undef TYPEDEF_FLOAT_T
364
365#endif /* USE_TYPEDEF_DEFAULTS */
366
367/*
368 * Including the bcmdefs.h here, to make sure everyone including typedefs.h
369 * gets this automatically
370*/
371#include "bcmdefs.h"
372
373#endif /* _TYPEDEFS_H_ */
374

Archive Download this file



interactive