source: trunk/libs/newlib/src/newlib/libc/include/machine/_default_types.h @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 6.5 KB
Line 
1/*
2 *  $Id$
3 */
4
5#ifndef _MACHINE__DEFAULT_TYPES_H
6#define _MACHINE__DEFAULT_TYPES_H
7
8#include <sys/features.h>
9
10/*
11 * Guess on types by examining *_MIN / *_MAX defines.
12 */
13#if __GNUC_PREREQ (3, 3)
14/* GCC >= 3.3.0 has __<val>__ implicitly defined. */
15#define __EXP(x) __##x##__
16#else
17/* Fall back to POSIX versions from <limits.h> */
18#define __EXP(x) x
19#include <limits.h>
20#endif
21
22/* Check if "long long" is 64bit wide */
23/* Modern GCCs provide __LONG_LONG_MAX__, SUSv3 wants LLONG_MAX */
24#if ( defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) ) \
25  || ( defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) )
26#define __have_longlong64 1
27#endif
28
29/* Check if "long" is 64bit or 32bit wide */
30#if __EXP(LONG_MAX) > 0x7fffffff
31#define __have_long64 1
32#elif __EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__)
33#define __have_long32 1
34#endif
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40#ifdef __INT8_TYPE__
41typedef __INT8_TYPE__ __int8_t;
42#ifdef __UINT8_TYPE__
43typedef __UINT8_TYPE__ __uint8_t;
44#else
45typedef unsigned __INT8_TYPE__ __uint8_t;
46#endif
47#define ___int8_t_defined 1
48#elif __EXP(SCHAR_MAX) == 0x7f
49typedef signed char __int8_t ;
50typedef unsigned char __uint8_t ;
51#define ___int8_t_defined 1
52#endif
53
54#ifdef __INT16_TYPE__
55typedef __INT16_TYPE__ __int16_t;
56#ifdef __UINT16_TYPE__
57typedef __UINT16_TYPE__ __uint16_t;
58#else
59typedef unsigned __INT16_TYPE__ __uint16_t;
60#endif
61#define ___int16_t_defined 1
62#elif __EXP(INT_MAX) == 0x7fff
63typedef signed int __int16_t;
64typedef unsigned int __uint16_t;
65#define ___int16_t_defined 1
66#elif __EXP(SHRT_MAX) == 0x7fff
67typedef signed short __int16_t;
68typedef unsigned short __uint16_t;
69#define ___int16_t_defined 1
70#elif __EXP(SCHAR_MAX) == 0x7fff
71typedef signed char __int16_t;
72typedef unsigned char __uint16_t;
73#define ___int16_t_defined 1
74#endif
75
76#ifdef __INT32_TYPE__
77typedef __INT32_TYPE__ __int32_t;
78#ifdef __UINT32_TYPE__
79typedef __UINT32_TYPE__ __uint32_t;
80#else
81typedef unsigned __INT32_TYPE__ __uint32_t;
82#endif
83#define ___int32_t_defined 1
84#elif __EXP(INT_MAX) == 0x7fffffffL
85typedef signed int __int32_t;
86typedef unsigned int __uint32_t;
87#define ___int32_t_defined 1
88#elif __EXP(LONG_MAX) == 0x7fffffffL
89typedef signed long __int32_t;
90typedef unsigned long __uint32_t;
91#define ___int32_t_defined 1
92#elif __EXP(SHRT_MAX) == 0x7fffffffL
93typedef signed short __int32_t;
94typedef unsigned short __uint32_t;
95#define ___int32_t_defined 1
96#elif __EXP(SCHAR_MAX) == 0x7fffffffL
97typedef signed char __int32_t;
98typedef unsigned char __uint32_t;
99#define ___int32_t_defined 1
100#endif
101
102#ifdef __INT64_TYPE__
103typedef __INT64_TYPE__ __int64_t;
104#ifdef __UINT64_TYPE__
105typedef __UINT64_TYPE__ __uint64_t;
106#else
107typedef unsigned __INT64_TYPE__ __uint64_t;
108#endif
109#define ___int64_t_defined 1
110#elif __EXP(LONG_MAX) > 0x7fffffff
111typedef signed long __int64_t;
112typedef unsigned long __uint64_t;
113#define ___int64_t_defined 1
114
115/* GCC has __LONG_LONG_MAX__ */
116#elif  defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff)
117typedef signed long long __int64_t;
118typedef unsigned long long __uint64_t;
119#define ___int64_t_defined 1
120
121/* POSIX mandates LLONG_MAX in <limits.h> */
122#elif  defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
123typedef signed long long __int64_t;
124typedef unsigned long long __uint64_t;
125#define ___int64_t_defined 1
126
127#elif  __EXP(INT_MAX) > 0x7fffffff
128typedef signed int __int64_t;
129typedef unsigned int __uint64_t;
130#define ___int64_t_defined 1
131#endif
132
133#ifdef __INT_LEAST8_TYPE__
134typedef __INT_LEAST8_TYPE__ __int_least8_t;
135#ifdef __UINT_LEAST8_TYPE__
136typedef __UINT_LEAST8_TYPE__ __uint_least8_t;
137#else
138typedef unsigned __INT_LEAST8_TYPE__ __uint_least8_t;
139#endif
140#define ___int_least8_t_defined 1
141#elif defined(___int8_t_defined)
142typedef __int8_t __int_least8_t;
143typedef __uint8_t __uint_least8_t;
144#define ___int_least8_t_defined 1
145#elif defined(___int16_t_defined)
146typedef __int16_t __int_least8_t;
147typedef __uint16_t __uint_least8_t;
148#define ___int_least8_t_defined 1
149#elif defined(___int32_t_defined)
150typedef __int32_t __int_least8_t;
151typedef __uint32_t __uint_least8_t;
152#define ___int_least8_t_defined 1
153#elif defined(___int64_t_defined)
154typedef __int64_t __int_least8_t;
155typedef __uint64_t __uint_least8_t;
156#define ___int_least8_t_defined 1
157#endif
158
159#ifdef __INT_LEAST16_TYPE__
160typedef __INT_LEAST16_TYPE__ __int_least16_t;
161#ifdef __UINT_LEAST16_TYPE__
162typedef __UINT_LEAST16_TYPE__ __uint_least16_t;
163#else
164typedef unsigned __INT_LEAST16_TYPE__ __uint_least16_t;
165#endif
166#define ___int_least16_t_defined 1
167#elif defined(___int16_t_defined)
168typedef __int16_t __int_least16_t;
169typedef __uint16_t __uint_least16_t;
170#define ___int_least16_t_defined 1
171#elif defined(___int32_t_defined)
172typedef __int32_t __int_least16_t;
173typedef __uint32_t __uint_least16_t;
174#define ___int_least16_t_defined 1
175#elif defined(___int64_t_defined)
176typedef __int64_t __int_least16_t;
177typedef __uint64_t __uint_least16_t;
178#define ___int_least16_t_defined 1
179#endif
180
181#ifdef __INT_LEAST32_TYPE__
182typedef __INT_LEAST32_TYPE__ __int_least32_t;
183#ifdef __UINT_LEAST32_TYPE__
184typedef __UINT_LEAST32_TYPE__ __uint_least32_t;
185#else
186typedef unsigned __INT_LEAST32_TYPE__ __uint_least32_t;
187#endif
188#define ___int_least32_t_defined 1
189#elif defined(___int32_t_defined)
190typedef __int32_t __int_least32_t;
191typedef __uint32_t __uint_least32_t;
192#define ___int_least32_t_defined 1
193#elif defined(___int64_t_defined)
194typedef __int64_t __int_least32_t;
195typedef __uint64_t __uint_least32_t;
196#define ___int_least32_t_defined 1
197#endif
198
199#ifdef __INT_LEAST64_TYPE__
200typedef __INT_LEAST64_TYPE__ __int_least64_t;
201#ifdef __UINT_LEAST64_TYPE__
202typedef __UINT_LEAST64_TYPE__ __uint_least64_t;
203#else
204typedef unsigned __INT_LEAST64_TYPE__ __uint_least64_t;
205#endif
206#define ___int_least64_t_defined 1
207#elif defined(___int64_t_defined)
208typedef __int64_t __int_least64_t;
209typedef __uint64_t __uint_least64_t;
210#define ___int_least64_t_defined 1
211#endif
212
213#if defined(__INTMAX_TYPE__)
214typedef __INTMAX_TYPE__ __intmax_t;
215#elif __have_longlong64
216typedef signed long long __intmax_t;
217#else
218typedef signed long __intmax_t;
219#endif
220
221#if defined(__UINTMAX_TYPE__)
222typedef __UINTMAX_TYPE__ __uintmax_t;
223#elif __have_longlong64
224typedef unsigned long long __uintmax_t;
225#else
226typedef unsigned long __uintmax_t;
227#endif
228
229#ifdef __INTPTR_TYPE__
230typedef __INTPTR_TYPE__ __intptr_t;
231#ifdef __UINTPTR_TYPE__
232typedef __UINTPTR_TYPE__ __uintptr_t;
233#else
234typedef unsigned __INTPTR_TYPE__ __uintptr_t;
235#endif
236#elif defined(__PTRDIFF_TYPE__)
237typedef __PTRDIFF_TYPE__ __intptr_t;
238typedef unsigned __PTRDIFF_TYPE__ __uintptr_t;
239#else
240typedef long __intptr_t;
241typedef unsigned long __uintptr_t;
242#endif
243
244#undef __EXP
245
246#ifdef __cplusplus
247}
248#endif
249
250#endif /* _MACHINE__DEFAULT_TYPES_H */
Note: See TracBrowser for help on using the repository browser.