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