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 #include <stdint.h> 47 48 /** \addtogroup Misc Miscellaneous APIs */ 49 /**@{*/ 50 51 /** @name Definitions indicating family of target OI_CPU_TYPE 52 * @{ 53 */ 54 55 #define OI_CPU_X86 1 /**< x86 processor family */ 56 #define OI_CPU_ARM 2 /**< ARM processor family. 57 @deprecated Use #OI_CPU_ARM7_LEND or 58 #OI_CPU_ARM7_BEND. */ 59 #define OI_CPU_ARC 3 /**< ARC processor family. 60 @deprecated Use #OI_CPU_ARC_LEND or 61 #OI_CPU_ARC_BEND. */ 62 #define OI_CPU_SH3 4 /**< Hitachi SH-3 processor family */ 63 #define OI_CPU_H8 5 /**< Hitachi H8 processor family */ 64 #define OI_CPU_MIPS 6 /**< MIPS processor family */ 65 #define OI_CPU_SPARC 7 /**< SPARC processor family */ 66 #define OI_CPU_M68000 8 /**< Motorola M68000 processor family */ 67 #define OI_CPU_PPC 9 /**< PowerPC (PPC) processor family */ 68 #define OI_CPU_SH4_7750 10 /**< Hitachi SH7750 series in SH-4 processor family */ 69 #define OI_CPU_SH2 11 /**< Hitachi SH-2 processor family */ 70 #define OI_CPU_ARM7_LEND 12 /**< ARM7, little-endian */ 71 #define OI_CPU_ARM7_BEND 13 /**< ARM7, big-endian */ 72 #define OI_CPU_GDM1202 14 /**< GCT GDM1202 */ 73 #define OI_CPU_ARC_LEND 15 /**< ARC processor family, little-endian */ 74 #define OI_CPU_ARC_BEND 16 /**< ARC processor family, big-endian */ 75 #define OI_CPU_M30833F 17 /**< Mitsubishi M308 processor family */ 76 #define OI_CPU_CR16C 18 /**< National Semiconductor 16 bit processor family */ 77 #define OI_CPU_M64111 19 /**< Renesas M64111 processor (M32R family) */ 78 #define OI_CPU_ARMV5_LEND 20 //*< ARM5, little-endian */ 79 80 /* BK4BTSTACK_CHANGE START */ 81 // #define OI_CPU_TYPE 12 82 83 /** @name Definitions indicating byte-wise endianness of target CPU 84 * @{ 85 */ 86 87 #define OI_BIG_ENDIAN_BYTE_ORDER 0 /**< Multiple-byte values are stored in memory beginning with the most significant byte at the lowest address. */ 88 #define OI_LITTLE_ENDIAN_BYTE_ORDER 1 /**< Multiple-byte values are stored in memory beginning with the least significant byte at the lowest address. */ 89 90 #ifndef OI_CPU_TYPE 91 92 // to avoid warnigns below 93 #define OI_CPU_TYPE 0 94 95 #if 0 96 / #error "OI_CPU_TYPE type not defined" 97 #else 98 99 // BK 100 101 /** @name CPU/compiler-dependent primitive data type definitions 102 * @{ 103 */ 104 105 typedef int8_t OI_INT8; 106 typedef int16_t OI_INT16; 107 typedef int32_t OI_INT32; 108 typedef uint8_t OI_UINT8; 109 typedef uint16_t OI_UINT16; 110 typedef uint32_t OI_UINT32; 111 112 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 113 114 115 #ifdef __LITTLE_ENDIAN__ 116 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 117 #endif 118 119 #ifdef __BIG_ENDIAN__ 120 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 121 #endif 122 123 // emergency fallback 124 #ifndef OI_CPU_BYTE_ORDER 125 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 126 #endif 127 128 /**@}*/ 129 #endif 130 131 /**@}*/ 132 #endif 133 /* BK4BTSTACK_CHANGE STOP */ 134 135 /** @name CPU/compiler-independent primitive data type definitions 136 * @{ 137 */ 138 139 typedef int OI_BOOL; /**< Boolean values use native integer data type for target CPU. */ 140 typedef int OI_INT; /**< Integer values use native integer data type for target CPU. */ 141 typedef unsigned int OI_UINT; /**< Unsigned integer values use native unsigned integer data type for target CPU. */ 142 typedef unsigned char OI_BYTE; /**< Raw bytes type uses native character data type for target CPU. */ 143 144 /**@}*/ 145 146 147 /*********************************************************************************/ 148 149 #if OI_CPU_TYPE==OI_CPU_X86 150 151 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< x86 platform byte ordering is little-endian */ 152 153 /** @name CPU/compiler-dependent primitive data type definitions for x86 processor family 154 * @{ 155 */ 156 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for x86 processor. */ 157 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for x86 processor. */ 158 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for x86 processor. */ 159 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for x86 processor. */ 160 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for x86 processor. */ 161 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for x86 processor. */ 162 163 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 164 165 /**@}*/ 166 167 #endif 168 169 /*********************************************************************************/ 170 171 #if OI_CPU_TYPE==OI_CPU_ARM 172 /* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARM7_LEND or OI_CPU_ARM7_BEND for 173 little-endian or big-endian configurations of the ARM7, respectively. */ 174 #error OI_CPU_ARM is deprecated 175 #endif 176 177 /*********************************************************************************/ 178 179 #if OI_CPU_TYPE==OI_CPU_ARC 180 /* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARC_LEND or OI_CPU_ARC_BEND for 181 little-endian or big-endian configurations of the ARC, respectively. */ 182 #error OI_CPU_ARC is deprecated 183 #endif 184 185 /*********************************************************************************/ 186 187 #if OI_CPU_TYPE==OI_CPU_SH3 188 /* The Hitachi SH C compiler defines _LIT or _BIG, depending on the endianness 189 specified to the compiler on the command line. */ 190 #if defined(_LIT) 191 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< If _LIT is defined, SH-3 platform byte ordering is little-endian. */ 192 #elif defined(_BIG) 193 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< If _BIG is defined, SH-3 platform byte ordering is big-endian. */ 194 #else 195 #error SH compiler endianness undefined 196 #endif 197 198 /** @name CPU/compiler-dependent primitive data type definitions for SH-3 processor family 199 * @{ 200 */ 201 202 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-3 processor. */ 203 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-3 processor. */ 204 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-3 processor. */ 205 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-3 processor. */ 206 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-3 processor. */ 207 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-3 processor. */ 208 209 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 210 211 /**@}*/ 212 213 #endif 214 /*********************************************************************************/ 215 216 #if OI_CPU_TYPE==OI_CPU_SH2 217 218 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH-2 platform byte ordering is big-endian. */ 219 220 /** @name CPU/compiler-dependent primitive data type definitions for SH-2 processor family 221 * @{ 222 */ 223 224 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-2 processor. */ 225 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-2 processor. */ 226 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-2 processor. */ 227 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-2 processor. */ 228 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-2 processor. */ 229 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-2 processor. */ 230 231 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 232 233 /**@}*/ 234 235 #endif 236 /*********************************************************************************/ 237 238 #if OI_CPU_TYPE==OI_CPU_H8 239 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 240 #error basic types not defined 241 #endif 242 243 /*********************************************************************************/ 244 245 #if OI_CPU_TYPE==OI_CPU_MIPS 246 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 247 /** @name CPU/compiler-dependent primitive data type definitions for MIPS processor family 248 * @{ 249 */ 250 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 251 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 252 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 253 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 254 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 255 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 256 257 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 258 259 /**@}*/ 260 261 #endif 262 263 /*********************************************************************************/ 264 265 #if OI_CPU_TYPE==OI_CPU_SPARC 266 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 267 #error basic types not defined 268 #endif 269 270 /*********************************************************************************/ 271 272 #if OI_CPU_TYPE==OI_CPU_M68000 273 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< M68000 platform byte ordering is big-endian. */ 274 275 /** @name CPU/compiler-dependent primitive data type definitions for M68000 processor family 276 * @{ 277 */ 278 279 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M68000 processor. */ 280 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M68000 processor. */ 281 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M68000 processor. */ 282 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M68000 processor. */ 283 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M68000 processor. */ 284 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M68000 processor. */ 285 286 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 287 288 /**@}*/ 289 290 #endif 291 292 /*********************************************************************************/ 293 294 #if OI_CPU_TYPE==OI_CPU_PPC 295 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 296 297 298 /** @name CPU/compiler-dependent primitive data type definitions for PPC 8XX processor family 299 * @{ 300 */ 301 302 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for PPC8XX processor. */ 303 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for PPC8XX processor. */ 304 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for PPC8XX processor. */ 305 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for PPC8XX processor. */ 306 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for PPC8XX processor. */ 307 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for PPC8XX processor. */ 308 309 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 310 311 /**@}*/ 312 313 #endif 314 315 /*********************************************************************************/ 316 317 #if OI_CPU_TYPE==OI_CPU_SH4_7750 318 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH7750 platform byte ordering is big-endian. */ 319 320 /** @name CPU/compiler-dependent primitive data type definitions for SH7750 processor series of the SH-4 processor family 321 * @{ 322 */ 323 324 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH7750 SH-4 processor. */ 325 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH7750 SH-4 processor. */ 326 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH7750 SH-4 processor. */ 327 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH7750 SH-4 processor. */ 328 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH7750 SH-4 processor. */ 329 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH7750 SH-4 processor. */ 330 331 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 332 333 /**@}*/ 334 335 #endif 336 337 /*********************************************************************************/ 338 339 #if OI_CPU_TYPE==OI_CPU_ARM7_LEND 340 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 341 342 /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 343 * @{ 344 */ 345 346 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 347 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 348 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 349 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 350 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 351 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 352 353 typedef void * OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 354 355 /**@}*/ 356 357 #endif 358 359 /*********************************************************************************/ 360 361 #if OI_CPU_TYPE==OI_CPU_ARM7_BEND 362 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 363 /** @name big-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 364 * @{ 365 */ 366 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 367 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 368 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 369 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 370 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 371 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 372 373 typedef void * OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 374 375 /**@}*/ 376 377 #endif 378 379 /*********************************************************************************/ 380 381 #if OI_CPU_TYPE==OI_CPU_GDM1202 382 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 383 384 typedef signed char OI_INT8; /**< 8-bit signed integer. */ 385 typedef signed short OI_INT16; /**< 16-bit signed integer. */ 386 typedef signed long OI_INT32; /**< 32-bit signed integer. */ 387 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer. */ 388 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer. */ 389 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer. */ 390 391 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 392 393 #endif 394 395 /*********************************************************************************/ 396 397 #if OI_CPU_TYPE==OI_CPU_ARC_LEND 398 399 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 400 401 /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family 402 * @{ 403 */ 404 405 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 406 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 407 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 408 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 409 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 410 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 411 412 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 413 414 /**@}*/ 415 #endif 416 417 /*********************************************************************************/ 418 419 #if OI_CPU_TYPE==OI_CPU_ARC_BEND 420 421 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 422 423 /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family 424 * @{ 425 */ 426 427 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 428 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 429 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 430 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 431 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 432 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 433 434 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 435 436 /**@}*/ 437 #endif 438 439 /*********************************************************************************/ 440 441 #if OI_CPU_TYPE==OI_CPU_M30833F 442 443 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 444 445 /** @name CPU/compiler-dependent primitive data type definitions for Mitsubishi M308 processor family 446 * @{ 447 */ 448 449 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M308 processor. */ 450 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M308 processor. */ 451 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M308 processor. */ 452 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M308 processor. */ 453 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M308 processor. */ 454 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M308 processor. */ 455 456 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 457 458 /**@}*/ 459 #endif 460 461 /*********************************************************************************/ 462 463 #if OI_CPU_TYPE==OI_CPU_CR16C 464 465 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 466 467 /** @name CPU/compiler-dependent primitive data type definitions for National Semicnductor processor family 468 * @{ 469 */ 470 471 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for CR16C processor. */ 472 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for CR16C processor. */ 473 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for CR16C processor. */ 474 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for CR16C processor. */ 475 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for CR16C processor. */ 476 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for CR16C processor. */ 477 478 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 479 480 /**@}*/ 481 #endif 482 483 /*********************************************************************************/ 484 485 #if OI_CPU_TYPE==OI_CPU_M64111 486 487 #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER 488 489 /** @name CPU/compiler-dependent primitive data type definitions for Renesas M32R processor family 490 * @{ 491 */ 492 493 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M64111 processor. */ 494 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M64111 processor. */ 495 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M64111 processor. */ 496 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M64111 processor. */ 497 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M64111 processor. */ 498 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M64111 processor. */ 499 500 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 501 502 /**@}*/ 503 #endif 504 505 /*********************************************************************************/ 506 507 #if OI_CPU_TYPE==OI_CPU_ARMV5_LEND 508 #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER 509 510 /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family 511 * @{ 512 */ 513 514 typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 515 typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 516 typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 517 typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 518 typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 519 typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 520 521 typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */ 522 523 /**@}*/ 524 525 #endif 526 527 /*********************************************************************************/ 528 529 530 #ifndef OI_CPU_BYTE_ORDER 531 #error "Byte order (endian-ness) not defined" 532 #endif 533 534 535 /**@}*/ 536 537 #ifdef __cplusplus 538 } 539 #endif 540 541 /*********************************************************************************/ 542 #endif /* _OI_CPU_DEP_H */ 543