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