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