1*d14abf15SRobert Mustacchi /*******************************************************************************
2*d14abf15SRobert Mustacchi  * CDDL HEADER START
3*d14abf15SRobert Mustacchi  *
4*d14abf15SRobert Mustacchi  * The contents of this file are subject to the terms of the
5*d14abf15SRobert Mustacchi  * Common Development and Distribution License (the "License").
6*d14abf15SRobert Mustacchi  * You may not use this file except in compliance with the License.
7*d14abf15SRobert Mustacchi  *
8*d14abf15SRobert Mustacchi  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*d14abf15SRobert Mustacchi  * or http://www.opensolaris.org/os/licensing.
10*d14abf15SRobert Mustacchi  * See the License for the specific language governing permissions
11*d14abf15SRobert Mustacchi  * and limitations under the License.
12*d14abf15SRobert Mustacchi  *
13*d14abf15SRobert Mustacchi  * When distributing Covered Code, include this CDDL HEADER in each
14*d14abf15SRobert Mustacchi  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*d14abf15SRobert Mustacchi  * If applicable, add the following below this CDDL HEADER, with the
16*d14abf15SRobert Mustacchi  * fields enclosed by brackets "[]" replaced with your own identifying
17*d14abf15SRobert Mustacchi  * information: Portions Copyright [yyyy] [name of copyright owner]
18*d14abf15SRobert Mustacchi  *
19*d14abf15SRobert Mustacchi  * CDDL HEADER END
20*d14abf15SRobert Mustacchi  *
21*d14abf15SRobert Mustacchi  * Copyright 2014 QLogic Corporation
22*d14abf15SRobert Mustacchi  * The contents of this file are subject to the terms of the
23*d14abf15SRobert Mustacchi  * QLogic End User License (the "License").
24*d14abf15SRobert Mustacchi  * You may not use this file except in compliance with the License.
25*d14abf15SRobert Mustacchi  *
26*d14abf15SRobert Mustacchi  * You can obtain a copy of the License at
27*d14abf15SRobert Mustacchi  * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
28*d14abf15SRobert Mustacchi  * QLogic_End_User_Software_License.txt
29*d14abf15SRobert Mustacchi  * See the License for the specific language governing permissions
30*d14abf15SRobert Mustacchi  * and limitations under the License.
31*d14abf15SRobert Mustacchi  *
32*d14abf15SRobert Mustacchi  ****************************************************************************/
33*d14abf15SRobert Mustacchi #ifndef __bcmtype_h__
34*d14abf15SRobert Mustacchi #define __bcmtype_h__
35*d14abf15SRobert Mustacchi 
36*d14abf15SRobert Mustacchi #if defined(UEFI) && defined (EVEREST_DIAG)
37*d14abf15SRobert Mustacchi #include <machine/endian.h>
38*d14abf15SRobert Mustacchi #endif
39*d14abf15SRobert Mustacchi 
40*d14abf15SRobert Mustacchi #ifndef IN
41*d14abf15SRobert Mustacchi #define IN
42*d14abf15SRobert Mustacchi #endif /* IN */
43*d14abf15SRobert Mustacchi 
44*d14abf15SRobert Mustacchi #ifndef OUT
45*d14abf15SRobert Mustacchi #define OUT
46*d14abf15SRobert Mustacchi #endif /* OUT */
47*d14abf15SRobert Mustacchi 
48*d14abf15SRobert Mustacchi #ifndef INOUT
49*d14abf15SRobert Mustacchi #define INOUT
50*d14abf15SRobert Mustacchi #endif /* INOUT */
51*d14abf15SRobert Mustacchi 
52*d14abf15SRobert Mustacchi #ifndef OPTIONAL
53*d14abf15SRobert Mustacchi #define OPTIONAL
54*d14abf15SRobert Mustacchi #endif /* OPTIONAL */
55*d14abf15SRobert Mustacchi 
56*d14abf15SRobert Mustacchi #if defined(__LINUX) || defined (USER_LINUX)
57*d14abf15SRobert Mustacchi 
58*d14abf15SRobert Mustacchi #ifdef __LINUX
59*d14abf15SRobert Mustacchi 
60*d14abf15SRobert Mustacchi #ifdef __BIG_ENDIAN
61*d14abf15SRobert Mustacchi #ifndef BIG_ENDIAN
62*d14abf15SRobert Mustacchi #define BIG_ENDIAN
63*d14abf15SRobert Mustacchi #endif
64*d14abf15SRobert Mustacchi #else /* __LITTLE_ENDIAN */
65*d14abf15SRobert Mustacchi #ifndef LITTLE_ENDIAN
66*d14abf15SRobert Mustacchi #define LITTLE_ENDIAN
67*d14abf15SRobert Mustacchi #endif
68*d14abf15SRobert Mustacchi #endif
69*d14abf15SRobert Mustacchi 
70*d14abf15SRobert Mustacchi /*
71*d14abf15SRobert Mustacchi  * define underscore-t types
72*d14abf15SRobert Mustacchi  */
73*d14abf15SRobert Mustacchi typedef u64 u64_t;
74*d14abf15SRobert Mustacchi typedef u32 u32_t;
75*d14abf15SRobert Mustacchi typedef u16 u16_t;
76*d14abf15SRobert Mustacchi typedef u8  u8_t;
77*d14abf15SRobert Mustacchi 
78*d14abf15SRobert Mustacchi typedef s64 s64_t;
79*d14abf15SRobert Mustacchi typedef s32 s32_t;
80*d14abf15SRobert Mustacchi typedef s16 s16_t;
81*d14abf15SRobert Mustacchi typedef s8  s8_t;
82*d14abf15SRobert Mustacchi 
83*d14abf15SRobert Mustacchi typedef unsigned long int_ptr_t;
84*d14abf15SRobert Mustacchi 
85*d14abf15SRobert Mustacchi #else /* USER_LINUX */
86*d14abf15SRobert Mustacchi 
87*d14abf15SRobert Mustacchi #if __BYTE_ORDER == __LITTLE_ENDIAN
88*d14abf15SRobert Mustacchi #undef BIG_ENDIAN
89*d14abf15SRobert Mustacchi #undef __BIG_ENDIAN
90*d14abf15SRobert Mustacchi #else
91*d14abf15SRobert Mustacchi #undef LITTLE_ENDIAN
92*d14abf15SRobert Mustacchi #undef __LITTLE_ENDIAN
93*d14abf15SRobert Mustacchi #endif
94*d14abf15SRobert Mustacchi 
95*d14abf15SRobert Mustacchi /*
96*d14abf15SRobert Mustacchi  * define underscore-t types
97*d14abf15SRobert Mustacchi  */
98*d14abf15SRobert Mustacchi typedef u_int64_t u64_t;
99*d14abf15SRobert Mustacchi typedef u_int32_t u32_t;
100*d14abf15SRobert Mustacchi typedef u_int16_t u16_t;
101*d14abf15SRobert Mustacchi typedef u_int8_t  u8_t;
102*d14abf15SRobert Mustacchi 
103*d14abf15SRobert Mustacchi typedef int64_t s64_t;
104*d14abf15SRobert Mustacchi typedef int32_t s32_t;
105*d14abf15SRobert Mustacchi typedef int16_t s16_t;
106*d14abf15SRobert Mustacchi typedef int8_t  s8_t;
107*d14abf15SRobert Mustacchi 
108*d14abf15SRobert Mustacchi typedef u_int64_t u64;
109*d14abf15SRobert Mustacchi typedef u_int32_t u32;
110*d14abf15SRobert Mustacchi typedef u_int16_t u16;
111*d14abf15SRobert Mustacchi typedef u_int8_t  u8;
112*d14abf15SRobert Mustacchi 
113*d14abf15SRobert Mustacchi typedef int64_t s64;
114*d14abf15SRobert Mustacchi typedef int32_t s32;
115*d14abf15SRobert Mustacchi typedef int16_t s16;
116*d14abf15SRobert Mustacchi typedef int8_t  s8;
117*d14abf15SRobert Mustacchi 
118*d14abf15SRobert Mustacchi typedef unsigned long int_ptr_t;
119*d14abf15SRobert Mustacchi 
120*d14abf15SRobert Mustacchi /* Define upper case types */
121*d14abf15SRobert Mustacchi 
122*d14abf15SRobert Mustacchi typedef u64_t 	U64;
123*d14abf15SRobert Mustacchi typedef u32_t 	U32;
124*d14abf15SRobert Mustacchi typedef u16_t 	U16;
125*d14abf15SRobert Mustacchi typedef u8_t  	U8;
126*d14abf15SRobert Mustacchi 
127*d14abf15SRobert Mustacchi typedef s64_t	S64;
128*d14abf15SRobert Mustacchi typedef s32_t	S32;
129*d14abf15SRobert Mustacchi typedef s16_t	S16;
130*d14abf15SRobert Mustacchi typedef s8_t	S8;
131*d14abf15SRobert Mustacchi 
132*d14abf15SRobert Mustacchi #endif
133*d14abf15SRobert Mustacchi 
134*d14abf15SRobert Mustacchi 
135*d14abf15SRobert Mustacchi 
136*d14abf15SRobert Mustacchi #else
137*d14abf15SRobert Mustacchi /*
138*d14abf15SRobert Mustacchi  * define the data model
139*d14abf15SRobert Mustacchi  */
140*d14abf15SRobert Mustacchi #if !defined(LP64) && !defined(P64) && !defined(LLP64)
141*d14abf15SRobert Mustacchi   /* VC 32-bit compiler 5.0 or later */
142*d14abf15SRobert Mustacchi   #if (defined(_MSC_VER) && (_MSC_VER > 800)) || defined(TARGET_WINDOWS)
143*d14abf15SRobert Mustacchi     #define P64
144*d14abf15SRobert Mustacchi   #elif defined(__sun)
145*d14abf15SRobert Mustacchi     /* Solaris */
146*d14abf15SRobert Mustacchi     #define LP64
147*d14abf15SRobert Mustacchi   #elif defined(_HPUX_SOURCE)
148*d14abf15SRobert Mustacchi     /* HP/UX */
149*d14abf15SRobert Mustacchi     #define LP64
150*d14abf15SRobert Mustacchi   #elif defined(__FreeBSD__)
151*d14abf15SRobert Mustacchi     /* FreeBSD */
152*d14abf15SRobert Mustacchi     #define LP64
153*d14abf15SRobert Mustacchi   #elif defined(LINUX)
154*d14abf15SRobert Mustacchi     /* Linux */
155*d14abf15SRobert Mustacchi     #define LP64
156*d14abf15SRobert Mustacchi   #elif defined(__bsdi__)
157*d14abf15SRobert Mustacchi     /* BSDI */
158*d14abf15SRobert Mustacchi     #define LP64
159*d14abf15SRobert Mustacchi   #elif defined(_IRIX)
160*d14abf15SRobert Mustacchi     /* IRIX */
161*d14abf15SRobert Mustacchi     #define LP64
162*d14abf15SRobert Mustacchi   #elif defined(UNIXWARE)
163*d14abf15SRobert Mustacchi     /* UnixWare */
164*d14abf15SRobert Mustacchi     #define LP64
165*d14abf15SRobert Mustacchi   #endif /* UNIXWARE */
166*d14abf15SRobert Mustacchi #endif /* !LP64 && !P64 && !LLP64 */
167*d14abf15SRobert Mustacchi 
168*d14abf15SRobert Mustacchi /*
169*d14abf15SRobert Mustacchi  * define sized type
170*d14abf15SRobert Mustacchi  */
171*d14abf15SRobert Mustacchi #if defined(P64) || defined(LLP64)
172*d14abf15SRobert Mustacchi   /* P64 */
173*d14abf15SRobert Mustacchi   typedef unsigned __int64    U64;
174*d14abf15SRobert Mustacchi   typedef unsigned int        U32;
175*d14abf15SRobert Mustacchi   typedef unsigned short      U16;
176*d14abf15SRobert Mustacchi   typedef unsigned char       U8;
177*d14abf15SRobert Mustacchi   typedef signed __int64      S64;
178*d14abf15SRobert Mustacchi   typedef signed int          S32;
179*d14abf15SRobert Mustacchi   typedef signed short        S16;
180*d14abf15SRobert Mustacchi   typedef signed char         S8;
181*d14abf15SRobert Mustacchi 
182*d14abf15SRobert Mustacchi   #if defined(IA64)  || defined(AMD64)
183*d14abf15SRobert Mustacchi         typedef U64  int_ptr_t;
184*d14abf15SRobert Mustacchi   #else
185*d14abf15SRobert Mustacchi     #ifndef UEFI64
186*d14abf15SRobert Mustacchi         typedef unsigned long       int_ptr_t;
187*d14abf15SRobert Mustacchi     #endif
188*d14abf15SRobert Mustacchi   #endif
189*d14abf15SRobert Mustacchi #elif defined(LP64)
190*d14abf15SRobert Mustacchi   /* LP64: Sun, HP and etc */
191*d14abf15SRobert Mustacchi   typedef unsigned long long  U64;
192*d14abf15SRobert Mustacchi   typedef unsigned int        U32;
193*d14abf15SRobert Mustacchi   typedef unsigned short      U16;
194*d14abf15SRobert Mustacchi   typedef unsigned char       U8;
195*d14abf15SRobert Mustacchi   typedef signed long long    S64;
196*d14abf15SRobert Mustacchi   typedef signed int          S32;
197*d14abf15SRobert Mustacchi   typedef signed short        S16;
198*d14abf15SRobert Mustacchi   typedef signed char         S8;
199*d14abf15SRobert Mustacchi   typedef unsigned long       int_ptr_t;
200*d14abf15SRobert Mustacchi #elif defined(__WATCOMC__)
201*d14abf15SRobert Mustacchi   typedef unsigned __int64    U64;
202*d14abf15SRobert Mustacchi   typedef unsigned long       U32;
203*d14abf15SRobert Mustacchi   typedef unsigned short      U16;
204*d14abf15SRobert Mustacchi   typedef unsigned char       U8;
205*d14abf15SRobert Mustacchi   typedef signed __int64      S64;
206*d14abf15SRobert Mustacchi   typedef signed long         S32;
207*d14abf15SRobert Mustacchi   typedef signed short        S16;
208*d14abf15SRobert Mustacchi   typedef signed char         S8;
209*d14abf15SRobert Mustacchi   typedef unsigned long       int_ptr_t;
210*d14abf15SRobert Mustacchi #else
211*d14abf15SRobert Mustacchi   /* assume others: 16-bit */
212*d14abf15SRobert Mustacchi   typedef unsigned char       U64[8];
213*d14abf15SRobert Mustacchi   typedef unsigned long       U32;
214*d14abf15SRobert Mustacchi   typedef unsigned short      U16;
215*d14abf15SRobert Mustacchi   typedef unsigned char       U8;
216*d14abf15SRobert Mustacchi   typedef signed char         S64[8];
217*d14abf15SRobert Mustacchi   typedef signed long         S32;
218*d14abf15SRobert Mustacchi   typedef signed short        S16;
219*d14abf15SRobert Mustacchi   typedef signed char         S8;
220*d14abf15SRobert Mustacchi   typedef unsigned long       int_ptr_t;
221*d14abf15SRobert Mustacchi #endif /*  */
222*d14abf15SRobert Mustacchi 
223*d14abf15SRobert Mustacchi 
224*d14abf15SRobert Mustacchi 
225*d14abf15SRobert Mustacchi /*
226*d14abf15SRobert Mustacchi  * define lower case types
227*d14abf15SRobert Mustacchi  */
228*d14abf15SRobert Mustacchi typedef U64 u64_t;
229*d14abf15SRobert Mustacchi typedef U32 u32_t;
230*d14abf15SRobert Mustacchi typedef U16 u16_t;
231*d14abf15SRobert Mustacchi typedef U8  u8_t;
232*d14abf15SRobert Mustacchi 
233*d14abf15SRobert Mustacchi typedef S64 s64_t;
234*d14abf15SRobert Mustacchi typedef S32 s32_t;
235*d14abf15SRobert Mustacchi typedef S16 s16_t;
236*d14abf15SRobert Mustacchi typedef S8  s8_t;
237*d14abf15SRobert Mustacchi 
238*d14abf15SRobert Mustacchi #ifndef LINUX
239*d14abf15SRobert Mustacchi typedef U64 u64;
240*d14abf15SRobert Mustacchi typedef U32 u32;
241*d14abf15SRobert Mustacchi typedef U16 u16;
242*d14abf15SRobert Mustacchi typedef U8  u8;
243*d14abf15SRobert Mustacchi 
244*d14abf15SRobert Mustacchi typedef S64 s64;
245*d14abf15SRobert Mustacchi typedef S32 s32;
246*d14abf15SRobert Mustacchi typedef S16 s16;
247*d14abf15SRobert Mustacchi typedef S8  s8;
248*d14abf15SRobert Mustacchi #endif
249*d14abf15SRobert Mustacchi 
250*d14abf15SRobert Mustacchi #endif
251*d14abf15SRobert Mustacchi 
252*d14abf15SRobert Mustacchi #ifdef UEFI
253*d14abf15SRobert Mustacchi #if BYTE_ORDER == LITTLE_ENDIAN
254*d14abf15SRobert Mustacchi #undef BIG_ENDIAN
255*d14abf15SRobert Mustacchi #endif
256*d14abf15SRobert Mustacchi #ifdef UEFI64
257*d14abf15SRobert Mustacchi typedef u64_t  int_ptr_t;
258*d14abf15SRobert Mustacchi #endif
259*d14abf15SRobert Mustacchi #endif
260*d14abf15SRobert Mustacchi 
261*d14abf15SRobert Mustacchi #ifdef LITTLE_ENDIAN
262*d14abf15SRobert Mustacchi #ifndef __LITTLE_ENDIAN
263*d14abf15SRobert Mustacchi #define __LITTLE_ENDIAN LITTLE_ENDIAN
264*d14abf15SRobert Mustacchi #endif /* __LITTLE_ENDIAN */
265*d14abf15SRobert Mustacchi #endif /* LITTLE_ENDIAN */
266*d14abf15SRobert Mustacchi 
267*d14abf15SRobert Mustacchi #ifdef BIG_ENDIAN
268*d14abf15SRobert Mustacchi #ifndef __BIG_ENDIAN
269*d14abf15SRobert Mustacchi #define  __BIG_ENDIAN  BIG_ENDIAN
270*d14abf15SRobert Mustacchi #endif /* __BIG_ENDIAN */
271*d14abf15SRobert Mustacchi #endif /* BIG_ENDIAN */
272*d14abf15SRobert Mustacchi 
273*d14abf15SRobert Mustacchi #ifdef __FreeBSD__
274*d14abf15SRobert Mustacchi #if _BYTE_ORDER == _LITTLE_ENDIAN
275*d14abf15SRobert Mustacchi #undef BIG_ENDIAN
276*d14abf15SRobert Mustacchi #undef __BIG_ENDIAN
277*d14abf15SRobert Mustacchi #else
278*d14abf15SRobert Mustacchi #undef LITTLE_ENDIAN
279*d14abf15SRobert Mustacchi #undef __LITTLE_ENDIAN
280*d14abf15SRobert Mustacchi #endif
281*d14abf15SRobert Mustacchi #endif /* __FreeBSD__ */
282*d14abf15SRobert Mustacchi 
283*d14abf15SRobert Mustacchi /* Signed subtraction macros with no sign extending.  */
284*d14abf15SRobert Mustacchi #define S64_SUB(_a, _b)     ((s64_t) ((s64_t) (_a) - (s64_t) (_b)))
285*d14abf15SRobert Mustacchi #define u64_SUB(_a, _b)     ((u64_t) ((s64_t) (_a) - (s64_t) (_b)))
286*d14abf15SRobert Mustacchi #define S32_SUB(_a, _b)     ((s32_t) ((s32_t) (_a) - (s32_t) (_b)))
287*d14abf15SRobert Mustacchi #define uS32_SUB(_a, _b)    ((u32_t) ((s32_t) (_a) - (s32_t) (_b)))
288*d14abf15SRobert Mustacchi #define S16_SUB(_a, _b)     ((s16_t) ((s16_t) (_a) - (s16_t) (_b)))
289*d14abf15SRobert Mustacchi #define u16_SUB(_a, _b)     ((u16_t) ((s16_t) (_a) - (s16_t) (_b)))
290*d14abf15SRobert Mustacchi #define PTR_SUB(_a, _b)     ((u8_t *) (_a) - (u8_t *) (_b))
291*d14abf15SRobert Mustacchi 
292*d14abf15SRobert Mustacchi #if (!defined LINUX ) && (!defined MFW)
293*d14abf15SRobert Mustacchi #define __builtin_offsetof(path1_nvm_image_t, f) (u32_t)((int_ptr_t)(&(((path1_nvm_image_t *)0)->f)))
294*d14abf15SRobert Mustacchi #endif
295*d14abf15SRobert Mustacchi 
296*d14abf15SRobert Mustacchi #endif/* __bcmtype_h__ */
297*d14abf15SRobert Mustacchi 
298