oi_cpu_dep.h 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  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. $Revision: #1 $
  39. ***********************************************************************************/
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. #include <stdint.h>
  44. /** \addtogroup Misc Miscellaneous APIs */
  45. /**@{*/
  46. /** @name Definitions indicating family of target OI_CPU_TYPE
  47. * @{
  48. */
  49. #define OI_CPU_X86 1 /**< x86 processor family */
  50. #define OI_CPU_ARM 2 /**< ARM processor family.
  51. @deprecated Use #OI_CPU_ARM7_LEND or
  52. #OI_CPU_ARM7_BEND. */
  53. #define OI_CPU_ARC 3 /**< ARC processor family.
  54. @deprecated Use #OI_CPU_ARC_LEND or
  55. #OI_CPU_ARC_BEND. */
  56. #define OI_CPU_SH3 4 /**< Hitachi SH-3 processor family */
  57. #define OI_CPU_H8 5 /**< Hitachi H8 processor family */
  58. #define OI_CPU_MIPS 6 /**< MIPS processor family */
  59. #define OI_CPU_SPARC 7 /**< SPARC processor family */
  60. #define OI_CPU_M68000 8 /**< Motorola M68000 processor family */
  61. #define OI_CPU_PPC 9 /**< PowerPC (PPC) processor family */
  62. #define OI_CPU_SH4_7750 10 /**< Hitachi SH7750 series in SH-4 processor family */
  63. #define OI_CPU_SH2 11 /**< Hitachi SH-2 processor family */
  64. #define OI_CPU_ARM7_LEND 12 /**< ARM7, little-endian */
  65. #define OI_CPU_ARM7_BEND 13 /**< ARM7, big-endian */
  66. #define OI_CPU_GDM1202 14 /**< GCT GDM1202 */
  67. #define OI_CPU_ARC_LEND 15 /**< ARC processor family, little-endian */
  68. #define OI_CPU_ARC_BEND 16 /**< ARC processor family, big-endian */
  69. #define OI_CPU_M30833F 17 /**< Mitsubishi M308 processor family */
  70. #define OI_CPU_CR16C 18 /**< National Semiconductor 16 bit processor family */
  71. #define OI_CPU_M64111 19 /**< Renesas M64111 processor (M32R family) */
  72. #define OI_CPU_ARMV5_LEND 20 //*< ARM5, little-endian */
  73. /* BK4BTSTACK_CHANGE START */
  74. // #define OI_CPU_TYPE 12
  75. /** @name Definitions indicating byte-wise endianness of target CPU
  76. * @{
  77. */
  78. #define OI_BIG_ENDIAN_BYTE_ORDER 0 /**< Multiple-byte values are stored in memory beginning with the most significant byte at the lowest address. */
  79. #define OI_LITTLE_ENDIAN_BYTE_ORDER 1 /**< Multiple-byte values are stored in memory beginning with the least significant byte at the lowest address. */
  80. #ifndef OI_CPU_TYPE
  81. // to avoid warnigns below
  82. #define OI_CPU_TYPE 0
  83. #if 0
  84. / #error "OI_CPU_TYPE type not defined"
  85. #else
  86. // BK
  87. /** @name CPU/compiler-dependent primitive data type definitions
  88. * @{
  89. */
  90. typedef int8_t OI_INT8;
  91. typedef int16_t OI_INT16;
  92. typedef int32_t OI_INT32;
  93. typedef uint8_t OI_UINT8;
  94. typedef uint16_t OI_UINT16;
  95. typedef uint32_t OI_UINT32;
  96. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  97. #ifdef __LITTLE_ENDIAN__
  98. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  99. #endif
  100. #ifdef __BIG_ENDIAN__
  101. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  102. #endif
  103. // emergency fallback
  104. #ifndef OI_CPU_BYTE_ORDER
  105. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  106. #endif
  107. /**@}*/
  108. #endif
  109. /**@}*/
  110. #endif
  111. /* BK4BTSTACK_CHANGE STOP */
  112. /** @name CPU/compiler-independent primitive data type definitions
  113. * @{
  114. */
  115. typedef int OI_BOOL; /**< Boolean values use native integer data type for target CPU. */
  116. typedef int OI_INT; /**< Integer values use native integer data type for target CPU. */
  117. typedef unsigned int OI_UINT; /**< Unsigned integer values use native unsigned integer data type for target CPU. */
  118. typedef unsigned char OI_BYTE; /**< Raw bytes type uses native character data type for target CPU. */
  119. /**@}*/
  120. /*********************************************************************************/
  121. #if OI_CPU_TYPE==OI_CPU_X86
  122. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< x86 platform byte ordering is little-endian */
  123. /** @name CPU/compiler-dependent primitive data type definitions for x86 processor family
  124. * @{
  125. */
  126. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for x86 processor. */
  127. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for x86 processor. */
  128. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for x86 processor. */
  129. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for x86 processor. */
  130. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for x86 processor. */
  131. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for x86 processor. */
  132. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  133. /**@}*/
  134. #endif
  135. /*********************************************************************************/
  136. #if OI_CPU_TYPE==OI_CPU_ARM
  137. /* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARM7_LEND or OI_CPU_ARM7_BEND for
  138. little-endian or big-endian configurations of the ARM7, respectively. */
  139. #error OI_CPU_ARM is deprecated
  140. #endif
  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. #if OI_CPU_TYPE==OI_CPU_SH3
  149. /* The Hitachi SH C compiler defines _LIT or _BIG, depending on the endianness
  150. specified to the compiler on the command line. */
  151. #if defined(_LIT)
  152. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< If _LIT is defined, SH-3 platform byte ordering is little-endian. */
  153. #elif defined(_BIG)
  154. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< If _BIG is defined, SH-3 platform byte ordering is big-endian. */
  155. #else
  156. #error SH compiler endianness undefined
  157. #endif
  158. /** @name CPU/compiler-dependent primitive data type definitions for SH-3 processor family
  159. * @{
  160. */
  161. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-3 processor. */
  162. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-3 processor. */
  163. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-3 processor. */
  164. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-3 processor. */
  165. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-3 processor. */
  166. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-3 processor. */
  167. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  168. /**@}*/
  169. #endif
  170. /*********************************************************************************/
  171. #if OI_CPU_TYPE==OI_CPU_SH2
  172. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH-2 platform byte ordering is big-endian. */
  173. /** @name CPU/compiler-dependent primitive data type definitions for SH-2 processor family
  174. * @{
  175. */
  176. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-2 processor. */
  177. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-2 processor. */
  178. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-2 processor. */
  179. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-2 processor. */
  180. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-2 processor. */
  181. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-2 processor. */
  182. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  183. /**@}*/
  184. #endif
  185. /*********************************************************************************/
  186. #if OI_CPU_TYPE==OI_CPU_H8
  187. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  188. #error basic types not defined
  189. #endif
  190. /*********************************************************************************/
  191. #if OI_CPU_TYPE==OI_CPU_MIPS
  192. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  193. /** @name CPU/compiler-dependent primitive data type definitions for MIPS processor family
  194. * @{
  195. */
  196. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
  197. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
  198. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
  199. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
  200. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
  201. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
  202. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  203. /**@}*/
  204. #endif
  205. /*********************************************************************************/
  206. #if OI_CPU_TYPE==OI_CPU_SPARC
  207. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  208. #error basic types not defined
  209. #endif
  210. /*********************************************************************************/
  211. #if OI_CPU_TYPE==OI_CPU_M68000
  212. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< M68000 platform byte ordering is big-endian. */
  213. /** @name CPU/compiler-dependent primitive data type definitions for M68000 processor family
  214. * @{
  215. */
  216. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M68000 processor. */
  217. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M68000 processor. */
  218. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M68000 processor. */
  219. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M68000 processor. */
  220. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M68000 processor. */
  221. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M68000 processor. */
  222. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  223. /**@}*/
  224. #endif
  225. /*********************************************************************************/
  226. #if OI_CPU_TYPE==OI_CPU_PPC
  227. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  228. /** @name CPU/compiler-dependent primitive data type definitions for PPC 8XX processor family
  229. * @{
  230. */
  231. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for PPC8XX processor. */
  232. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for PPC8XX processor. */
  233. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for PPC8XX processor. */
  234. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for PPC8XX processor. */
  235. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for PPC8XX processor. */
  236. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for PPC8XX processor. */
  237. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  238. /**@}*/
  239. #endif
  240. /*********************************************************************************/
  241. #if OI_CPU_TYPE==OI_CPU_SH4_7750
  242. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH7750 platform byte ordering is big-endian. */
  243. /** @name CPU/compiler-dependent primitive data type definitions for SH7750 processor series of the SH-4 processor family
  244. * @{
  245. */
  246. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH7750 SH-4 processor. */
  247. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH7750 SH-4 processor. */
  248. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH7750 SH-4 processor. */
  249. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH7750 SH-4 processor. */
  250. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH7750 SH-4 processor. */
  251. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH7750 SH-4 processor. */
  252. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  253. /**@}*/
  254. #endif
  255. /*********************************************************************************/
  256. #if OI_CPU_TYPE==OI_CPU_ARM7_LEND
  257. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  258. /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
  259. * @{
  260. */
  261. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
  262. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
  263. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
  264. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
  265. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
  266. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
  267. typedef void * OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  268. /**@}*/
  269. #endif
  270. /*********************************************************************************/
  271. #if OI_CPU_TYPE==OI_CPU_ARM7_BEND
  272. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  273. /** @name big-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
  274. * @{
  275. */
  276. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
  277. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
  278. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
  279. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
  280. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
  281. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
  282. typedef void * OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  283. /**@}*/
  284. #endif
  285. /*********************************************************************************/
  286. #if OI_CPU_TYPE==OI_CPU_GDM1202
  287. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  288. typedef signed char OI_INT8; /**< 8-bit signed integer. */
  289. typedef signed short OI_INT16; /**< 16-bit signed integer. */
  290. typedef signed long OI_INT32; /**< 32-bit signed integer. */
  291. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer. */
  292. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer. */
  293. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer. */
  294. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  295. #endif
  296. /*********************************************************************************/
  297. #if OI_CPU_TYPE==OI_CPU_ARC_LEND
  298. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  299. /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family
  300. * @{
  301. */
  302. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */
  303. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */
  304. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */
  305. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */
  306. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */
  307. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */
  308. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  309. /**@}*/
  310. #endif
  311. /*********************************************************************************/
  312. #if OI_CPU_TYPE==OI_CPU_ARC_BEND
  313. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  314. /** @name CPU/compiler-dependent primitive data type definitions for ARC processor family
  315. * @{
  316. */
  317. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */
  318. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */
  319. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */
  320. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */
  321. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */
  322. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */
  323. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  324. /**@}*/
  325. #endif
  326. /*********************************************************************************/
  327. #if OI_CPU_TYPE==OI_CPU_M30833F
  328. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  329. /** @name CPU/compiler-dependent primitive data type definitions for Mitsubishi M308 processor family
  330. * @{
  331. */
  332. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M308 processor. */
  333. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M308 processor. */
  334. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M308 processor. */
  335. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M308 processor. */
  336. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M308 processor. */
  337. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M308 processor. */
  338. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  339. /**@}*/
  340. #endif
  341. /*********************************************************************************/
  342. #if OI_CPU_TYPE==OI_CPU_CR16C
  343. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  344. /** @name CPU/compiler-dependent primitive data type definitions for National Semicnductor processor family
  345. * @{
  346. */
  347. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for CR16C processor. */
  348. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for CR16C processor. */
  349. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for CR16C processor. */
  350. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for CR16C processor. */
  351. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for CR16C processor. */
  352. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for CR16C processor. */
  353. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  354. /**@}*/
  355. #endif
  356. /*********************************************************************************/
  357. #if OI_CPU_TYPE==OI_CPU_M64111
  358. #define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
  359. /** @name CPU/compiler-dependent primitive data type definitions for Renesas M32R processor family
  360. * @{
  361. */
  362. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M64111 processor. */
  363. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M64111 processor. */
  364. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M64111 processor. */
  365. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M64111 processor. */
  366. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M64111 processor. */
  367. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M64111 processor. */
  368. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  369. /**@}*/
  370. #endif
  371. /*********************************************************************************/
  372. #if OI_CPU_TYPE==OI_CPU_ARMV5_LEND
  373. #define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
  374. /** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
  375. * @{
  376. */
  377. typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
  378. typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
  379. typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
  380. typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
  381. typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
  382. typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
  383. typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
  384. /**@}*/
  385. #endif
  386. /*********************************************************************************/
  387. #ifndef OI_CPU_BYTE_ORDER
  388. #error "Byte order (endian-ness) not defined"
  389. #endif
  390. /**@}*/
  391. #ifdef __cplusplus
  392. }
  393. #endif
  394. /*********************************************************************************/
  395. #endif /* _OI_CPU_DEP_H */