1 /****************************************************************************** 2 * 3 * Copyright (C) 2014 The Android Open Source Project 4 * Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved. 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at: 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 ******************************************************************************/ 19 #ifndef _OI_CPU_DEP_H 20 #define _OI_CPU_DEP_H 21 /** 22 * @file 23 * This file contains definitions for characteristics of the target CPU and 24 * compiler, including primitive data types and endianness. 25 * 26 * This file defines the byte order and primitive data types for various 27 * CPU families. The preprocessor symbol 'CPU' must be defined to be an 28 * appropriate value or this header will generate a compile-time error. 29 * 30 * @note The documentation for this header file uses the x86 family of processors 31 * as an illustrative example for CPU/compiler-dependent data type definitions. 32 * Go to the source code of this header file to see the details of primitive type 33 * definitions for each platform. 34 * 35 * Additional information is available in the @ref data_types_docpage section. 36 */ 37 38 /********************************************************************************** 39 $Revision: #1 $ 40 ***********************************************************************************/ 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /** \addtogroup Misc Miscellaneous APIs */ 47 /**@{*/ 48 49 /** @name Definitions indicating family of target OI_CPU_TYPE 50 * @{ 51 */ 52 53 #define OI_CPU_X86 1 /**< x86 processor family */ 54 #define OI_CPU_ARM 2 /**< ARM processor family. 55 @deprecated Use #OI_CPU_ARM7_LEND or 56 #OI_CPU_ARM7_BEND. */ 57 #define OI_CPU_ARC 3 /**< ARC processor family. 58 @deprecated Use #OI_CPU_ARC_LEND or 59 #OI_CPU_ARC_BEND. */ 60 #define OI_CPU_SH3 4 /**< Hitachi SH-3 processor family */ 61 #define OI_CPU_H8 5 /**< Hitachi H8 processor family */ 62 #define OI_CPU_MIPS 6 /**< MIPS processor family */ 63 #define OI_CPU_SPARC 7 /**< SPARC processor family */ 64 #define OI_CPU_M68000 8 /**< Motorola M68000 processor family */ 65 #define OI_CPU_PPC 9 /**< PowerPC (PPC) processor family */ 66 #define OI_CPU_SH4_7750 10 /**< Hitachi SH7750 series in SH-4 processor family */ 67 #define OI_CPU_SH2 11 /**< Hitachi SH-2 processor family */ 68 #define OI_CPU_ARM7_LEND 12 /**< ARM7, little-endian */ 69 #define OI_CPU_ARM7_BEND 13 /**< ARM7, big-endian */ 70 #define OI_CPU_GDM1202 14 /**< GCT GDM1202 */ 71 #define OI_CPU_ARC_LEND 15 /**< ARC processor family, little-endian */ 72 #define OI_CPU_ARC_BEND 16 /**< ARC processor family, big-endian */ 73 #define OI_CPU_M30833F 17 /**< Mitsubishi M308 processor family */ 74 #define OI_CPU_CR16C 18 /**< National Semiconductor 16 bit processor family */ 75 #define OI_CPU_M64111 19 /**< Renesas M64111 processor (M32R family) */ 76 #define OI_CPU_ARMV5_LEND 20 //*< ARM5, little-endian */ 77 78 #define OI_CPU_TYPE 12 79 80 #ifndef OI_CPU_TYPE 81 #error "OI_CPU_TYPE type not defined" 82 #endif 83 84 /**@}*/ 85 86 87 /** @name Definitions indicating byte-wise endianness of target CPU 88 * @{ 89 */ 90 91 #define OI_BIG_ENDIAN_BYTE_ORDER 0 /**< Multiple-byte values are stored in memory beginning with the most significant byte at the lowest address. */ 92 #define OI_LITTLE_ENDIAN_BYTE_ORDER 1 /**< Multiple-byte values are stored in memory beginning with the least significant byte at the lowest address. */ 93 94 /**@}*/ 95 96 97 /** @name CPU/compiler-independent primitive data type definitions 98 * @{ 99 */ 100 101 typedef int OI_BOOL; /**< Boolean values use native integer data type for target CPU. */ 102 typedef int OI_INT; /**< Integer values use native integer data type for target CPU. */ 103 typedef unsigned int OI_UINT; /**< Unsigned integer values use native unsigned integer data type for target CPU. */ 104 typedef unsigned char OI_BYTE; /**< Raw bytes type uses native character data type for target CPU. */ 105 106 /**@}*/ 107 108 109 110 /*********************************************************************************/ 111 112 #if OI_CPU_TYPE==OI_CPU_X86 113 114 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< x86 platform byte ordering is little-endian */ 115 116 /** @name CPU/compiler-dependent primitive data type definitions for x86 processor family 117 * @{ 118 */ 119 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for x86 processor. */ 120 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for x86 processor. */ 121 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for x86 processor. */ 122 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for x86 processor. */ 123 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for x86 processor. */ 124 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for x86 processor. */ 125 126 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 127 128 /**@}*/ 129 130 #endif 131 132 /*********************************************************************************/ 133 134 #if OI_CPU_TYPE==OI_CPU_ARM 135 /* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARM7_LEND or OI_CPU_ARM7_BEND for 136 little-endian or big-endian configurations of the ARM7, respectively. */ 137 #error OI_CPU_ARM is deprecated 138 #endif 139 140 /*********************************************************************************/ 141 142 #if OI_CPU_TYPE==OI_CPU_ARC 143 /* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARC_LEND or OI_CPU_ARC_BEND for 144 little-endian or big-endian configurations of the ARC, respectively. */ 145 #error OI_CPU_ARC is deprecated 146 #endif 147 148 /*********************************************************************************/ 149 150 #if OI_CPU_TYPE==OI_CPU_SH3 151 /* The Hitachi SH C compiler defines _LIT or _BIG, depending on the endianness 152 specified to the compiler on the command line. */ 153 #if defined(_LIT) 154 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< If _LIT is defined, SH-3 platform byte ordering is little-endian. */ 155 #elif defined(_BIG) 156 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< If _BIG is defined, SH-3 platform byte ordering is big-endian. */ 157 #else 158 #error SH compiler endianness undefined 159 #endif 160 161 /** @name CPU/compiler-dependent primitive data type definitions for SH-3 processor family 162 * @{ 163 */ 164 165 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-3 processor. */ 166 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-3 processor. */ 167 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-3 processor. */ 168 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-3 processor. */ 169 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-3 processor. */ 170 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-3 processor. */ 171 172 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 173 174 /**@}*/ 175 176 #endif 177 /*********************************************************************************/ 178 179 #if OI_CPU_TYPE==OI_CPU_SH2 180 181 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH-2 platform byte ordering is big-endian. */ 182 183 /** @name CPU/compiler-dependent primitive data type definitions for SH-2 processor family 184 * @{ 185 */ 186 187 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-2 processor. */ 188 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-2 processor. */ 189 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-2 processor. */ 190 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-2 processor. */ 191 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-2 processor. */ 192 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-2 processor. */ 193 194 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 195 196 /**@}*/ 197 198 #endif 199 /*********************************************************************************/ 200 201 #if OI_CPU_TYPE==OI_CPU_H8 202 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 203 #error basic types not defined 204 #endif 205 206 /*********************************************************************************/ 207 208 #if OI_CPU_TYPE==OI_CPU_MIPS 209 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 210 /** @name CPU/compiler-dependent primitive data type definitions for MIPS processor family 211 * @{ 212 */ 213 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 214 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 215 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 216 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 217 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 218 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 219 220 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 221 222 /**@}*/ 223 224 #endif 225 226 /*********************************************************************************/ 227 228 #if OI_CPU_TYPE==OI_CPU_SPARC 229 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 230 #error basic types not defined 231 #endif 232 233 /*********************************************************************************/ 234 235 #if OI_CPU_TYPE==OI_CPU_M68000 236 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< M68000 platform byte ordering is big-endian. */ 237 238 /** @name CPU/compiler-dependent primitive data type definitions for M68000 processor family 239 * @{ 240 */ 241 242 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M68000 processor. */ 243 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M68000 processor. */ 244 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M68000 processor. */ 245 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M68000 processor. */ 246 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M68000 processor. */ 247 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M68000 processor. */ 248 249 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 250 251 /**@}*/ 252 253 #endif 254 255 /*********************************************************************************/ 256 257 #if OI_CPU_TYPE==OI_CPU_PPC 258 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 259 260 261 /** @name CPU/compiler-dependent primitive data type definitions for PPC 8XX processor family 262 * @{ 263 */ 264 265 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for PPC8XX processor. */ 266 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for PPC8XX processor. */ 267 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for PPC8XX processor. */ 268 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for PPC8XX processor. */ 269 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for PPC8XX processor. */ 270 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for PPC8XX processor. */ 271 272 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 273 274 /**@}*/ 275 276 #endif 277 278 /*********************************************************************************/ 279 280 #if OI_CPU_TYPE==OI_CPU_SH4_7750 281 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH7750 platform byte ordering is big-endian. */ 282 283 /** @name CPU/compiler-dependent primitive data type definitions for SH7750 processor series of the SH-4 processor family 284 * @{ 285 */ 286 287 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH7750 SH-4 processor. */ 288 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH7750 SH-4 processor. */ 289 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH7750 SH-4 processor. */ 290 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH7750 SH-4 processor. */ 291 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH7750 SH-4 processor. */ 292 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH7750 SH-4 processor. */ 293 294 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 295 296 /**@}*/ 297 298 #endif 299 300 /*********************************************************************************/ 301 302 #if OI_CPU_TYPE==OI_CPU_ARM7_LEND 303 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 304 305 /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 306 * @{ 307 */ 308 309 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 310 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 311 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 312 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 313 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 314 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 315 316 typedef void *OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 317 318 /**@}*/ 319 320 #endif 321 322 /*********************************************************************************/ 323 324 #if OI_CPU_TYPE==OI_CPU_ARM7_BEND 325 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 326 /** @name big-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 327 * @{ 328 */ 329 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 330 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 331 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 332 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 333 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 334 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 335 336 typedef void *OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 337 338 /**@}*/ 339 340 #endif 341 342 /*********************************************************************************/ 343 344 #if OI_CPU_TYPE==OI_CPU_GDM1202 345 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 346 347 typedef signed char OI_INT8; /**< 8-bit signed integer. */ 348 typedef signed short OI_INT16; /**< 16-bit signed integer. */ 349 typedef signed long OI_INT32; /**< 32-bit signed integer. */ 350 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer. */ 351 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer. */ 352 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer. */ 353 354 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 355 356 #endif 357 358 /*********************************************************************************/ 359 360 #if OI_CPU_TYPE==OI_CPU_ARC_LEND 361 362 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 363 364 /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family 365 * @{ 366 */ 367 368 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 369 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 370 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 371 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 372 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 373 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 374 375 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 376 377 /**@}*/ 378 #endif 379 380 /*********************************************************************************/ 381 382 #if OI_CPU_TYPE==OI_CPU_ARC_BEND 383 384 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 385 386 /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family 387 * @{ 388 */ 389 390 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 391 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 392 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 393 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 394 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 395 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 396 397 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 398 399 /**@}*/ 400 #endif 401 402 /*********************************************************************************/ 403 404 #if OI_CPU_TYPE==OI_CPU_M30833F 405 406 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 407 408 /** @name CPU/compiler-dependent primitive data type definitions for Mitsubishi M308 processor family 409 * @{ 410 */ 411 412 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M308 processor. */ 413 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M308 processor. */ 414 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M308 processor. */ 415 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M308 processor. */ 416 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M308 processor. */ 417 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M308 processor. */ 418 419 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 420 421 /**@}*/ 422 #endif 423 424 /*********************************************************************************/ 425 426 #if OI_CPU_TYPE==OI_CPU_CR16C 427 428 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 429 430 /** @name CPU/compiler-dependent primitive data type definitions for National Semicnductor processor family 431 * @{ 432 */ 433 434 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for CR16C processor. */ 435 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for CR16C processor. */ 436 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for CR16C processor. */ 437 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for CR16C processor. */ 438 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for CR16C processor. */ 439 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for CR16C processor. */ 440 441 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 442 443 /**@}*/ 444 #endif 445 446 /*********************************************************************************/ 447 448 #if OI_CPU_TYPE==OI_CPU_M64111 449 450 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 451 452 /** @name CPU/compiler-dependent primitive data type definitions for Renesas M32R processor family 453 * @{ 454 */ 455 456 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M64111 processor. */ 457 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M64111 processor. */ 458 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M64111 processor. */ 459 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M64111 processor. */ 460 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M64111 processor. */ 461 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M64111 processor. */ 462 463 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 464 465 /**@}*/ 466 #endif 467 468 /*********************************************************************************/ 469 470 #if OI_CPU_TYPE==OI_CPU_ARMV5_LEND 471 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 472 473 /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 474 * @{ 475 */ 476 477 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 478 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 479 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 480 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 481 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 482 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 483 484 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 485 486 /**@}*/ 487 488 #endif 489 490 /*********************************************************************************/ 491 492 493 #ifndef OI_CPU_BYTE_ORDER 494 #error "Byte order (endian-ness) not defined" 495 #endif 496 497 498 /**@}*/ 499 500 #ifdef __cplusplus 501 } 502 #endif 503 504 /*********************************************************************************/ 505 #endif /* _OI_CPU_DEP_H */ 506