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