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 43extern "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 101typedef int OI_BOOL; /**< Boolean values use native integer data type for target CPU. */ 102typedef int OI_INT; /**< Integer values use native integer data type for target CPU. */ 103typedef unsigned int OI_UINT; /**< Unsigned integer values use native unsigned integer data type for target CPU. */ 104typedef 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 */ 119typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for x86 processor. */ 120typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for x86 processor. */ 121typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for x86 processor. */ 122typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for x86 processor. */ 123typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for x86 processor. */ 124typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for x86 processor. */ 125 126typedef 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 165typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-3 processor. */ 166typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-3 processor. */ 167typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-3 processor. */ 168typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-3 processor. */ 169typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-3 processor. */ 170typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-3 processor. */ 171 172typedef 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 187typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-2 processor. */ 188typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-2 processor. */ 189typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-2 processor. */ 190typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-2 processor. */ 191typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-2 processor. */ 192typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-2 processor. */ 193 194typedef 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 */ 213typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 214typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 215typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 216typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 217typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 218typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 219 220typedef 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 242typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M68000 processor. */ 243typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M68000 processor. */ 244typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M68000 processor. */ 245typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M68000 processor. */ 246typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M68000 processor. */ 247typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M68000 processor. */ 248 249typedef 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 265typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for PPC8XX processor. */ 266typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for PPC8XX processor. */ 267typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for PPC8XX processor. */ 268typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for PPC8XX processor. */ 269typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for PPC8XX processor. */ 270typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for PPC8XX processor. */ 271 272typedef 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 287typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH7750 SH-4 processor. */ 288typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH7750 SH-4 processor. */ 289typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH7750 SH-4 processor. */ 290typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH7750 SH-4 processor. */ 291typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH7750 SH-4 processor. */ 292typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH7750 SH-4 processor. */ 293 294typedef 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 309typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 310typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 311typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 312typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 313typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 314typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 315 316typedef 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 */ 329typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 330typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 331typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 332typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 333typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 334typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 335 336typedef 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 347typedef signed char OI_INT8; /**< 8-bit signed integer. */ 348typedef signed short OI_INT16; /**< 16-bit signed integer. */ 349typedef signed long OI_INT32; /**< 32-bit signed integer. */ 350typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer. */ 351typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer. */ 352typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer. */ 353 354typedef 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 368typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 369typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 370typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 371typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 372typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 373typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 374 375typedef 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 390typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */ 391typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */ 392typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */ 393typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */ 394typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */ 395typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */ 396 397typedef 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 412typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M308 processor. */ 413typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M308 processor. */ 414typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M308 processor. */ 415typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M308 processor. */ 416typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M308 processor. */ 417typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M308 processor. */ 418 419typedef 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 434typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for CR16C processor. */ 435typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for CR16C processor. */ 436typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for CR16C processor. */ 437typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for CR16C processor. */ 438typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for CR16C processor. */ 439typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for CR16C processor. */ 440 441typedef 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 456typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M64111 processor. */ 457typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M64111 processor. */ 458typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M64111 processor. */ 459typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M64111 processor. */ 460typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M64111 processor. */ 461typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M64111 processor. */ 462 463typedef 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 477typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */ 478typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */ 479typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */ 480typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */ 481typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */ 482typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */ 483 484typedef 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