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