OSDN Git Service

2010-12-02 Jayant Sonar jayant.sonar@kpitcummins.com
[pf3gnuchains/pf3gnuchains4x.git] / newlib / libc / include / sys / config.h
1 #ifndef __SYS_CONFIG_H__
2 #define __SYS_CONFIG_H__
3
4 #include <machine/ieeefp.h>  /* floating point macros */
5 #include <sys/features.h>       /* POSIX defs */
6
7 /* exceptions first */
8 #if defined(__H8500__) || defined(__W65__)
9 #define __SMALL_BITFIELDS
10 /* ???  This conditional is true for the h8500 and the w65, defining H8300
11    in those cases probably isn't the right thing to do.  */
12 #define H8300 1
13 #endif
14
15 /* 16 bit integer machines */
16 #if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__)
17
18 #undef INT_MAX
19 #undef UINT_MAX
20 #define INT_MAX 32767
21 #define UINT_MAX 65535
22 #endif
23
24 #if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__)
25 #define __SMALL_BITFIELDS
26 #define H8300 1
27 #undef INT_MAX
28 #undef UINT_MAX
29 #define INT_MAX __INT_MAX__
30 #define UINT_MAX (__INT_MAX__ * 2U + 1)
31 #endif
32
33 #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
34 #ifndef __INT32__
35 #define __SMALL_BITFIELDS      
36 #undef INT_MAX
37 #undef UINT_MAX
38 #define INT_MAX 32767
39 #define UINT_MAX (__INT_MAX__ * 2U + 1)
40 #else /* INT32 */
41 #undef INT_MAX
42 #undef UINT_MAX
43 #define INT_MAX 2147483647
44 #define UINT_MAX (__INT_MAX__ * 2U + 1)
45 #endif /* INT32 */
46
47 #endif /* CR16C */
48
49 #if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
50 #define __SMALL_BITFIELDS
51 #endif
52
53 #ifdef __W65__
54 #define __SMALL_BITFIELDS
55 #endif
56
57 #if defined(__D10V__)
58 #define __SMALL_BITFIELDS
59 #undef INT_MAX
60 #undef UINT_MAX
61 #define INT_MAX __INT_MAX__
62 #define UINT_MAX (__INT_MAX__ * 2U + 1)
63 #define _POINTER_INT short
64 #endif
65
66 #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
67 #undef INT_MAX
68 #undef UINT_MAX
69 #define INT_MAX __INT_MAX__
70 #define UINT_MAX (__INT_MAX__ * 2U + 1)
71 #define _POINTER_INT short
72 #endif
73
74 #ifdef ___AM29K__
75 #define _FLOAT_RET double
76 #endif
77
78 #ifdef __i386__
79 #ifndef __unix__
80 /* in other words, go32 */
81 #define _FLOAT_RET double
82 #endif
83 #if defined(__linux__) || defined(__RDOS__)
84 /* we want the reentrancy structure to be returned by a function */
85 #define __DYNAMIC_REENT__
86 #define HAVE_GETDATE
87 #define _HAVE_SYSTYPES
88 #define _READ_WRITE_RETURN_TYPE _ssize_t
89 #define __LARGE64_FILES 1
90 /* we use some glibc header files so turn on glibc large file feature */
91 #define _LARGEFILE64_SOURCE 1
92 #endif
93 #endif
94
95 #ifdef __mn10200__
96 #define __SMALL_BITFIELDS
97 #endif
98
99 #ifdef __AVR__
100 #define __SMALL_BITFIELDS
101 #define _POINTER_INT short
102 #endif
103
104 #ifdef __v850
105 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
106 #endif
107
108 /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
109 #if defined(__PPC__)
110 #if defined(_CALL_SYSV)
111 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
112 #endif
113 #ifdef __SPE__
114 #define _LONG_DOUBLE double
115 #endif
116 #endif
117
118 /* Configure small REENT structure for Xilinx MicroBlaze platforms */
119 #if defined (__MICROBLAZE__)
120 #ifndef _REENT_SMALL
121 #define _REENT_SMALL
122 #endif
123 /* Xilinx XMK uses Unix98 mutex */
124 #ifdef __XMK__
125 #define _UNIX98_THREAD_MUTEX_ATTRIBUTES
126 #endif
127 #endif
128
129 #if defined(__mips__) && !defined(__rtems__)
130 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
131 #endif
132
133 #ifdef __xstormy16__
134 #define __SMALL_BITFIELDS
135 #undef INT_MAX
136 #undef UINT_MAX
137 #define INT_MAX __INT_MAX__
138 #define UINT_MAX (__INT_MAX__ * 2U + 1)
139 #define MALLOC_ALIGNMENT 8
140 #define _POINTER_INT short
141 #define __BUFSIZ__ 16
142 #define _REENT_SMALL
143 #endif
144 #ifdef __m32c__
145 #define __SMALL_BITFIELDS
146 #undef INT_MAX
147 #undef UINT_MAX
148 #define INT_MAX __INT_MAX__
149 #define UINT_MAX (__INT_MAX__ * 2U + 1)
150 #define MALLOC_ALIGNMENT 8
151 #if defined(__r8c_cpu__) || defined(__m16c_cpu__)
152 #define _POINTER_INT short
153 #else
154 #define _POINTER_INT long
155 #endif
156 #define __BUFSIZ__ 16
157 #define _REENT_SMALL
158 #endif /* __m32c__ */
159
160 #ifdef __SPU__
161 #define MALLOC_ALIGNMENT 16
162 #define __CUSTOM_FILE_IO__
163 #endif
164
165 /* This block should be kept in sync with GCC's limits.h.  The point
166    of having these definitions here is to not include limits.h, which
167    would pollute the user namespace, while still using types of the
168    the correct widths when deciding how to define __int32_t and
169    __int64_t.  */
170 #ifndef __INT_MAX__
171 # ifdef INT_MAX
172 #  define __INT_MAX__ INT_MAX
173 # else
174 #  define __INT_MAX__ 2147483647
175 # endif
176 #endif
177
178 #ifndef __LONG_MAX__
179 # ifdef LONG_MAX
180 #  define __LONG_MAX__ LONG_MAX
181 # else
182 #  if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \
183       || defined (__sparcv9)
184 #   define __LONG_MAX__ 9223372036854775807L
185 #  else
186 #   define __LONG_MAX__ 2147483647L
187 #  endif /* __alpha__ || sparc64 */
188 # endif
189 #endif
190 /* End of block that should be kept in sync with GCC's limits.h.  */
191
192 #ifndef _POINTER_INT
193 #define _POINTER_INT long
194 #endif
195
196 #ifdef __frv__
197 #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
198 #endif
199 #undef __RAND_MAX
200 #if __INT_MAX__ == 32767
201 #define __RAND_MAX 32767
202 #else
203 #define __RAND_MAX 0x7fffffff
204 #endif
205
206 #if defined(__CYGWIN__)
207 #include <cygwin/config.h>
208 #if !defined (__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L)
209 #define __USE_XOPEN2K 1
210 #endif
211 #endif
212
213 #if defined(__rtems__)
214 #define __FILENAME_MAX__ 255
215 #define _READ_WRITE_RETURN_TYPE _ssize_t
216 #endif
217
218 #ifndef __EXPORT
219 #define __EXPORT
220 #endif
221
222 #ifndef __IMPORT
223 #define __IMPORT
224 #endif
225
226 /* Define return type of read/write routines.  In POSIX, the return type
227    for read()/write() is "ssize_t" but legacy newlib code has been using
228    "int" for some time.  If not specified, "int" is defaulted.  */
229 #ifndef _READ_WRITE_RETURN_TYPE
230 #define _READ_WRITE_RETURN_TYPE int
231 #endif
232
233 #ifndef __WCHAR_MAX__
234 #if __INT_MAX__ == 32767 || defined (_WIN32)
235 #define __WCHAR_MAX__ 0xffffu
236 #endif
237 #endif
238
239 /* See if small reent asked for at configuration time and
240    is not chosen by the platform by default.  */
241 #ifdef _WANT_REENT_SMALL
242 #ifndef _REENT_SMALL
243 #define _REENT_SMALL
244 #endif
245 #endif
246
247 /* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended
248    charsets.  The extended charsets add a few functions and a couple
249    of tables of a few K each. */
250 #ifdef _MB_EXTENDED_CHARSETS_ALL
251 #define _MB_EXTENDED_CHARSETS_ISO 1
252 #define _MB_EXTENDED_CHARSETS_WINDOWS 1
253 #endif
254
255 #endif /* __SYS_CONFIG_H__ */