parent
e78b55aa62
commit
3f1b39099b
@ -0,0 +1,99 @@ |
||||
/* Provide support for both ANSI and non-ANSI environments. */ |
||||
|
||||
/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be
|
||||
relied upon to have it's intended meaning. Therefore we must use our own |
||||
concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib |
||||
sources! |
||||
|
||||
To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will |
||||
"comment out" the non-ANSI parts of the ANSI header files (non-ANSI header |
||||
files aren't affected). */ |
||||
|
||||
#ifndef _ANSIDECL_H_ |
||||
#define _ANSIDECL_H_ |
||||
|
||||
#include <newlib.h> |
||||
#include <sys/config.h> |
||||
|
||||
/* First try to figure out whether we really are in an ANSI C environment. */ |
||||
/* FIXME: This probably needs some work. Perhaps sys/config.h can be
|
||||
prevailed upon to give us a clue. */ |
||||
|
||||
#ifdef __STDC__ |
||||
#define _HAVE_STDC |
||||
#endif |
||||
|
||||
#ifdef _HAVE_STDC |
||||
#define _PTR void * |
||||
#define _AND , |
||||
#define _NOARGS void |
||||
#define _CONST const |
||||
#define _VOLATILE volatile |
||||
#define _SIGNED signed |
||||
#define _DOTS , ... |
||||
#define _VOID void |
||||
#ifdef __CYGWIN__ |
||||
#define _EXFUN(name, proto) __cdecl name proto |
||||
#define _EXPARM(name, proto) (* __cdecl name) proto |
||||
#else |
||||
#define _EXFUN(name, proto) name proto |
||||
#define _EXPARM(name, proto) (* name) proto |
||||
#endif |
||||
#define _DEFUN(name, arglist, args) name(args) |
||||
#define _DEFUN_VOID(name) name(_NOARGS) |
||||
#define _CAST_VOID (void) |
||||
#ifndef _LONG_DOUBLE |
||||
#define _LONG_DOUBLE long double |
||||
#endif |
||||
#ifndef _LONG_LONG_TYPE |
||||
#define _LONG_LONG_TYPE long long |
||||
#endif |
||||
#ifndef _PARAMS |
||||
#define _PARAMS(paramlist) paramlist |
||||
#endif |
||||
#else |
||||
#define _PTR char * |
||||
#define _AND ; |
||||
#define _NOARGS |
||||
#define _CONST |
||||
#define _VOLATILE |
||||
#define _SIGNED |
||||
#define _DOTS |
||||
#define _VOID void |
||||
#define _EXFUN(name, proto) name() |
||||
#define _DEFUN(name, arglist, args) name arglist args; |
||||
#define _DEFUN_VOID(name) name() |
||||
#define _CAST_VOID |
||||
#define _LONG_DOUBLE double |
||||
#define _LONG_LONG_TYPE long |
||||
#ifndef _PARAMS |
||||
#define _PARAMS(paramlist) () |
||||
#endif |
||||
#endif |
||||
|
||||
/* Support gcc's __attribute__ facility. */ |
||||
|
||||
#ifdef __GNUC__ |
||||
#define _ATTRIBUTE(attrs) __attribute__ (attrs) |
||||
#else |
||||
#define _ATTRIBUTE(attrs) |
||||
#endif |
||||
|
||||
/* ISO C++. */ |
||||
|
||||
#ifdef __cplusplus |
||||
#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C)) |
||||
#ifdef _HAVE_STD_CXX |
||||
#define _BEGIN_STD_C namespace std { extern "C" { |
||||
#define _END_STD_C } } |
||||
#else |
||||
#define _BEGIN_STD_C extern "C" { |
||||
#define _END_STD_C } |
||||
#endif |
||||
#endif |
||||
#else |
||||
#define _BEGIN_STD_C |
||||
#define _END_STD_C |
||||
#endif |
||||
|
||||
#endif /* _ANSIDECL_H_ */ |
@ -0,0 +1,121 @@ |
||||
/*
|
||||
* $Id: _default_types.h,v 1.2 2008/06/11 22:14:54 jjohnstn Exp $ |
||||
*/ |
||||
|
||||
#ifndef _MACHINE__DEFAULT_TYPES_H |
||||
#define _MACHINE__DEFAULT_TYPES_H |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/*
|
||||
* Guess on types by examining *_MIN / *_MAX defines. |
||||
*/ |
||||
#if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ >= 3 ) \ |
||||
&& defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 )) |
||||
/* GCC >= 3.3.0 has __<val>__ implicitly defined. */ |
||||
#define __EXP(x) __##x##__ |
||||
#else |
||||
/* Fall back to POSIX versions from <limits.h> */ |
||||
#define __EXP(x) x |
||||
#include <limits.h> |
||||
#endif |
||||
|
||||
#if __EXP(SCHAR_MAX) == 0x7f |
||||
typedef signed char __int8_t ; |
||||
typedef unsigned char __uint8_t ; |
||||
#define ___int8_t_defined 1 |
||||
#endif |
||||
|
||||
#if __EXP(INT_MAX) == 0x7fff |
||||
typedef signed int __int16_t; |
||||
typedef unsigned int __uint16_t; |
||||
#define ___int16_t_defined 1 |
||||
#elif __EXP(SHRT_MAX) == 0x7fff |
||||
typedef signed short __int16_t; |
||||
typedef unsigned short __uint16_t; |
||||
#define ___int16_t_defined 1 |
||||
#elif __EXP(SCHAR_MAX) == 0x7fff |
||||
typedef signed char __int16_t; |
||||
typedef unsigned char __uint16_t; |
||||
#define ___int16_t_defined 1 |
||||
#endif |
||||
|
||||
#if ___int16_t_defined |
||||
typedef __int16_t __int_least16_t; |
||||
typedef __uint16_t __uint_least16_t; |
||||
#define ___int_least16_t_defined 1 |
||||
|
||||
#if !___int8_t_defined |
||||
typedef __int16_t __int_least8_t; |
||||
typedef __uint16_t __uint_least8_t; |
||||
#define ___int_least8_t_defined 1 |
||||
#endif |
||||
#endif |
||||
|
||||
#if __EXP(INT_MAX) == 0x7fffffffL |
||||
typedef signed int __int32_t; |
||||
typedef unsigned int __uint32_t; |
||||
#define ___int32_t_defined 1 |
||||
#elif __EXP(LONG_MAX) == 0x7fffffffL |
||||
typedef signed long __int32_t; |
||||
typedef unsigned long __uint32_t; |
||||
#define ___int32_t_defined 1 |
||||
#elif __EXP(SHRT_MAX) == 0x7fffffffL |
||||
typedef signed short __int32_t; |
||||
typedef unsigned short __uint32_t; |
||||
#define ___int32_t_defined 1 |
||||
#elif __EXP(SCHAR_MAX) == 0x7fffffffL |
||||
typedef signed char __int32_t; |
||||
typedef unsigned char __uint32_t; |
||||
#define ___int32_t_defined 1 |
||||
#endif |
||||
|
||||
#if ___int32_t_defined |
||||
typedef __int32_t __int_least32_t; |
||||
typedef __uint32_t __uint_least32_t; |
||||
#define ___int_least32_t_defined 1 |
||||
|
||||
#if !___int8_t_defined |
||||
typedef __int32_t __int_least8_t; |
||||
typedef __uint32_t __uint_least8_t; |
||||
#define ___int_least8_t_defined 1 |
||||
#endif |
||||
#if !___int16_t_defined |
||||
typedef __int32_t __int_least16_t; |
||||
typedef __uint32_t __uint_least16_t; |
||||
#define ___int_least16_t_defined 1 |
||||
#endif |
||||
#endif |
||||
|
||||
#if __EXP(LONG_MAX) > 0x7fffffff |
||||
typedef signed long __int64_t; |
||||
typedef unsigned long __uint64_t; |
||||
#define ___int64_t_defined 1 |
||||
|
||||
/* GCC has __LONG_LONG_MAX__ */ |
||||
#elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff) |
||||
typedef signed long long __int64_t; |
||||
typedef unsigned long long __uint64_t; |
||||
#define ___int64_t_defined 1 |
||||
|
||||
/* POSIX mandates LLONG_MAX in <limits.h> */ |
||||
#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff) |
||||
typedef signed long long __int64_t; |
||||
typedef unsigned long long __uint64_t; |
||||
#define ___int64_t_defined 1 |
||||
|
||||
#elif __EXP(INT_MAX) > 0x7fffffff |
||||
typedef signed int __int64_t; |
||||
typedef unsigned int __uint64_t; |
||||
#define ___int64_t_defined 1 |
||||
#endif |
||||
|
||||
#undef __EXP |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* _MACHINE__DEFAULT_TYPES_H */ |
@ -0,0 +1,8 @@ |
||||
/*
|
||||
* $Id: _types.h,v 1.3 2007/09/07 21:16:25 jjohnstn Exp $ |
||||
*/ |
||||
|
||||
#ifndef _MACHINE__TYPES_H |
||||
#define _MACHINE__TYPES_H |
||||
#include <machine/_default_types.h> |
||||
#endif |
@ -0,0 +1,333 @@ |
||||
#ifndef __IEEE_BIG_ENDIAN |
||||
#ifndef __IEEE_LITTLE_ENDIAN |
||||
|
||||
/* This file can define macros to choose variations of the IEEE float
|
||||
format: |
||||
|
||||
_FLT_LARGEST_EXPONENT_IS_NORMAL |
||||
|
||||
Defined if the float format uses the largest exponent for finite |
||||
numbers rather than NaN and infinity representations. Such a |
||||
format cannot represent NaNs or infinities at all, but it's FLT_MAX |
||||
is twice the IEEE value. |
||||
|
||||
_FLT_NO_DENORMALS |
||||
|
||||
Defined if the float format does not support IEEE denormals. Every |
||||
float with a zero exponent is taken to be a zero representation. |
||||
|
||||
??? At the moment, there are no equivalent macros above for doubles and |
||||
the macros are not fully supported by --enable-newlib-hw-fp. |
||||
|
||||
__IEEE_BIG_ENDIAN |
||||
|
||||
Defined if the float format is big endian. This is mutually exclusive |
||||
with __IEEE_LITTLE_ENDIAN. |
||||
|
||||
__IEEE_LITTLE_ENDIAN |
||||
|
||||
Defined if the float format is little endian. This is mutually exclusive |
||||
with __IEEE_BIG_ENDIAN. |
||||
|
||||
Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a |
||||
platform or error will occur. |
||||
|
||||
__IEEE_BYTES_LITTLE_ENDIAN |
||||
|
||||
This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
|
||||
whereby multiple words of an IEEE floating point are in big endian order, but the |
||||
words themselves are little endian with respect to the bytes. |
||||
|
||||
_DOUBLE_IS_32BITS
|
||||
|
||||
This is used on platforms that support double by using the 32-bit IEEE |
||||
float type. |
||||
|
||||
_FLOAT_ARG |
||||
|
||||
This represents what type a float arg is passed as. It is used when the type is |
||||
not promoted to double. |
||||
|
||||
*/ |
||||
|
||||
#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__) |
||||
/* ARM traditionally used big-endian words; and within those words the
|
||||
byte ordering was big or little endian depending upon the target. |
||||
Modern floating-point formats are naturally ordered; in this case |
||||
__VFP_FP__ will be defined, even if soft-float. */ |
||||
#ifdef __VFP_FP__ |
||||
# ifdef __ARMEL__ |
||||
# define __IEEE_LITTLE_ENDIAN |
||||
# else |
||||
# define __IEEE_BIG_ENDIAN |
||||
# endif |
||||
#else |
||||
# define __IEEE_BIG_ENDIAN |
||||
# ifdef __ARMEL__ |
||||
# define __IEEE_BYTES_LITTLE_ENDIAN |
||||
# endif |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __hppa__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __SPU__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
|
||||
#define isfinite(y) \ |
||||
(__extension__ ({__typeof__(y) __y = (y); \
|
||||
(sizeof (__y) == sizeof (float)) ? (1) : \
|
||||
fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;})) |
||||
#define isinf(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof (__x) == sizeof (float)) ? (0) : __isinfd(__x);})) |
||||
#define isnan(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof (__x) == sizeof (float)) ? (0) : __isnand(__x);})) |
||||
|
||||
/*
|
||||
* Macros for use in ieeefp.h. We can't just define the real ones here |
||||
* (like those above) as we have name space issues when this is *not* |
||||
* included via generic the ieeefp.h. |
||||
*/ |
||||
#define __ieeefp_isnanf(x) 0 |
||||
#define __ieeefp_isinff(x) 0 |
||||
#define __ieeefp_finitef(x) 1 |
||||
#endif |
||||
|
||||
#ifdef __sparc__ |
||||
#ifdef __LITTLE_ENDIAN_DATA__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#else |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
#endif |
||||
|
||||
#if defined(__m68k__) || defined(__mc68000__) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#ifdef __HAVE_SHORT_DOUBLE__ |
||||
# define _DOUBLE_IS_32BITS |
||||
#endif |
||||
#endif |
||||
|
||||
#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#define _FLOAT_ARG float |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#ifdef __sh__ |
||||
#ifdef __LITTLE_ENDIAN__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#else |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__) |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef _AM29K |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef _WIN32 |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __i386__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __i960__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __lm32__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __M32R__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#if defined(_C4x) || defined(_C3x) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#ifdef __TIC80__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __MIPSEL__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
#ifdef __MIPSEB__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __MMIX__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __D30V__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
/* necv70 was __IEEE_LITTLE_ENDIAN. */ |
||||
|
||||
#ifdef __W65__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#if defined(__Z8001__) || defined(__Z8002__) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __m88k__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __mn10300__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __mn10200__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#ifdef __v800 |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __v850 |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __D10V__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#if __DOUBLE__ == 32 |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __PPC__ |
||||
#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#else |
||||
#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32) |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __xstormy16__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __arc__ |
||||
#ifdef __big_endian__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#else |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __CRX__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __fr30__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __mcore__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __mt__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __frv__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __ia64__ |
||||
#ifdef __BIG_ENDIAN__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#else |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __AVR__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#if defined(__or32__) || defined(__or1k__) || defined(__or16__) |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __IP2K__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#define __SMALL_BITFIELDS |
||||
#define _DOUBLE_IS_32BITS |
||||
#endif |
||||
|
||||
#ifdef __iq2000__ |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __MAVERICK__ |
||||
#ifdef __ARMEL__ |
||||
# define __IEEE_LITTLE_ENDIAN |
||||
#else /* must be __ARMEB__ */ |
||||
# define __IEEE_BIG_ENDIAN |
||||
#endif /* __ARMEL__ */ |
||||
#endif /* __MAVERICK__ */ |
||||
|
||||
#ifdef __m32c__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#define __SMALL_BITFIELDS |
||||
#endif |
||||
|
||||
#ifdef __CRIS__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __BFIN__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __x86_64__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#endif |
||||
|
||||
#ifdef __mep__ |
||||
#ifdef __LITTLE_ENDIAN__ |
||||
#define __IEEE_LITTLE_ENDIAN |
||||
#else |
||||
#define __IEEE_BIG_ENDIAN |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef __IEEE_BIG_ENDIAN |
||||
#ifndef __IEEE_LITTLE_ENDIAN |
||||
#error Endianess not declared!! |
||||
#endif /* not __IEEE_LITTLE_ENDIAN */ |
||||
#endif /* not __IEEE_BIG_ENDIAN */ |
||||
|
||||
#endif /* not __IEEE_LITTLE_ENDIAN */ |
||||
#endif /* not __IEEE_BIG_ENDIAN */ |
||||
|
@ -0,0 +1,483 @@ |
||||
#ifndef _MATH_H_ |
||||
|
||||
#define _MATH_H_ |
||||
|
||||
#include <sys/reent.h> |
||||
#include <machine/ieeefp.h> |
||||
#include "_ansi.h" |
||||
|
||||
_BEGIN_STD_C |
||||
|
||||
union __dmath |
||||
{ |
||||
__ULong i[2]; |
||||
double d; |
||||
}; |
||||
|
||||
union __fmath |
||||
{ |
||||
__ULong i[1]; |
||||
float f; |
||||
}; |
||||
|
||||
union __ldmath |
||||
{ |
||||
__ULong i[4]; |
||||
_LONG_DOUBLE ld; |
||||
}; |
||||
|
||||
/* Natural log of 2 */ |
||||
#define _M_LOG2_E 0.693147180559945309417 |
||||
|
||||
#if defined(__GNUC__) && \ |
||||
( (__GNUC__ >= 4) || \
|
||||
( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 3) ) ) |
||||
|
||||
/* gcc >= 3.3 implicitly defines builtins for HUGE_VALx values. */ |
||||
|
||||
# ifndef HUGE_VAL |
||||
# define HUGE_VAL (__builtin_huge_val()) |
||||
# endif |
||||
|
||||
# ifndef HUGE_VALF |
||||
# define HUGE_VALF (__builtin_huge_valf()) |
||||
# endif |
||||
|
||||
# ifndef HUGE_VALL |
||||
# define HUGE_VALL (__builtin_huge_vall()) |
||||
# endif |
||||
|
||||
# ifndef INFINITY |
||||
# define INFINITY (__builtin_inff()) |
||||
# endif |
||||
|
||||
# ifndef NAN |
||||
# define NAN (__builtin_nanf("")) |
||||
# endif |
||||
|
||||
#else /* !gcc >= 3.3 */ |
||||
|
||||
/* No builtins. Use floating-point unions instead. Declare as an array
|
||||
without bounds so no matter what small data support a port and/or |
||||
library has, the reference will be via the general method for accessing |
||||
globals. */ |
||||
|
||||
#ifndef HUGE_VAL |
||||
extern __IMPORT const union __dmath __infinity[]; |
||||
#define HUGE_VAL (__infinity[0].d) |
||||
#endif |
||||
|
||||
#ifndef HUGE_VALF |
||||
extern __IMPORT const union __fmath __infinityf[]; |
||||
#define HUGE_VALF (__infinityf[0].f) |
||||
#endif |
||||
|
||||
#ifndef HUGE_VALL |
||||
extern __IMPORT const union __ldmath __infinityld[]; |
||||
#define HUGE_VALL (__infinityld[0].ld) |
||||
#endif |
||||
|
||||
#endif /* !gcc >= 3.3 */ |
||||
|
||||
/* Reentrant ANSI C functions. */ |
||||
|
||||
#ifndef __math_68881 |
||||
extern double atan _PARAMS((double)); |
||||
extern double cos _PARAMS((double)); |
||||
extern double sin _PARAMS((double)); |
||||
extern double tan _PARAMS((double)); |
||||
extern double tanh _PARAMS((double)); |
||||
extern double frexp _PARAMS((double, int *)); |
||||
extern double modf _PARAMS((double, double *)); |
||||
extern double ceil _PARAMS((double)); |
||||
extern double fabs _PARAMS((double)); |
||||
extern double floor _PARAMS((double)); |
||||
#endif /* ! defined (__math_68881) */ |
||||
|
||||
/* Non reentrant ANSI C functions. */ |
||||
|
||||
#ifndef _REENT_ONLY |
||||
#ifndef __math_6881 |
||||
extern double acos _PARAMS((double)); |
||||
extern double asin _PARAMS((double)); |
||||
extern double atan2 _PARAMS((double, double)); |
||||
extern double cosh _PARAMS((double)); |
||||
extern double sinh _PARAMS((double)); |
||||
extern double exp _PARAMS((double)); |
||||
extern double ldexp _PARAMS((double, int)); |
||||
extern double log _PARAMS((double)); |
||||
extern double log10 _PARAMS((double)); |
||||
extern double pow _PARAMS((double, double)); |
||||
extern double sqrt _PARAMS((double)); |
||||
extern double fmod _PARAMS((double, double)); |
||||
#endif /* ! defined (__math_68881) */ |
||||
#endif /* ! defined (_REENT_ONLY) */ |
||||
|
||||
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L |
||||
|
||||
/* ISO C99 types and macros. */ |
||||
|
||||
#ifndef FLT_EVAL_METHOD |
||||
#define FLT_EVAL_METHOD 0 |
||||
typedef float float_t; |
||||
typedef double double_t; |
||||
#endif /* FLT_EVAL_METHOD */ |
||||
|
||||
#define FP_NAN 0 |
||||
#define FP_INFINITE 1 |
||||
#define FP_ZERO 2 |
||||
#define FP_SUBNORMAL 3 |
||||
#define FP_NORMAL 4 |
||||
|
||||
#ifndef FP_ILOGB0 |
||||
# define FP_ILOGB0 (-INT_MAX) |
||||
#endif |
||||
#ifndef FP_ILOGBNAN |
||||
# define FP_ILOGBNAN INT_MAX |
||||
#endif |
||||
|
||||
#ifndef MATH_ERRNO |
||||
# define MATH_ERRNO 1 |
||||
#endif |
||||
#ifndef MATH_ERREXCEPT |
||||
# define MATH_ERREXCEPT 2 |
||||
#endif |
||||
#ifndef math_errhandling |
||||
# define math_errhandling MATH_ERRNO |
||||
#endif |
||||
|
||||
extern int __isinff (float x); |
||||
extern int __isinfd (double x); |
||||
extern int __isnanf (float x); |
||||
extern int __isnand (double x); |
||||
extern int __fpclassifyf (float x); |
||||
extern int __fpclassifyd (double x); |
||||
extern int __signbitf (float x); |
||||
extern int __signbitd (double x); |
||||
|
||||
#define fpclassify(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof (__x) == sizeof (float)) ? __fpclassifyf(__x) : __fpclassifyd(__x);})) |
||||
|
||||
#ifndef isfinite |
||||
#define isfinite(y) \ |
||||
(__extension__ ({__typeof__(y) __y = (y); \
|
||||
fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;})) |
||||
#endif |
||||
|
||||
/* Note: isinf and isnan were once functions in newlib that took double
|
||||
* arguments. C99 specifies that these names are reserved for macros |
||||
* supporting multiple floating point types. Thus, they are |
||||
* now defined as macros. Implementations of the old functions |
||||
* taking double arguments still exist for compatibility purposes. */ |
||||
#ifndef isinf |
||||
#define isinf(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof (__x) == sizeof (float)) ? __isinff(__x) : __isinfd(__x);})) |
||||
#endif |
||||
|
||||
#ifndef isnan |
||||
#define isnan(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof (__x) == sizeof (float)) ? __isnanf(__x) : __isnand(__x);})) |
||||
#endif |
||||
|
||||
#define isnormal(y) (fpclassify(y) == FP_NORMAL) |
||||
#define signbit(x) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); \
|
||||
(sizeof(__x) == sizeof(float)) ? __signbitf(__x) : __signbitd(__x);})) |
||||
|
||||
#define isgreater(x,y) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x > __y);})) |
||||
#define isgreaterequal(x,y) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x >= __y);})) |
||||
#define isless(x,y) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x < __y);})) |
||||
#define islessequal(x,y) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x <= __y);})) |
||||
#define islessgreater(x,y) \ |
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x < __y || __x > __y);})) |
||||
|
||||
#define isunordered(a,b) \ |
||||
(__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \
|
||||
fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;})) |
||||
|
||||
/* Non ANSI double precision functions. */ |
||||
|
||||
extern double infinity _PARAMS((void)); |
||||
extern double nan _PARAMS((const char *)); |
||||
extern int finite _PARAMS((double)); |
||||
extern double copysign _PARAMS((double, double)); |
||||
extern int ilogb _PARAMS((double)); |
||||
|
||||
extern double asinh _PARAMS((double)); |
||||
extern double cbrt _PARAMS((double)); |
||||
extern double nextafter _PARAMS((double, double)); |
||||
extern double rint _PARAMS((double)); |
||||
extern double scalbn _PARAMS((double, int)); |
||||
|
||||
extern double exp2 _PARAMS((double)); |
||||
extern double scalbln _PARAMS((double, long int)); |
||||
extern double tgamma _PARAMS((double)); |
||||
extern double nearbyint _PARAMS((double)); |
||||
extern long int lrint _PARAMS((double)); |
||||
extern _LONG_LONG_TYPE int llrint _PARAMS((double)); |
||||
extern double round _PARAMS((double)); |
||||
extern long int lround _PARAMS((double)); |
||||
extern double trunc _PARAMS((double)); |
||||
extern double remquo _PARAMS((double, double, int *)); |
||||
extern double copysign _PARAMS((double, double)); |
||||
extern double fdim _PARAMS((double, double)); |
||||
extern double fmax _PARAMS((double, double)); |
||||
extern double fmin _PARAMS((double, double)); |
||||
extern double fma _PARAMS((double, double, double)); |
||||
|
||||
#ifndef __math_68881 |
||||
extern double log1p _PARAMS((double)); |
||||
extern double expm1 _PARAMS((double)); |
||||
#endif /* ! defined (__math_68881) */ |
||||
|
||||
#ifndef _REENT_ONLY |
||||
extern double acosh _PARAMS((double)); |
||||
extern double atanh _PARAMS((double)); |
||||
extern double remainder _PARAMS((double, double)); |
||||
extern double gamma _PARAMS((double)); |
||||
extern double lgamma _PARAMS((double)); |
||||
extern double erf _PARAMS((double)); |
||||
extern double erfc _PARAMS((double)); |
||||
#define log2(x) (log (x) / _M_LOG2_E) |
||||
|
||||
#ifndef __math_68881 |
||||
extern double hypot _PARAMS((double, double)); |
||||
#endif |
||||
|
||||
#endif /* ! defined (_REENT_ONLY) */ |
||||
|
||||
/* Single precision versions of ANSI functions. */ |
||||
|
||||
extern float atanf _PARAMS((float)); |
||||
extern float cosf _PARAMS((float)); |
||||
extern float sinf _PARAMS((float)); |
||||
extern float tanf _PARAMS((float)); |
||||
extern float tanhf _PARAMS((float)); |
||||
extern float frexpf _PARAMS((float, int *)); |
||||
extern float modff _PARAMS((float, float *)); |
||||
extern float ceilf _PARAMS((float)); |
||||
extern float fabsf _PARAMS((float)); |
||||
extern float floorf _PARAMS((float)); |
||||
|
||||
#ifndef _REENT_ONLY |
||||
extern float acosf _PARAMS((float)); |
||||
extern float asinf _PARAMS((float)); |
||||
extern float atan2f _PARAMS((float, float)); |
||||
extern float coshf _PARAMS((float)); |
||||
extern float sinhf _PARAMS((float)); |
||||
extern float expf _PARAMS((float)); |
||||
extern float ldexpf _PARAMS((float, int)); |
||||
extern float logf _PARAMS((float)); |
||||
extern float log10f _PARAMS((float)); |
||||
extern float powf _PARAMS((float, float)); |
||||
extern float sqrtf _PARAMS((float)); |
||||
extern float fmodf _PARAMS((float, float)); |
||||
#endif /* ! defined (_REENT_ONLY) */ |
||||
|
||||
/* Other single precision functions. */ |
||||
|
||||
extern float exp2f _PARAMS((float)); |
||||
extern float scalblnf _PARAMS((float, long int)); |
||||
extern float tgammaf _PARAMS((float)); |
||||
extern float nearbyintf _PARAMS((float)); |
||||
extern long int lrintf _PARAMS((float)); |
||||
extern _LONG_LONG_TYPE llrintf _PARAMS((float)); |
||||
extern float roundf _PARAMS((float)); |
||||
extern long int lroundf _PARAMS((float)); |
||||
extern float truncf _PARAMS((float)); |
||||
extern float remquof _PARAMS((float, float, int *)); |
||||
extern float copysignf _PARAMS((float, float)); |
||||
extern float fdimf _PARAMS((float, float)); |
||||
extern float fmaxf _PARAMS((float, float)); |
||||
extern float fminf _PARAMS((float, float)); |
||||
extern float fmaf _PARAMS((float, float, float)); |
||||
|
||||
extern float infinityf _PARAMS((void)); |
||||
extern float nanf _PARAMS((const char *)); |
||||
extern int isnanf _PARAMS((float)); |
||||
extern int isinff _PARAMS((float)); |
||||
extern int finitef _PARAMS((float)); |
||||
extern float copysignf _PARAMS((float, float)); |
||||
extern int ilogbf _PARAMS((float)); |
||||
|
||||
extern float asinhf _PARAMS((float)); |
||||
extern float cbrtf _PARAMS((float)); |
||||
extern float nextafterf _PARAMS((float, float)); |
||||
extern float rintf _PARAMS((float)); |
||||
extern float scalbnf _PARAMS((float, int)); |
||||
extern float log1pf _PARAMS((float)); |
||||
extern float expm1f _PARAMS((float)); |
||||
|
||||
#ifndef _REENT_ONLY |
||||
extern float acoshf _PARAMS((float)); |
||||
extern float atanhf _PARAMS((float)); |
||||
extern float remainderf _PARAMS((float, float)); |
||||
extern float gammaf _PARAMS((float)); |
||||
extern float lgammaf _PARAMS((float)); |
||||
extern float erff _PARAMS((float)); |
||||
extern float erfcf _PARAMS((float)); |
||||
#define log2f(x) (logf (x) / (float) _M_LOG2_E) |
||||
extern float hypotf _PARAMS((float, float)); |
||||
#endif /* ! defined (_REENT_ONLY) */ |
||||
|
||||
/* Other long double precision functions. */ |
||||
extern _LONG_DOUBLE rintl _PARAMS((_LONG_DOUBLE)); |
||||
extern long int lrintl _PARAMS((_LONG_DOUBLE)); |
||||
extern _LONG_LONG_TYPE llrintl _PARAMS((_LONG_DOUBLE)); |
||||
|
||||
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L */ |
||||
|
||||
#if !defined (__STRICT_ANSI__) || defined(__cplusplus) |
||||
|
||||
extern double cabs(); |
||||
extern double drem _PARAMS((double, double)); |
||||
extern void sincos _PARAMS((double, double *, double *)); |
||||
extern double gamma_r _PARAMS((double, int *)); |
||||
extern double lgamma_r _PARAMS((double, int *)); |
||||
|
||||
extern double y0 _PARAMS((double)); |
||||
extern double y1 _PARAMS((double)); |
||||
extern double yn _PARAMS((int, double)); |
||||
extern double j0 _PARAMS((double)); |
||||
extern double j1 _PARAMS((double)); |
||||
extern double jn _PARAMS((int, double)); |
||||
|
||||
extern float cabsf(); |
||||
extern float dremf _PARAMS((float, float)); |
||||
extern void sincosf _PARAMS((float, float *, float *)); |
||||
extern float gammaf_r _PARAMS((float, int *)); |
||||
extern float lgammaf_r _PARAMS((float, int *)); |
||||
|
||||
extern float y0f _PARAMS((float)); |
||||
extern float y1f _PARAMS((float)); |
||||
extern float ynf _PARAMS((int, float)); |
||||
extern float j0f _PARAMS((float)); |
||||
extern float j1f _PARAMS((float)); |
||||
extern float jnf _PARAMS((int, float)); |
||||
|
||||
/* GNU extensions */ |
||||
# ifndef exp10 |
||||
extern double exp10 _PARAMS((double)); |
||||
# endif |
||||
# ifndef pow10 |
||||
extern double pow10 _PARAMS((double)); |
||||
# endif |
||||
# ifndef exp10f |
||||
extern float exp10f _PARAMS((float)); |
||||
# endif |
||||
# ifndef pow10f |
||||
extern float pow10f _PARAMS((float)); |
||||
# endif |
||||
|
||||
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) */ |
||||
|
||||
#ifndef __STRICT_ANSI__ |
||||
|
||||
/* The gamma functions use a global variable, signgam. */ |
||||
#ifndef _REENT_ONLY |
||||
#define signgam (*__signgam()) |
||||
extern int *__signgam _PARAMS((void)); |
||||
#endif /* ! defined (_REENT_ONLY) */ |
||||
|
||||
#define __signgam_r(ptr) _REENT_SIGNGAM(ptr) |
||||
|
||||
/* The exception structure passed to the matherr routine. */ |
||||
/* We have a problem when using C++ since `exception' is a reserved
|
||||
name in C++. */ |
||||
#ifdef __cplusplus |
||||
struct __exception |
||||
#else |
||||
struct exception |
||||
#endif |
||||
{ |
||||
int type; |
||||
char *name; |
||||
double arg1; |
||||
double arg2; |
||||
double retval; |
||||
int err; |
||||
}; |
||||
|
||||
#ifdef __cplusplus |
||||
extern int matherr _PARAMS((struct __exception *e)); |
||||
#else |
||||
extern int matherr _PARAMS((struct exception *e)); |
||||
#endif |
||||
|
||||
/* Values for the type field of struct exception. */ |
||||
|
||||
#define DOMAIN 1 |
||||
#define SING 2 |
||||
#define OVERFLOW 3 |
||||
#define UNDERFLOW 4 |
||||
#define TLOSS 5 |
||||
#define PLOSS 6 |
||||
|
||||
/* Useful constants. */ |
||||
|
||||
#define MAXFLOAT 3.40282347e+38F |
||||
|
||||
#define M_E 2.7182818284590452354 |
||||
#define M_LOG2E 1.4426950408889634074 |
||||
#define M_LOG10E 0.43429448190325182765 |
||||
#define M_LN2 0.69314718055994530942 |
||||
#define M_LN10 2.30258509299404568402 |
||||
#define M_PI 3.14159265358979323846 |
||||
#define M_TWOPI (M_PI * 2.0) |
||||
#define M_PI_2 1.57079632679489661923 |
||||
#define M_PI_4 0.78539816339744830962 |
||||
#define M_3PI_4 2.3561944901923448370E0 |
||||
#define M_SQRTPI 1.77245385090551602792981 |
||||
#define M_1_PI 0.31830988618379067154 |
||||
#define M_2_PI 0.63661977236758134308 |
||||
#define M_2_SQRTPI 1.12837916709551257390 |
||||
#define M_SQRT2 1.41421356237309504880 |
||||
#define M_SQRT1_2 0.70710678118654752440 |
||||
#define M_LN2LO 1.9082149292705877000E-10 |
||||
#define M_LN2HI 6.9314718036912381649E-1 |
||||
#define M_SQRT3 1.73205080756887719000 |
||||
#define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */ |
||||
#define M_LOG2_E _M_LOG2_E |
||||
#define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */ |
||||
|
||||
/* Global control over fdlibm error handling. */ |
||||
|
||||
enum __fdlibm_version |
||||
{ |
||||
__fdlibm_ieee = -1, |
||||
__fdlibm_svid, |
||||
__fdlibm_xopen, |
||||
__fdlibm_posix |
||||
}; |
||||
|
||||
#define _LIB_VERSION_TYPE enum __fdlibm_version |
||||
#define _LIB_VERSION __fdlib_version |
||||
|
||||
extern __IMPORT _LIB_VERSION_TYPE _LIB_VERSION; |
||||
|
||||
#define _IEEE_ __fdlibm_ieee |
||||
#define _SVID_ __fdlibm_svid |
||||
#define _XOPEN_ __fdlibm_xopen |
||||
#define _POSIX_ __fdlibm_posix |
||||
|
||||
#endif /* ! defined (__STRICT_ANSI__) */ |
||||
|
||||
_END_STD_C |
||||
|
||||
#ifdef __FAST_MATH__ |
||||
#include <machine/fastmath.h> |
||||
#endif |
||||
|
||||
#endif /* _MATH_H_ */ |
@ -0,0 +1,162 @@ |
||||
/* newlib.h. Generated by configure. */ |
||||
/* newlib.hin. Generated from configure.in by autoheader. */ |
||||
#ifndef __NEWLIB_H__ |
||||
|
||||
#define __NEWLIB_H__ 1 |
||||
|
||||
/* EL/IX level */ |
||||
/* #undef _ELIX_LEVEL */ |
||||
|
||||
/* Newlib version */ |
||||
#define _NEWLIB_VERSION "1.17.0" |
||||
|
||||
/* C99 formats support (such as %a, %zu, ...) in IO functions like
|
||||
* printf/scanf enabled */ |
||||
/* #undef _WANT_IO_C99_FORMATS */ |
||||
|
||||
/* long long type support in IO functions like printf/scanf enabled */ |
||||
/* #undef _WANT_IO_LONG_LONG */ |
||||
|
||||
/* long double type support in IO functions like printf/scanf enabled */ |
||||
/* #undef _WANT_IO_LONG_DOUBLE */ |
||||
|
||||
/* Positional argument support in printf functions enabled. */ |
||||
/* #undef _WANT_IO_POS_ARGS */ |
||||
|
||||
/* Optional reentrant struct support. Used mostly on platforms with
|
||||
very restricted storage. */ |
||||
/* #undef _WANT_REENT_SMALL */ |
||||
|
||||
/* Multibyte supported */ |
||||
/* #undef _MB_CAPABLE */ |
||||
|
||||
/* MB_LEN_MAX */ |
||||
#define _MB_LEN_MAX 1 |
||||
|
||||
/* ICONV enabled */ |
||||
/* #undef _ICONV_ENABLED */ |
||||
|
||||
/* Enable ICONV external CCS files loading capabilities */ |
||||
/* #undef _ICONV_ENABLE_EXTERNAL_CCS */ |
||||
|
||||
/* Define if the linker supports .preinit_array/.init_array/.fini_array
|
||||
* sections. */ |
||||
#define HAVE_INITFINI_ARRAY 1 |
||||
|
||||
/* True if atexit() may dynamically allocate space for cleanup
|
||||
functions. */ |
||||
#define _ATEXIT_DYNAMIC_ALLOC 1 |
||||
|
||||
/* Define if the compiler supports aliasing an array to an address. */ |
||||
/* #undef _HAVE_ARRAY_ALIASING */ |
||||
|
||||
/*
|
||||
* Iconv encodings enabled ("to" direction) |
||||
*/ |
||||
/* #undef _ICONV_TO_ENCODING_BIG5 */ |
||||
/* #undef _ICONV_TO_ENCODING_CP775 */ |
||||
/* #undef _ICONV_TO_ENCODING_CP850 */ |
||||
/* #undef _ICONV_TO_ENCODING_CP852 */ |
||||
/* #undef _ICONV_TO_ENCODING_CP855 */ |
||||
/* #undef _ICONV_TO_ENCODING_CP866 */ |
||||
/* #undef _ICONV_TO_ENCODING_EUC_JP */ |
||||
/* #undef _ICONV_TO_ENCODING_EUC_TW */ |
||||
/* #undef _ICONV_TO_ENCODING_EUC_KR */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_1 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_10 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_11 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_13 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_14 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_15 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_2 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_3 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_4 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_5 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_6 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_7 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_8 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_9 */ |
||||
/* #undef _ICONV_TO_ENCODING_ISO_IR_111 */ |
||||
/* #undef _ICONV_TO_ENCODING_KOI8_R */ |
||||
/* #undef _ICONV_TO_ENCODING_KOI8_RU */ |
||||
/* #undef _ICONV_TO_ENCODING_KOI8_U */ |
||||
/* #undef _ICONV_TO_ENCODING_KOI8_UNI */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_2 */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_2_INTERNAL */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_2BE */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_2LE */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_4 */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_4_INTERNAL */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_4BE */ |
||||
/* #undef _ICONV_TO_ENCODING_UCS_4LE */ |
||||
/* #undef _ICONV_TO_ENCODING_US_ASCII */ |
||||
/* #undef _ICONV_TO_ENCODING_UTF_16 */ |
||||
/* #undef _ICONV_TO_ENCODING_UTF_16BE */ |
||||
/* #undef _ICONV_TO_ENCODING_UTF_16LE */ |
||||
/* #undef _ICONV_TO_ENCODING_UTF_8 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1250 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1251 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1252 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1253 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1254 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1255 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1256 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1257 */ |
||||
/* #undef _ICONV_TO_ENCODING_WIN_1258 */ |
||||
|
||||
/*
|
||||
* Iconv encodings enabled ("from" direction) |
||||
*/ |
||||
/* #undef _ICONV_FROM_ENCODING_BIG5 */ |
||||
/* #undef _ICONV_FROM_ENCODING_CP775 */ |
||||
/* #undef _ICONV_FROM_ENCODING_CP850 */ |
||||
/* #undef _ICONV_FROM_ENCODING_CP852 */ |
||||
/* #undef _ICONV_FROM_ENCODING_CP855 */ |
||||
/* #undef _ICONV_FROM_ENCODING_CP866 */ |
||||
/* #undef _ICONV_FROM_ENCODING_EUC_JP */ |
||||
/* #undef _ICONV_FROM_ENCODING_EUC_TW */ |
||||
/* #undef _ICONV_FROM_ENCODING_EUC_KR */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_1 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_10 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_11 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_13 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_14 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_15 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_2 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_3 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_4 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_5 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_6 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_7 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_8 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_9 */ |
||||
/* #undef _ICONV_FROM_ENCODING_ISO_IR_111 */ |
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_R */ |
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_RU */ |
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_U */ |
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_UNI */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2 */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2_INTERNAL */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2BE */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2LE */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4 */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4_INTERNAL */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4BE */ |
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4LE */ |
||||
/* #undef _ICONV_FROM_ENCODING_US_ASCII */ |
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16 */ |
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16BE */ |
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16LE */ |
||||
/* #undef _ICONV_FROM_ENCODING_UTF_8 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1250 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1251 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1252 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1253 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1254 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1255 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1256 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1257 */ |
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1258 */ |
||||
|
||||
#endif /* !__NEWLIB_H__ */ |
||||
|
@ -0,0 +1,87 @@ |
||||
/* ANSI C namespace clean utility typedefs */ |
||||
|
||||
/* This file defines various typedefs needed by the system calls that support
|
||||
the C library. Basically, they're just the POSIX versions with an '_' |
||||
prepended. This file lives in the `sys' directory so targets can provide |
||||
their own if desired (or they can put target dependant conditionals here). |
||||
*/ |
||||
|
||||
#ifndef _SYS__TYPES_H |
||||
#define _SYS__TYPES_H |
||||
|
||||
#include <machine/_types.h> |
||||
#include <sys/lock.h> |
||||
|
||||
#ifndef __off_t_defined |
||||
typedef long _off_t; |
||||
#endif |
||||
|
||||
#if defined(__rtems__) |
||||
/* device numbers are 32-bit major and and 32-bit minor */ |
||||
typedef unsigned long long __dev_t; |
||||
#else |
||||
#ifndef __dev_t_defined |
||||
typedef short __dev_t; |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef __uid_t_defined |
||||
typedef unsigned short __uid_t; |
||||
#endif |
||||
#ifndef __gid_t_defined |
||||
typedef unsigned short __gid_t; |
||||
#endif |
||||
|
||||
#ifndef __off64_t_defined |
||||
__extension__ typedef long long _off64_t; |
||||
#endif |
||||
|
||||
/*
|
||||
* We need fpos_t for the following, but it doesn't have a leading "_", |
||||
* so we use _fpos_t instead. |
||||
*/ |
||||
#ifndef __fpos_t_defined |
||||
typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */ |
||||
/* (and must be `long' for now) */ |
||||
#endif |
||||
|
||||
#ifdef __LARGE64_FILES |
||||
#ifndef __fpos64_t_defined |
||||
typedef _off64_t _fpos64_t; |
||||
#endif |
||||
#endif |
||||
|
||||
#ifndef __ssize_t_defined |
||||
#if defined(__INT_MAX__) && __INT_MAX__ == 2147483647 |
||||
typedef int _ssize_t; |
||||
#else |
||||
typedef long _ssize_t; |
||||
#endif |
||||
#endif |
||||
|
||||
#define __need_wint_t |
||||
#include <stddef.h> |
||||
|
||||
#ifndef __mbstate_t_defined |
||||
/* Conversion state information. */ |
||||
typedef struct |
||||
{ |
||||
int __count; |
||||
union |
||||
{ |
||||
wint_t __wch; |
||||
unsigned char __wchb[4]; |
||||
} __value; /* Value so far. */ |
||||
} _mbstate_t; |
||||
#endif |
||||
|
||||
#ifndef __flock_t_defined |
||||
typedef _LOCK_RECURSIVE_T _flock_t; |
||||
#endif |
||||
|
||||
#ifndef __iconv_t_defined |
||||
/* Iconv descriptor type */ |
||||
typedef void *_iconv_t; |
||||
#endif |
||||
|
||||
#endif /* _SYS__TYPES_H */ |
@ -0,0 +1,213 @@ |
||||
#ifndef __SYS_CONFIG_H__ |
||||
#define __SYS_CONFIG_H__ |
||||
|
||||
#include <machine/ieeefp.h> /* floating point macros */ |
||||
|
||||
/* 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 |
||||
|
||||
#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 |
||||
|
||||
#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 _HAVE_SYSTYPES |
||||
#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 |
||||
|
||||
#ifdef __v850 |
||||
#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 |
||||
|
||||
#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 |
||||
#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 __thumb2__ |
||||
/* Thumb-2 based ARMv7M devices are really small. */ |
||||
#define _REENT_SMALL |
||||
#endif |
||||
|
||||
#ifdef __SPU__ |
||||
#define MALLOC_ALIGNMENT 16 |
||||
#define __CUSTOM_FILE_IO__ |
||||
#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 |
||||