|
- #ifndef __SYS_CONFIG_H__
- #define __SYS_CONFIG_H__
-
- #include <machine/ieeefp.h> /* floating point macros */
- #include <sys/features.h> /* POSIX defs */
-
- #ifdef __aarch64__
- #define MALLOC_ALIGNMENT 16
- #endif
-
- #ifdef __AMDGCN__
- #define __DYNAMIC_REENT__
- #endif
-
- /* exceptions first */
- #if defined(__H8500__) || defined(__W65__)
- #define __SMALL_BITFIELDS
- /* ??? This conditional is true for the h8500 and the w65, defining H8300
- in those cases probably isn't the right thing to do. */
- #define H8300 1
- #endif
-
- /* 16 bit integer machines */
- #if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__)
-
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX 32767
- #define UINT_MAX 65535
- #endif
-
- #if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__)
- #define __SMALL_BITFIELDS
- #define H8300 1
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX __INT_MAX__
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #endif
-
- #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
- #ifndef __INT32__
- #define __SMALL_BITFIELDS
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX 32767
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #else /* INT32 */
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX 2147483647
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #endif /* INT32 */
-
- #endif /* CR16C */
-
- #if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
- #define __SMALL_BITFIELDS
- #endif
-
- #ifdef __W65__
- #define __SMALL_BITFIELDS
- #endif
-
- #if defined(__D10V__)
- #define __SMALL_BITFIELDS
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX __INT_MAX__
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #define _POINTER_INT short
- #endif
-
- #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX __INT_MAX__
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #define _POINTER_INT short
- #endif
-
- #if defined(__m68k__) || defined(__mc68000__) || defined(__riscv)
- #define _READ_WRITE_RETURN_TYPE _ssize_t
- #endif
-
- #ifdef ___AM29K__
- #define _FLOAT_RET double
- #endif
-
- #ifdef __i386__
- #ifndef __unix__
- /* in other words, go32 */
- #define _FLOAT_RET double
- #endif
- #if defined(__linux__) || defined(__RDOS__)
- /* we want the reentrancy structure to be returned by a function */
- #define __DYNAMIC_REENT__
- #define HAVE_GETDATE
- #define _READ_WRITE_RETURN_TYPE _ssize_t
- #define __LARGE64_FILES 1
- /* we use some glibc header files so turn on glibc large file feature */
- #define _LARGEFILE64_SOURCE 1
- #endif
- #endif
-
- #ifdef __mn10200__
- #define __SMALL_BITFIELDS
- #endif
-
- #ifdef __AVR__
- #define __SMALL_BITFIELDS
- #define _POINTER_INT short
- #endif
-
- #if defined(__v850) && !defined(__rtems__)
- #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
- #endif
-
- /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
- #if defined(__PPC__)
- #if defined(_CALL_SYSV)
- #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
- #endif
- #ifdef __SPE__
- #define _LONG_DOUBLE double
- #endif
- #endif
-
- /* Configure small REENT structure for Xilinx MicroBlaze platforms */
- #if defined (__MICROBLAZE__)
- #ifndef _REENT_SMALL
- #define _REENT_SMALL
- #endif
- /* Xilinx XMK uses Unix98 mutex */
- #ifdef __XMK__
- #define _UNIX98_THREAD_MUTEX_ATTRIBUTES
- #endif
- #endif
-
- #if defined(__mips__) && !defined(__rtems__)
- #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
- #endif
-
- #ifdef __xstormy16__
- #define __SMALL_BITFIELDS
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX __INT_MAX__
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #define MALLOC_ALIGNMENT 8
- #define _POINTER_INT short
- #define __BUFSIZ__ 16
- #define _REENT_SMALL
- #endif
-
- #if defined __MSP430__
- #ifndef _REENT_SMALL
- #define _REENT_SMALL
- #endif
-
- #define __BUFSIZ__ 256
- #define __SMALL_BITFIELDS
-
- #ifdef __MSP430X_LARGE__
- #define _POINTER_INT long
- #else
- #define _POINTER_INT int
- #endif
- #endif
-
- #ifdef __m32c__
- #define __SMALL_BITFIELDS
- #undef INT_MAX
- #undef UINT_MAX
- #define INT_MAX __INT_MAX__
- #define UINT_MAX (__INT_MAX__ * 2U + 1)
- #define MALLOC_ALIGNMENT 8
- #if defined(__r8c_cpu__) || defined(__m16c_cpu__)
- #define _POINTER_INT short
- #else
- #define _POINTER_INT long
- #endif
- #define __BUFSIZ__ 16
- #define _REENT_SMALL
- #endif /* __m32c__ */
-
- #ifdef __SPU__
- #define MALLOC_ALIGNMENT 16
- #define __CUSTOM_FILE_IO__
- #endif
-
- #if defined(__or1k__) || defined(__or1knd__)
- #define __DYNAMIC_REENT__
- #endif
-
- /* This block should be kept in sync with GCC's limits.h. The point
- of having these definitions here is to not include limits.h, which
- would pollute the user namespace, while still using types of the
- the correct widths when deciding how to define __int32_t and
- __int64_t. */
- #ifndef __INT_MAX__
- # ifdef INT_MAX
- # define __INT_MAX__ INT_MAX
- # else
- # define __INT_MAX__ 2147483647
- # endif
- #endif
-
- #ifndef __LONG_MAX__
- # ifdef LONG_MAX
- # define __LONG_MAX__ LONG_MAX
- # else
- # if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \
- || defined (__sparcv9)
- # define __LONG_MAX__ 9223372036854775807L
- # else
- # define __LONG_MAX__ 2147483647L
- # endif /* __alpha__ || sparc64 */
- # endif
- #endif
- /* End of block that should be kept in sync with GCC's limits.h. */
-
- #ifndef _POINTER_INT
- #define _POINTER_INT long
- #endif
-
- #ifdef __frv__
- #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
- #endif
- #undef __RAND_MAX
- #if __INT_MAX__ == 32767
- #define __RAND_MAX 32767
- #else
- #define __RAND_MAX 0x7fffffff
- #endif
-
- #if defined(__CYGWIN__)
- #include <cygwin/config.h>
- #endif
-
- #if defined(__rtems__)
- #define __FILENAME_MAX__ 255
- #define _READ_WRITE_RETURN_TYPE _ssize_t
- #define __DYNAMIC_REENT__
- #define _REENT_GLOBAL_ATEXIT
- #define _REENT_GLOBAL_STDIO_STREAMS
- #endif
-
- #ifndef __EXPORT
- #define __EXPORT
- #endif
-
- #ifndef __IMPORT
- #define __IMPORT
- #endif
-
- /* Define return type of read/write routines. In POSIX, the return type
- for read()/write() is "ssize_t" but legacy newlib code has been using
- "int" for some time. If not specified, "int" is defaulted. */
- #ifndef _READ_WRITE_RETURN_TYPE
- #define _READ_WRITE_RETURN_TYPE int
- #endif
- /* Define `count' parameter of read/write routines. In POSIX, the `count'
- parameter is "size_t" but legacy newlib code has been using "int" for some
- time. If not specified, "int" is defaulted. */
- #ifndef _READ_WRITE_BUFSIZE_TYPE
- #define _READ_WRITE_BUFSIZE_TYPE int
- #endif
-
- #ifndef __WCHAR_MAX__
- #if __INT_MAX__ == 32767 || defined (_WIN32)
- #define __WCHAR_MAX__ 0xffffu
- #endif
- #endif
-
- /* See if small reent asked for at configuration time and
- is not chosen by the platform by default. */
- #ifdef _WANT_REENT_SMALL
- #ifndef _REENT_SMALL
- #define _REENT_SMALL
- #endif
- #endif
-
- #ifdef _WANT_REENT_GLOBAL_STDIO_STREAMS
- #ifndef _REENT_GLOBAL_STDIO_STREAMS
- #define _REENT_GLOBAL_STDIO_STREAMS
- #endif
- #endif
-
- #ifdef _WANT_USE_LONG_TIME_T
- #ifndef _USE_LONG_TIME_T
- #define _USE_LONG_TIME_T
- #endif
- #endif
-
- /* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended
- charsets. The extended charsets add a few functions and a couple
- of tables of a few K each. */
- #ifdef _MB_EXTENDED_CHARSETS_ALL
- #define _MB_EXTENDED_CHARSETS_ISO 1
- #define _MB_EXTENDED_CHARSETS_WINDOWS 1
- #endif
-
- #endif /* __SYS_CONFIG_H__ */
|