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