1*53ee8cc1Swenshuai.xi #ifndef __SYS_CONFIG_H__ 2*53ee8cc1Swenshuai.xi #define __SYS_CONFIG_H__ 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include <machine/ieeefp.h> /* floating point macros */ 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi /* exceptions first */ 7*53ee8cc1Swenshuai.xi #if defined(__H8500__) || defined(__W65__) 8*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 9*53ee8cc1Swenshuai.xi /* ??? This conditional is true for the h8500 and the w65, defining H8300 10*53ee8cc1Swenshuai.xi in those cases probably isn't the right thing to do. */ 11*53ee8cc1Swenshuai.xi #define H8300 1 12*53ee8cc1Swenshuai.xi #endif 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi /* 16 bit integer machines */ 15*53ee8cc1Swenshuai.xi #if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__) 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi #undef INT_MAX 18*53ee8cc1Swenshuai.xi #undef UINT_MAX 19*53ee8cc1Swenshuai.xi #define INT_MAX 32767 20*53ee8cc1Swenshuai.xi #define UINT_MAX 65535 21*53ee8cc1Swenshuai.xi #endif 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi #if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__) 24*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 25*53ee8cc1Swenshuai.xi #define H8300 1 26*53ee8cc1Swenshuai.xi #undef INT_MAX 27*53ee8cc1Swenshuai.xi #undef UINT_MAX 28*53ee8cc1Swenshuai.xi #define INT_MAX __INT_MAX__ 29*53ee8cc1Swenshuai.xi #define UINT_MAX (__INT_MAX__ * 2U + 1) 30*53ee8cc1Swenshuai.xi #endif 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi #ifdef __W65__ 33*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 34*53ee8cc1Swenshuai.xi #endif 35*53ee8cc1Swenshuai.xi 36*53ee8cc1Swenshuai.xi #if defined(__D10V__) 37*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 38*53ee8cc1Swenshuai.xi #undef INT_MAX 39*53ee8cc1Swenshuai.xi #undef UINT_MAX 40*53ee8cc1Swenshuai.xi #define INT_MAX __INT_MAX__ 41*53ee8cc1Swenshuai.xi #define UINT_MAX (__INT_MAX__ * 2U + 1) 42*53ee8cc1Swenshuai.xi #define _POINTER_INT short 43*53ee8cc1Swenshuai.xi #endif 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) 46*53ee8cc1Swenshuai.xi #undef INT_MAX 47*53ee8cc1Swenshuai.xi #undef UINT_MAX 48*53ee8cc1Swenshuai.xi #define INT_MAX __INT_MAX__ 49*53ee8cc1Swenshuai.xi #define UINT_MAX (__INT_MAX__ * 2U + 1) 50*53ee8cc1Swenshuai.xi #define _POINTER_INT short 51*53ee8cc1Swenshuai.xi #endif 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi #ifdef ___AM29K__ 54*53ee8cc1Swenshuai.xi #define _FLOAT_RET double 55*53ee8cc1Swenshuai.xi #endif 56*53ee8cc1Swenshuai.xi 57*53ee8cc1Swenshuai.xi #ifdef __i386__ 58*53ee8cc1Swenshuai.xi #ifndef __unix__ 59*53ee8cc1Swenshuai.xi /* in other words, go32 */ 60*53ee8cc1Swenshuai.xi #define _FLOAT_RET double 61*53ee8cc1Swenshuai.xi #endif 62*53ee8cc1Swenshuai.xi #ifdef __linux__ 63*53ee8cc1Swenshuai.xi /* we want the reentrancy structure to be returned by a function */ 64*53ee8cc1Swenshuai.xi #define __DYNAMIC_REENT__ 65*53ee8cc1Swenshuai.xi #define HAVE_GETDATE 66*53ee8cc1Swenshuai.xi #define _HAVE_SYSTYPES 67*53ee8cc1Swenshuai.xi #define _READ_WRITE_RETURN_TYPE _ssize_t 68*53ee8cc1Swenshuai.xi #define __LARGE64_FILES 1 69*53ee8cc1Swenshuai.xi /* we use some glibc header files so turn on glibc large file feature */ 70*53ee8cc1Swenshuai.xi #define _LARGEFILE64_SOURCE 1 71*53ee8cc1Swenshuai.xi #endif 72*53ee8cc1Swenshuai.xi #endif 73*53ee8cc1Swenshuai.xi 74*53ee8cc1Swenshuai.xi #ifdef __mn10200__ 75*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 76*53ee8cc1Swenshuai.xi #endif 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi #ifdef __AVR__ 79*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 80*53ee8cc1Swenshuai.xi #define _POINTER_INT short 81*53ee8cc1Swenshuai.xi #endif 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi #ifdef __v850 84*53ee8cc1Swenshuai.xi #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__)) 85*53ee8cc1Swenshuai.xi #endif 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */ 88*53ee8cc1Swenshuai.xi #if defined(__PPC__) 89*53ee8cc1Swenshuai.xi #if defined(_CALL_SYSV) 90*53ee8cc1Swenshuai.xi #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) 91*53ee8cc1Swenshuai.xi #endif 92*53ee8cc1Swenshuai.xi #ifdef __SPE__ 93*53ee8cc1Swenshuai.xi #define _LONG_DOUBLE double 94*53ee8cc1Swenshuai.xi #endif 95*53ee8cc1Swenshuai.xi #endif 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi #ifdef __xstormy16__ 98*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 99*53ee8cc1Swenshuai.xi #undef INT_MAX 100*53ee8cc1Swenshuai.xi #undef UINT_MAX 101*53ee8cc1Swenshuai.xi #define INT_MAX __INT_MAX__ 102*53ee8cc1Swenshuai.xi #define UINT_MAX (__INT_MAX__ * 2U + 1) 103*53ee8cc1Swenshuai.xi #define MALLOC_ALIGNMENT 8 104*53ee8cc1Swenshuai.xi #define _POINTER_INT short 105*53ee8cc1Swenshuai.xi #define __BUFSIZ__ 16 106*53ee8cc1Swenshuai.xi #define _REENT_SMALL 107*53ee8cc1Swenshuai.xi #endif 108*53ee8cc1Swenshuai.xi #ifdef __m32c__ 109*53ee8cc1Swenshuai.xi #define __SMALL_BITFIELDS 110*53ee8cc1Swenshuai.xi #undef INT_MAX 111*53ee8cc1Swenshuai.xi #undef UINT_MAX 112*53ee8cc1Swenshuai.xi #define INT_MAX __INT_MAX__ 113*53ee8cc1Swenshuai.xi #define UINT_MAX (__INT_MAX__ * 2U + 1) 114*53ee8cc1Swenshuai.xi #define MALLOC_ALIGNMENT 8 115*53ee8cc1Swenshuai.xi #if defined(__r8c_cpu__) || defined(__m16c_cpu__) 116*53ee8cc1Swenshuai.xi #define _POINTER_INT short 117*53ee8cc1Swenshuai.xi #else 118*53ee8cc1Swenshuai.xi #define _POINTER_INT long 119*53ee8cc1Swenshuai.xi #endif 120*53ee8cc1Swenshuai.xi #define __BUFSIZ__ 16 121*53ee8cc1Swenshuai.xi #define _REENT_SMALL 122*53ee8cc1Swenshuai.xi #endif /* __m32c__ */ 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi /* This block should be kept in sync with GCC's limits.h. The point 126*53ee8cc1Swenshuai.xi of having these definitions here is to not include limits.h, which 127*53ee8cc1Swenshuai.xi would pollute the user namespace, while still using types of the 128*53ee8cc1Swenshuai.xi the correct widths when deciding how to define __int32_t and 129*53ee8cc1Swenshuai.xi __int64_t. */ 130*53ee8cc1Swenshuai.xi #ifndef __INT_MAX__ 131*53ee8cc1Swenshuai.xi # ifdef INT_MAX 132*53ee8cc1Swenshuai.xi # define __INT_MAX__ INT_MAX 133*53ee8cc1Swenshuai.xi # else 134*53ee8cc1Swenshuai.xi # define __INT_MAX__ 2147483647 135*53ee8cc1Swenshuai.xi # endif 136*53ee8cc1Swenshuai.xi #endif 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi #ifndef __LONG_MAX__ 139*53ee8cc1Swenshuai.xi # ifdef LONG_MAX 140*53ee8cc1Swenshuai.xi # define __LONG_MAX__ LONG_MAX 141*53ee8cc1Swenshuai.xi # else 142*53ee8cc1Swenshuai.xi # if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \ 143*53ee8cc1Swenshuai.xi || defined (__sparcv9) 144*53ee8cc1Swenshuai.xi # define __LONG_MAX__ 9223372036854775807L 145*53ee8cc1Swenshuai.xi # else 146*53ee8cc1Swenshuai.xi # define __LONG_MAX__ 2147483647L 147*53ee8cc1Swenshuai.xi # endif /* __alpha__ || sparc64 */ 148*53ee8cc1Swenshuai.xi # endif 149*53ee8cc1Swenshuai.xi #endif 150*53ee8cc1Swenshuai.xi /* End of block that should be kept in sync with GCC's limits.h. */ 151*53ee8cc1Swenshuai.xi 152*53ee8cc1Swenshuai.xi #ifndef _POINTER_INT 153*53ee8cc1Swenshuai.xi #define _POINTER_INT long 154*53ee8cc1Swenshuai.xi #endif 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi #ifdef __frv__ 157*53ee8cc1Swenshuai.xi #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) 158*53ee8cc1Swenshuai.xi #endif 159*53ee8cc1Swenshuai.xi #undef __RAND_MAX 160*53ee8cc1Swenshuai.xi #if __INT_MAX__ == 32767 161*53ee8cc1Swenshuai.xi #define __RAND_MAX 32767 162*53ee8cc1Swenshuai.xi #else 163*53ee8cc1Swenshuai.xi #define __RAND_MAX 0x7fffffff 164*53ee8cc1Swenshuai.xi #endif 165*53ee8cc1Swenshuai.xi 166*53ee8cc1Swenshuai.xi #if defined(__CYGWIN__) 167*53ee8cc1Swenshuai.xi #include <cygwin/config.h> 168*53ee8cc1Swenshuai.xi #endif 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi #if defined(__rtems__) 171*53ee8cc1Swenshuai.xi #define __FILENAME_MAX__ 255 172*53ee8cc1Swenshuai.xi #define _READ_WRITE_RETURN_TYPE _ssize_t 173*53ee8cc1Swenshuai.xi #endif 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi #ifndef __IMPORT 176*53ee8cc1Swenshuai.xi #define __IMPORT 177*53ee8cc1Swenshuai.xi #endif 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi /* Define return type of read/write routines. In POSIX, the return type 180*53ee8cc1Swenshuai.xi for read()/write() is "ssize_t" but legacy newlib code has been using 181*53ee8cc1Swenshuai.xi "int" for some time. If not specified, "int" is defaulted. */ 182*53ee8cc1Swenshuai.xi #ifndef _READ_WRITE_RETURN_TYPE 183*53ee8cc1Swenshuai.xi #define _READ_WRITE_RETURN_TYPE int 184*53ee8cc1Swenshuai.xi #endif 185*53ee8cc1Swenshuai.xi 186*53ee8cc1Swenshuai.xi #ifndef __WCHAR_MAX__ 187*53ee8cc1Swenshuai.xi #if __INT_MAX__ == 32767 || defined (_WIN32) 188*53ee8cc1Swenshuai.xi #define __WCHAR_MAX__ 0xffffu 189*53ee8cc1Swenshuai.xi #endif 190*53ee8cc1Swenshuai.xi #endif 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi #endif /* __SYS_CONFIG_H__ */ 193