Add patch from Joel Sherrill for i386 and x86_64 fenv support
This commit is contained in:
parent
c561a625af
commit
cfc4955234
@ -341,6 +341,7 @@ case "${host_cpu}" in
|
|||||||
;;
|
;;
|
||||||
x86_64)
|
x86_64)
|
||||||
machine_dir=x86_64
|
machine_dir=x86_64
|
||||||
|
libm_machine_dir=x86_64
|
||||||
;;
|
;;
|
||||||
xc16x*)
|
xc16x*)
|
||||||
machine_dir=xc16x
|
machine_dir=xc16x
|
||||||
|
1
newlib/libc/machine/i386/sys/fenv.h
Symbolic link
1
newlib/libc/machine/i386/sys/fenv.h
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../x86_64/sys/fenv.h
|
170
newlib/libc/machine/x86_64/sys/fenv.h
Normal file
170
newlib/libc/machine/x86_64/sys/fenv.h
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010-2019 Red Hat, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SYS_FENV_H
|
||||||
|
#define _SYS_FENV_H 1
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Primary sources:
|
||||||
|
|
||||||
|
The Open Group Base Specifications Issue 6:
|
||||||
|
http://www.opengroup.org/onlinepubs/000095399/basedefs/fenv.h.html
|
||||||
|
|
||||||
|
C99 Language spec (draft n1256):
|
||||||
|
<url unknown>
|
||||||
|
|
||||||
|
Intel(R) 64 and IA-32 Architectures Software Developer's Manuals:
|
||||||
|
http://www.intel.com/products/processor/manuals/
|
||||||
|
|
||||||
|
GNU C library manual pages:
|
||||||
|
http://www.gnu.org/software/libc/manual/html_node/Control-Functions.html
|
||||||
|
http://www.gnu.org/software/libc/manual/html_node/Rounding.html
|
||||||
|
http://www.gnu.org/software/libc/manual/html_node/FP-Exceptions.html
|
||||||
|
http://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.html
|
||||||
|
|
||||||
|
Linux online man page(s):
|
||||||
|
http://linux.die.net/man/3/fegetexcept
|
||||||
|
|
||||||
|
The documentation quotes these sources for reference. All definitions and
|
||||||
|
code have been developed solely based on the information from these specs.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Represents the entire floating-point environment. The floating-point
|
||||||
|
environment refers collectively to any floating-point status flags and
|
||||||
|
control modes supported by the implementation.
|
||||||
|
In this implementation, the struct contains the state information from
|
||||||
|
the fstenv/fnstenv instructions and a copy of the SSE MXCSR, since GCC
|
||||||
|
uses SSE for a lot of floating-point operations. (Cygwin assumes i686
|
||||||
|
or above these days, as does the compiler.) */
|
||||||
|
|
||||||
|
typedef struct _fenv_t
|
||||||
|
{
|
||||||
|
struct _fpu_env_info {
|
||||||
|
unsigned int _fpu_cw; /* low 16 bits only. */
|
||||||
|
unsigned int _fpu_sw; /* low 16 bits only. */
|
||||||
|
unsigned int _fpu_tagw; /* low 16 bits only. */
|
||||||
|
unsigned int _fpu_ipoff;
|
||||||
|
unsigned int _fpu_ipsel;
|
||||||
|
unsigned int _fpu_opoff;
|
||||||
|
unsigned int _fpu_opsel; /* low 16 bits only. */
|
||||||
|
} _fpu;
|
||||||
|
unsigned int _sse_mxcsr;
|
||||||
|
} fenv_t;
|
||||||
|
|
||||||
|
/* Represents the floating-point status flags collectively, including
|
||||||
|
any status the implementation associates with the flags. A floating-point
|
||||||
|
status flag is a system variable whose value is set (but never cleared)
|
||||||
|
when a floating-point exception is raised, which occurs as a side effect
|
||||||
|
of exceptional floating-point arithmetic to provide auxiliary information.
|
||||||
|
A floating-point control mode is a system variable whose value may be
|
||||||
|
set by the user to affect the subsequent behavior of floating-point
|
||||||
|
arithmetic. */
|
||||||
|
|
||||||
|
typedef __uint32_t fexcept_t;
|
||||||
|
|
||||||
|
/* The <fenv.h> header shall define the following constants if and only
|
||||||
|
if the implementation supports the floating-point exception by means
|
||||||
|
of the floating-point functions feclearexcept(), fegetexceptflag(),
|
||||||
|
feraiseexcept(), fesetexceptflag(), and fetestexcept(). Each expands to
|
||||||
|
an integer constant expression with values such that bitwise-inclusive
|
||||||
|
ORs of all combinations of the constants result in distinct values. */
|
||||||
|
|
||||||
|
#define FE_DIVBYZERO (1 << 2)
|
||||||
|
#define FE_INEXACT (1 << 5)
|
||||||
|
#define FE_INVALID (1 << 0)
|
||||||
|
#define FE_OVERFLOW (1 << 3)
|
||||||
|
#define FE_UNDERFLOW (1 << 4)
|
||||||
|
|
||||||
|
/* The <fenv.h> header shall define the following constant, which is
|
||||||
|
simply the bitwise-inclusive OR of all floating-point exception
|
||||||
|
constants defined above: */
|
||||||
|
|
||||||
|
/* in agreement w/ Linux the subnormal exception will always be masked */
|
||||||
|
#define FE_ALL_EXCEPT \
|
||||||
|
(FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_INVALID)
|
||||||
|
|
||||||
|
/* The <fenv.h> header shall define the following constants if and only
|
||||||
|
if the implementation supports getting and setting the represented
|
||||||
|
rounding direction by means of the fegetround() and fesetround()
|
||||||
|
functions. Each expands to an integer constant expression whose values
|
||||||
|
are distinct non-negative vales. */
|
||||||
|
|
||||||
|
#define FE_DOWNWARD (1)
|
||||||
|
#define FE_TONEAREST (0)
|
||||||
|
#define FE_TOWARDZERO (3)
|
||||||
|
#define FE_UPWARD (2)
|
||||||
|
|
||||||
|
/* Only Solaris and QNX implement fegetprec/fesetprec. As Solaris, use the
|
||||||
|
values defined by http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm
|
||||||
|
QNX defines different values. */
|
||||||
|
#if __MISC_VISIBLE
|
||||||
|
#define FE_FLTPREC (0)
|
||||||
|
#define FE_DBLPREC (2)
|
||||||
|
#define FE_LDBLPREC (3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The <fenv.h> header shall define the following constant, which
|
||||||
|
represents the default floating-point environment (that is, the one
|
||||||
|
installed at program startup) and has type pointer to const-qualified
|
||||||
|
fenv_t. It can be used as an argument to the functions within the
|
||||||
|
<fenv.h> header that manage the floating-point environment. */
|
||||||
|
|
||||||
|
extern const fenv_t *_fe_dfl_env;
|
||||||
|
#define FE_DFL_ENV (_fe_dfl_env)
|
||||||
|
|
||||||
|
/* Additional implementation-defined environments, with macro
|
||||||
|
definitions beginning with FE_ and an uppercase letter,and having
|
||||||
|
type "pointer to const-qualified fenv_t",may also be specified by
|
||||||
|
the implementation. */
|
||||||
|
|
||||||
|
#if __GNU_VISIBLE
|
||||||
|
/* If possible, the GNU C Library defines a macro FE_NOMASK_ENV which
|
||||||
|
represents an environment where every exception raised causes a trap
|
||||||
|
to occur. You can test for this macro using #ifdef. It is only defined
|
||||||
|
if _GNU_SOURCE is defined. */
|
||||||
|
extern const fenv_t *_fe_nomask_env;
|
||||||
|
#define FE_NOMASK_ENV (_fe_nomask_env)
|
||||||
|
#endif /* __GNU_VISIBLE */
|
||||||
|
|
||||||
|
#ifdef __INSIDE_CYGWIN__
|
||||||
|
/* This is Cygwin-custom, not from the standard, for use in the Cygwin CRT. */
|
||||||
|
extern void _feinitialise ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _FENV_H */
|
23
newlib/libm/fenv/fenv_stub.c
Normal file
23
newlib/libm/fenv/fenv_stub.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*
|
||||||
|
* (c) Copyright 2019 Joel Sherrill <joel@rtems.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is intentionally empty.
|
||||||
|
*
|
||||||
|
* Newlib's build infrastructure needs a machine specific fiel to override
|
||||||
|
* the generic implementation in the library. When a target
|
||||||
|
* implementation of the fenv.h methods puts all methods in a single file
|
||||||
|
* (e.g. fenv.c) or some as inline methods in its <sys/fenv.h>, it will need
|
||||||
|
* to override the default implementation found in a file in this directory.
|
||||||
|
*
|
||||||
|
* For each file that the target's machine directory needs to override,
|
||||||
|
* this file should be symbolically linked to that specific file name
|
||||||
|
* in the target directory. For example, the target may use fe_dfl_env.c
|
||||||
|
* from the default implementation but need to override all others.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* deliberately empty */
|
||||||
|
|
9
newlib/libm/machine/configure
vendored
9
newlib/libm/machine/configure
vendored
@ -791,7 +791,8 @@ arm
|
|||||||
i386
|
i386
|
||||||
nds32
|
nds32
|
||||||
spu
|
spu
|
||||||
riscv'
|
riscv
|
||||||
|
x86_64'
|
||||||
|
|
||||||
# Initialize some variables set by options.
|
# Initialize some variables set by options.
|
||||||
ac_init_help=
|
ac_init_help=
|
||||||
@ -11453,7 +11454,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11456 "configure"
|
#line 11457 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@ -11559,7 +11560,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11562 "configure"
|
#line 11563 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@ -11815,6 +11816,8 @@ subdirs="$subdirs aarch64"
|
|||||||
spu) subdirs="$subdirs spu"
|
spu) subdirs="$subdirs spu"
|
||||||
;;
|
;;
|
||||||
riscv) subdirs="$subdirs riscv"
|
riscv) subdirs="$subdirs riscv"
|
||||||
|
;;
|
||||||
|
x86_64) subdirs="$subdirs x86_64"
|
||||||
;;
|
;;
|
||||||
esac;
|
esac;
|
||||||
if test "${use_libtool}" = "yes"; then
|
if test "${use_libtool}" = "yes"; then
|
||||||
|
@ -31,6 +31,7 @@ if test -n "${libm_machine_dir}"; then
|
|||||||
nds32) AC_CONFIG_SUBDIRS(nds32) ;;
|
nds32) AC_CONFIG_SUBDIRS(nds32) ;;
|
||||||
spu) AC_CONFIG_SUBDIRS(spu) ;;
|
spu) AC_CONFIG_SUBDIRS(spu) ;;
|
||||||
riscv) AC_CONFIG_SUBDIRS(riscv) ;;
|
riscv) AC_CONFIG_SUBDIRS(riscv) ;;
|
||||||
|
x86_64) AC_CONFIG_SUBDIRS(x86_64) ;;
|
||||||
esac;
|
esac;
|
||||||
if test "${use_libtool}" = "yes"; then
|
if test "${use_libtool}" = "yes"; then
|
||||||
machlib=${libm_machine_dir}/lib${libm_machine_dir}.${aext}
|
machlib=${libm_machine_dir}/lib${libm_machine_dir}.${aext}
|
||||||
|
@ -12,8 +12,10 @@ LIB_SOURCES = \
|
|||||||
f_log.S f_logf.S f_log10.S f_log10f.S \
|
f_log.S f_logf.S f_log10.S f_log10f.S \
|
||||||
f_ldexp.S f_ldexpf.S f_lrint.c f_lrintf.c f_lrintl.c \
|
f_ldexp.S f_ldexpf.S f_lrint.c f_lrintf.c f_lrintl.c \
|
||||||
f_pow.c f_powf.c f_rint.c f_rintf.c f_rintl.c \
|
f_pow.c f_powf.c f_rint.c f_rintf.c f_rintl.c \
|
||||||
f_tan.S f_tanf.S f_math.h \
|
f_tan.S f_tanf.S f_math.h i386mach.h \
|
||||||
i386mach.h
|
fenv.c feclearexcept.c fegetenv.c fegetexceptflag.c \
|
||||||
|
fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \
|
||||||
|
fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c
|
||||||
|
|
||||||
libi386_la_LDFLAGS = -Xcompiler -nostdlib
|
libi386_la_LDFLAGS = -Xcompiler -nostdlib
|
||||||
|
|
||||||
|
@ -87,7 +87,13 @@ am__objects_1 = lib_a-f_atan2.$(OBJEXT) lib_a-f_atan2f.$(OBJEXT) \
|
|||||||
lib_a-f_pow.$(OBJEXT) lib_a-f_powf.$(OBJEXT) \
|
lib_a-f_pow.$(OBJEXT) lib_a-f_powf.$(OBJEXT) \
|
||||||
lib_a-f_rint.$(OBJEXT) lib_a-f_rintf.$(OBJEXT) \
|
lib_a-f_rint.$(OBJEXT) lib_a-f_rintf.$(OBJEXT) \
|
||||||
lib_a-f_rintl.$(OBJEXT) lib_a-f_tan.$(OBJEXT) \
|
lib_a-f_rintl.$(OBJEXT) lib_a-f_tan.$(OBJEXT) \
|
||||||
lib_a-f_tanf.$(OBJEXT)
|
lib_a-f_tanf.$(OBJEXT) lib_a-fenv.$(OBJEXT) \
|
||||||
|
lib_a-feclearexcept.$(OBJEXT) lib_a-fegetenv.$(OBJEXT) \
|
||||||
|
lib_a-fegetexceptflag.$(OBJEXT) lib_a-fegetround.$(OBJEXT) \
|
||||||
|
lib_a-feholdexcept.$(OBJEXT) lib_a-feraiseexcept.$(OBJEXT) \
|
||||||
|
lib_a-fesetenv.$(OBJEXT) lib_a-fesetexceptflag.$(OBJEXT) \
|
||||||
|
lib_a-fesetround.$(OBJEXT) lib_a-fetestexcept.$(OBJEXT) \
|
||||||
|
lib_a-feupdateenv.$(OBJEXT)
|
||||||
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1)
|
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1)
|
||||||
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
|
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
|
||||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
@ -96,7 +102,11 @@ am__objects_2 = f_atan2.lo f_atan2f.lo f_exp.lo f_expf.lo f_frexp.lo \
|
|||||||
f_frexpf.lo f_llrint.lo f_llrintf.lo f_llrintl.lo f_log.lo \
|
f_frexpf.lo f_llrint.lo f_llrintf.lo f_llrintl.lo f_log.lo \
|
||||||
f_logf.lo f_log10.lo f_log10f.lo f_ldexp.lo f_ldexpf.lo \
|
f_logf.lo f_log10.lo f_log10f.lo f_ldexp.lo f_ldexpf.lo \
|
||||||
f_lrint.lo f_lrintf.lo f_lrintl.lo f_pow.lo f_powf.lo \
|
f_lrint.lo f_lrintf.lo f_lrintl.lo f_pow.lo f_powf.lo \
|
||||||
f_rint.lo f_rintf.lo f_rintl.lo f_tan.lo f_tanf.lo
|
f_rint.lo f_rintf.lo f_rintl.lo f_tan.lo f_tanf.lo fenv.lo \
|
||||||
|
feclearexcept.lo fegetenv.lo fegetexceptflag.lo fegetround.lo \
|
||||||
|
feholdexcept.lo feraiseexcept.lo fesetenv.lo \
|
||||||
|
fesetexceptflag.lo fesetround.lo fetestexcept.lo \
|
||||||
|
feupdateenv.lo
|
||||||
@USE_LIBTOOL_TRUE@am_libi386_la_OBJECTS = $(am__objects_2)
|
@USE_LIBTOOL_TRUE@am_libi386_la_OBJECTS = $(am__objects_2)
|
||||||
libi386_la_OBJECTS = $(am_libi386_la_OBJECTS)
|
libi386_la_OBJECTS = $(am_libi386_la_OBJECTS)
|
||||||
libi386_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
libi386_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
@ -263,8 +273,10 @@ LIB_SOURCES = \
|
|||||||
f_log.S f_logf.S f_log10.S f_log10f.S \
|
f_log.S f_logf.S f_log10.S f_log10f.S \
|
||||||
f_ldexp.S f_ldexpf.S f_lrint.c f_lrintf.c f_lrintl.c \
|
f_ldexp.S f_ldexpf.S f_lrint.c f_lrintf.c f_lrintl.c \
|
||||||
f_pow.c f_powf.c f_rint.c f_rintf.c f_rintl.c \
|
f_pow.c f_powf.c f_rint.c f_rintf.c f_rintl.c \
|
||||||
f_tan.S f_tanf.S f_math.h \
|
f_tan.S f_tanf.S f_math.h i386mach.h \
|
||||||
i386mach.h
|
fenv.c feclearexcept.c fegetenv.c fegetexceptflag.c \
|
||||||
|
fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \
|
||||||
|
fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c
|
||||||
|
|
||||||
libi386_la_LDFLAGS = -Xcompiler -nostdlib
|
libi386_la_LDFLAGS = -Xcompiler -nostdlib
|
||||||
@USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = libi386.la
|
@USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = libi386.la
|
||||||
@ -519,6 +531,78 @@ lib_a-f_rintl.o: f_rintl.c
|
|||||||
lib_a-f_rintl.obj: f_rintl.c
|
lib_a-f_rintl.obj: f_rintl.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-f_rintl.obj `if test -f 'f_rintl.c'; then $(CYGPATH_W) 'f_rintl.c'; else $(CYGPATH_W) '$(srcdir)/f_rintl.c'; fi`
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-f_rintl.obj `if test -f 'f_rintl.c'; then $(CYGPATH_W) 'f_rintl.c'; else $(CYGPATH_W) '$(srcdir)/f_rintl.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fenv.o: fenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.o `test -f 'fenv.c' || echo '$(srcdir)/'`fenv.c
|
||||||
|
|
||||||
|
lib_a-fenv.obj: fenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.obj `if test -f 'fenv.c'; then $(CYGPATH_W) 'fenv.c'; else $(CYGPATH_W) '$(srcdir)/fenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feclearexcept.o: feclearexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.o `test -f 'feclearexcept.c' || echo '$(srcdir)/'`feclearexcept.c
|
||||||
|
|
||||||
|
lib_a-feclearexcept.obj: feclearexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.obj `if test -f 'feclearexcept.c'; then $(CYGPATH_W) 'feclearexcept.c'; else $(CYGPATH_W) '$(srcdir)/feclearexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetenv.o: fegetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.o `test -f 'fegetenv.c' || echo '$(srcdir)/'`fegetenv.c
|
||||||
|
|
||||||
|
lib_a-fegetenv.obj: fegetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.obj `if test -f 'fegetenv.c'; then $(CYGPATH_W) 'fegetenv.c'; else $(CYGPATH_W) '$(srcdir)/fegetenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetexceptflag.o: fegetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.o `test -f 'fegetexceptflag.c' || echo '$(srcdir)/'`fegetexceptflag.c
|
||||||
|
|
||||||
|
lib_a-fegetexceptflag.obj: fegetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.obj `if test -f 'fegetexceptflag.c'; then $(CYGPATH_W) 'fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fegetexceptflag.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetround.o: fegetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.o `test -f 'fegetround.c' || echo '$(srcdir)/'`fegetround.c
|
||||||
|
|
||||||
|
lib_a-fegetround.obj: fegetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.obj `if test -f 'fegetround.c'; then $(CYGPATH_W) 'fegetround.c'; else $(CYGPATH_W) '$(srcdir)/fegetround.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feholdexcept.o: feholdexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.o `test -f 'feholdexcept.c' || echo '$(srcdir)/'`feholdexcept.c
|
||||||
|
|
||||||
|
lib_a-feholdexcept.obj: feholdexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.obj `if test -f 'feholdexcept.c'; then $(CYGPATH_W) 'feholdexcept.c'; else $(CYGPATH_W) '$(srcdir)/feholdexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feraiseexcept.o: feraiseexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.o `test -f 'feraiseexcept.c' || echo '$(srcdir)/'`feraiseexcept.c
|
||||||
|
|
||||||
|
lib_a-feraiseexcept.obj: feraiseexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.obj `if test -f 'feraiseexcept.c'; then $(CYGPATH_W) 'feraiseexcept.c'; else $(CYGPATH_W) '$(srcdir)/feraiseexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetenv.o: fesetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.o `test -f 'fesetenv.c' || echo '$(srcdir)/'`fesetenv.c
|
||||||
|
|
||||||
|
lib_a-fesetenv.obj: fesetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.obj `if test -f 'fesetenv.c'; then $(CYGPATH_W) 'fesetenv.c'; else $(CYGPATH_W) '$(srcdir)/fesetenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetexceptflag.o: fesetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.o `test -f 'fesetexceptflag.c' || echo '$(srcdir)/'`fesetexceptflag.c
|
||||||
|
|
||||||
|
lib_a-fesetexceptflag.obj: fesetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.obj `if test -f 'fesetexceptflag.c'; then $(CYGPATH_W) 'fesetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fesetexceptflag.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetround.o: fesetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.o `test -f 'fesetround.c' || echo '$(srcdir)/'`fesetround.c
|
||||||
|
|
||||||
|
lib_a-fesetround.obj: fesetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.obj `if test -f 'fesetround.c'; then $(CYGPATH_W) 'fesetround.c'; else $(CYGPATH_W) '$(srcdir)/fesetround.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fetestexcept.o: fetestexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.o `test -f 'fetestexcept.c' || echo '$(srcdir)/'`fetestexcept.c
|
||||||
|
|
||||||
|
lib_a-fetestexcept.obj: fetestexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.obj `if test -f 'fetestexcept.c'; then $(CYGPATH_W) 'fetestexcept.c'; else $(CYGPATH_W) '$(srcdir)/fetestexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feupdateenv.o: feupdateenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.o `test -f 'feupdateenv.c' || echo '$(srcdir)/'`feupdateenv.c
|
||||||
|
|
||||||
|
lib_a-feupdateenv.obj: feupdateenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.obj `if test -f 'feupdateenv.c'; then $(CYGPATH_W) 'feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/feupdateenv.c'; fi`
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
|
1
newlib/libm/machine/i386/feclearexcept.c
Symbolic link
1
newlib/libm/machine/i386/feclearexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fegetenv.c
Symbolic link
1
newlib/libm/machine/i386/fegetenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fegetexceptflag.c
Symbolic link
1
newlib/libm/machine/i386/fegetexceptflag.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fegetround.c
Symbolic link
1
newlib/libm/machine/i386/fegetround.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/feholdexcept.c
Symbolic link
1
newlib/libm/machine/i386/feholdexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fenv.c
Symbolic link
1
newlib/libm/machine/i386/fenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../x86_64/fenv.c
|
1
newlib/libm/machine/i386/feraiseexcept.c
Symbolic link
1
newlib/libm/machine/i386/feraiseexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fesetenv.c
Symbolic link
1
newlib/libm/machine/i386/fesetenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fesetexceptflag.c
Symbolic link
1
newlib/libm/machine/i386/fesetexceptflag.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fesetround.c
Symbolic link
1
newlib/libm/machine/i386/fesetround.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/fetestexcept.c
Symbolic link
1
newlib/libm/machine/i386/fetestexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/i386/feupdateenv.c
Symbolic link
1
newlib/libm/machine/i386/feupdateenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
28
newlib/libm/machine/x86_64/Makefile.am
Normal file
28
newlib/libm/machine/x86_64/Makefile.am
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
## Process this file with automake to generate Makefile.in
|
||||||
|
|
||||||
|
INCLUDES = -I $(newlib_basedir)/../newlib/libm/common $(NEWLIB_CFLAGS) \
|
||||||
|
$(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||||
|
|
||||||
|
LIB_SOURCES = \
|
||||||
|
feclearexcept.c fegetenv.c fegetexceptflag.c fegetround.c \
|
||||||
|
feholdexcept.c fenv.c feraiseexcept.c fesetenv.c fesetexceptflag.c \
|
||||||
|
fesetround.c fetestexcept.c feupdateenv.c
|
||||||
|
|
||||||
|
libx86_64_la_LDFLAGS = -Xcompiler -nostdlib
|
||||||
|
|
||||||
|
if USE_LIBTOOL
|
||||||
|
noinst_LTLIBRARIES = libx86_64.la
|
||||||
|
libx86_64_la_SOURCES = $(LIB_SOURCES)
|
||||||
|
noinst_DATA = objectlist.awk.in
|
||||||
|
else
|
||||||
|
noinst_LIBRARIES = lib.a
|
||||||
|
lib_a_SOURCES = $(LIB_SOURCES)
|
||||||
|
lib_a_CFLAGS = $(AM_CFLAGS)
|
||||||
|
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
|
||||||
|
noinst_DATA =
|
||||||
|
endif # USE_LIBTOOL
|
||||||
|
|
||||||
|
include $(srcdir)/../../../Makefile.shared
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
|
||||||
|
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
633
newlib/libm/machine/x86_64/Makefile.in
Normal file
633
newlib/libm/machine/x86_64/Makefile.in
Normal file
@ -0,0 +1,633 @@
|
|||||||
|
# Makefile.in generated by automake 1.11.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
am__make_dryrun = \
|
||||||
|
{ \
|
||||||
|
am__dry=no; \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||||
|
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||||
|
*) \
|
||||||
|
for am__flg in $$MAKEFLAGS; do \
|
||||||
|
case $$am__flg in \
|
||||||
|
*=*|--*) ;; \
|
||||||
|
*n*) am__dry=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done;; \
|
||||||
|
esac; \
|
||||||
|
test $$am__dry = yes; \
|
||||||
|
}
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
DIST_COMMON = $(srcdir)/../../../Makefile.shared $(srcdir)/Makefile.in \
|
||||||
|
$(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||||
|
$(am__configure_deps) $(srcdir)/../../../../mkinstalldirs
|
||||||
|
subdir = .
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = \
|
||||||
|
$(top_srcdir)/../../../../newlib-3.1.0libtool.m4 \
|
||||||
|
$(top_srcdir)/../../../../newlib-3.1.0ltoptions.m4 \
|
||||||
|
$(top_srcdir)/../../../../newlib-3.1.0ltsugar.m4 \
|
||||||
|
$(top_srcdir)/../../../../newlib-3.1.0ltversion.m4 \
|
||||||
|
$(top_srcdir)/../../../../newlib-3.1.0lt~obsolete.m4 \
|
||||||
|
$(top_srcdir)/../../../acinclude.m4 $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
LIBRARIES = $(noinst_LIBRARIES)
|
||||||
|
ARFLAGS = cru
|
||||||
|
lib_a_AR = $(AR) $(ARFLAGS)
|
||||||
|
lib_a_LIBADD =
|
||||||
|
am__objects_1 = lib_a-feclearexcept.$(OBJEXT) lib_a-fegetenv.$(OBJEXT) \
|
||||||
|
lib_a-fegetexceptflag.$(OBJEXT) lib_a-fegetround.$(OBJEXT) \
|
||||||
|
lib_a-feholdexcept.$(OBJEXT) lib_a-fenv.$(OBJEXT) \
|
||||||
|
lib_a-feraiseexcept.$(OBJEXT) lib_a-fesetenv.$(OBJEXT) \
|
||||||
|
lib_a-fesetexceptflag.$(OBJEXT) lib_a-fesetround.$(OBJEXT) \
|
||||||
|
lib_a-fetestexcept.$(OBJEXT) lib_a-feupdateenv.$(OBJEXT)
|
||||||
|
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1)
|
||||||
|
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
|
||||||
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
libx86_64_la_LIBADD =
|
||||||
|
am__objects_2 = feclearexcept.lo fegetenv.lo fegetexceptflag.lo \
|
||||||
|
fegetround.lo feholdexcept.lo fenv.lo feraiseexcept.lo \
|
||||||
|
fesetenv.lo fesetexceptflag.lo fesetround.lo fetestexcept.lo \
|
||||||
|
feupdateenv.lo
|
||||||
|
@USE_LIBTOOL_TRUE@am_libx86_64_la_OBJECTS = $(am__objects_2)
|
||||||
|
libx86_64_la_OBJECTS = $(am_libx86_64_la_OBJECTS)
|
||||||
|
libx86_64_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(libx86_64_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
@USE_LIBTOOL_TRUE@am_libx86_64_la_rpath =
|
||||||
|
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||||
|
depcomp =
|
||||||
|
am__depfiles_maybe =
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||||
|
$(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(lib_a_SOURCES) $(libx86_64_la_SOURCES)
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
|
DATA = $(noinst_DATA)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AS = @AS@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCAS = @CCAS@
|
||||||
|
CCASFLAGS = @CCASFLAGS@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
NO_INCLUDE_LIST = @NO_INCLUDE_LIST@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
READELF = @READELF@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
aext = @aext@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
libm_machine_dir = @libm_machine_dir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
lpfx = @lpfx@
|
||||||
|
machine_dir = @machine_dir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
newlib_basedir = @newlib_basedir@
|
||||||
|
oext = @oext@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sys_dir = @sys_dir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
INCLUDES = -I $(newlib_basedir)/../newlib/libm/common $(NEWLIB_CFLAGS) \
|
||||||
|
$(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||||
|
|
||||||
|
LIB_SOURCES = \
|
||||||
|
feclearexcept.c fegetenv.c fegetexceptflag.c fegetround.c \
|
||||||
|
feholdexcept.c fenv.c feraiseexcept.c fesetenv.c fesetexceptflag.c \
|
||||||
|
fesetround.c fetestexcept.c feupdateenv.c
|
||||||
|
|
||||||
|
libx86_64_la_LDFLAGS = -Xcompiler -nostdlib
|
||||||
|
@USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = libx86_64.la
|
||||||
|
@USE_LIBTOOL_TRUE@libx86_64_la_SOURCES = $(LIB_SOURCES)
|
||||||
|
@USE_LIBTOOL_FALSE@noinst_DATA =
|
||||||
|
@USE_LIBTOOL_TRUE@noinst_DATA = objectlist.awk.in
|
||||||
|
@USE_LIBTOOL_FALSE@noinst_LIBRARIES = lib.a
|
||||||
|
@USE_LIBTOOL_FALSE@lib_a_SOURCES = $(LIB_SOURCES)
|
||||||
|
@USE_LIBTOOL_FALSE@lib_a_CFLAGS = $(AM_CFLAGS)
|
||||||
|
@USE_LIBTOOL_FALSE@lib_a_CCASFLAGS = $(AM_CCASFLAGS)
|
||||||
|
|
||||||
|
#
|
||||||
|
# documentation rules
|
||||||
|
#
|
||||||
|
SUFFIXES = .def .xml
|
||||||
|
CHEW = ${top_builddir}/../doc/makedoc -f $(top_srcdir)/../doc/doc.str
|
||||||
|
DOCBOOK_CHEW = ${top_srcdir}/../doc/makedocbook.py
|
||||||
|
DOCBOOK_OUT_FILES = $(CHEWOUT_FILES:.def=.xml)
|
||||||
|
DOCBOOK_CHAPTERS = $(CHAPTERS:.tex=.xml)
|
||||||
|
CLEANFILES = $(CHEWOUT_FILES) $(DOCBOOK_OUT_FILES)
|
||||||
|
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
|
||||||
|
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .def .xml .c .lo .o .obj
|
||||||
|
am--refresh: Makefile
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../../Makefile.shared $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --cygnus'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --cygnus \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --cygnus Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
$(srcdir)/../../../Makefile.shared:
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
clean-noinstLIBRARIES:
|
||||||
|
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||||
|
lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) $(EXTRA_lib_a_DEPENDENCIES)
|
||||||
|
-rm -f lib.a
|
||||||
|
$(lib_a_AR) lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
|
||||||
|
$(RANLIB) lib.a
|
||||||
|
|
||||||
|
clean-noinstLTLIBRARIES:
|
||||||
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
|
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libx86_64.la: $(libx86_64_la_OBJECTS) $(libx86_64_la_DEPENDENCIES) $(EXTRA_libx86_64_la_DEPENDENCIES)
|
||||||
|
$(libx86_64_la_LINK) $(am_libx86_64_la_rpath) $(libx86_64_la_OBJECTS) $(libx86_64_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
.c.obj:
|
||||||
|
$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
$(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
lib_a-feclearexcept.o: feclearexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.o `test -f 'feclearexcept.c' || echo '$(srcdir)/'`feclearexcept.c
|
||||||
|
|
||||||
|
lib_a-feclearexcept.obj: feclearexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.obj `if test -f 'feclearexcept.c'; then $(CYGPATH_W) 'feclearexcept.c'; else $(CYGPATH_W) '$(srcdir)/feclearexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetenv.o: fegetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.o `test -f 'fegetenv.c' || echo '$(srcdir)/'`fegetenv.c
|
||||||
|
|
||||||
|
lib_a-fegetenv.obj: fegetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.obj `if test -f 'fegetenv.c'; then $(CYGPATH_W) 'fegetenv.c'; else $(CYGPATH_W) '$(srcdir)/fegetenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetexceptflag.o: fegetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.o `test -f 'fegetexceptflag.c' || echo '$(srcdir)/'`fegetexceptflag.c
|
||||||
|
|
||||||
|
lib_a-fegetexceptflag.obj: fegetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.obj `if test -f 'fegetexceptflag.c'; then $(CYGPATH_W) 'fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fegetexceptflag.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fegetround.o: fegetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.o `test -f 'fegetround.c' || echo '$(srcdir)/'`fegetround.c
|
||||||
|
|
||||||
|
lib_a-fegetround.obj: fegetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.obj `if test -f 'fegetround.c'; then $(CYGPATH_W) 'fegetround.c'; else $(CYGPATH_W) '$(srcdir)/fegetround.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feholdexcept.o: feholdexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.o `test -f 'feholdexcept.c' || echo '$(srcdir)/'`feholdexcept.c
|
||||||
|
|
||||||
|
lib_a-feholdexcept.obj: feholdexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.obj `if test -f 'feholdexcept.c'; then $(CYGPATH_W) 'feholdexcept.c'; else $(CYGPATH_W) '$(srcdir)/feholdexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fenv.o: fenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.o `test -f 'fenv.c' || echo '$(srcdir)/'`fenv.c
|
||||||
|
|
||||||
|
lib_a-fenv.obj: fenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fenv.obj `if test -f 'fenv.c'; then $(CYGPATH_W) 'fenv.c'; else $(CYGPATH_W) '$(srcdir)/fenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feraiseexcept.o: feraiseexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.o `test -f 'feraiseexcept.c' || echo '$(srcdir)/'`feraiseexcept.c
|
||||||
|
|
||||||
|
lib_a-feraiseexcept.obj: feraiseexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.obj `if test -f 'feraiseexcept.c'; then $(CYGPATH_W) 'feraiseexcept.c'; else $(CYGPATH_W) '$(srcdir)/feraiseexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetenv.o: fesetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.o `test -f 'fesetenv.c' || echo '$(srcdir)/'`fesetenv.c
|
||||||
|
|
||||||
|
lib_a-fesetenv.obj: fesetenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.obj `if test -f 'fesetenv.c'; then $(CYGPATH_W) 'fesetenv.c'; else $(CYGPATH_W) '$(srcdir)/fesetenv.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetexceptflag.o: fesetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.o `test -f 'fesetexceptflag.c' || echo '$(srcdir)/'`fesetexceptflag.c
|
||||||
|
|
||||||
|
lib_a-fesetexceptflag.obj: fesetexceptflag.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.obj `if test -f 'fesetexceptflag.c'; then $(CYGPATH_W) 'fesetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fesetexceptflag.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fesetround.o: fesetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.o `test -f 'fesetround.c' || echo '$(srcdir)/'`fesetround.c
|
||||||
|
|
||||||
|
lib_a-fesetround.obj: fesetround.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.obj `if test -f 'fesetround.c'; then $(CYGPATH_W) 'fesetround.c'; else $(CYGPATH_W) '$(srcdir)/fesetround.c'; fi`
|
||||||
|
|
||||||
|
lib_a-fetestexcept.o: fetestexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.o `test -f 'fetestexcept.c' || echo '$(srcdir)/'`fetestexcept.c
|
||||||
|
|
||||||
|
lib_a-fetestexcept.obj: fetestexcept.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.obj `if test -f 'fetestexcept.c'; then $(CYGPATH_W) 'fetestexcept.c'; else $(CYGPATH_W) '$(srcdir)/fetestexcept.c'; fi`
|
||||||
|
|
||||||
|
lib_a-feupdateenv.o: feupdateenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.o `test -f 'feupdateenv.c' || echo '$(srcdir)/'`feupdateenv.c
|
||||||
|
|
||||||
|
lib_a-feupdateenv.obj: feupdateenv.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.obj `if test -f 'feupdateenv.c'; then $(CYGPATH_W) 'feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/feupdateenv.c'; fi`
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool config.lt
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
check-am:
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA)
|
||||||
|
installdirs:
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
|
||||||
|
clean-noinstLTLIBRARIES mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am:
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
|
||||||
|
clean-generic clean-libtool clean-noinstLIBRARIES \
|
||||||
|
clean-noinstLTLIBRARIES ctags distclean distclean-compile \
|
||||||
|
distclean-generic distclean-libtool distclean-tags dvi dvi-am \
|
||||||
|
html html-am info info-am install install-am install-data \
|
||||||
|
install-data-am install-dvi install-dvi-am install-exec \
|
||||||
|
install-exec-am install-html install-html-am install-info \
|
||||||
|
install-info-am install-man install-pdf install-pdf-am \
|
||||||
|
install-ps install-ps-am install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am
|
||||||
|
|
||||||
|
objectlist.awk.in: $(noinst_LTLIBRARIES)
|
||||||
|
-rm -f objectlist.awk.in
|
||||||
|
for i in `ls *.lo` ; \
|
||||||
|
do \
|
||||||
|
echo $$i `pwd`/$$i >> objectlist.awk.in ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.c.def:
|
||||||
|
$(CHEW) < $< > $*.def || ( rm $*.def && false )
|
||||||
|
@touch stmp-def
|
||||||
|
|
||||||
|
TARGETDOC ?= ../tmp.texi
|
||||||
|
|
||||||
|
doc: $(CHEWOUT_FILES)
|
||||||
|
for chapter in $(CHAPTERS) ; \
|
||||||
|
do \
|
||||||
|
cat $(srcdir)/$$chapter >> $(TARGETDOC) ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.c.xml:
|
||||||
|
$(DOCBOOK_CHEW) < $< > $*.xml || ( rm $*.xml && false )
|
||||||
|
@touch stmp-xml
|
||||||
|
|
||||||
|
docbook: $(DOCBOOK_OUT_FILES)
|
||||||
|
for chapter in $(DOCBOOK_CHAPTERS) ; \
|
||||||
|
do \
|
||||||
|
${top_srcdir}/../doc/chapter-texi2docbook.py <$(srcdir)/$${chapter%.xml}.tex >../$$chapter ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
1017
newlib/libm/machine/x86_64/aclocal.m4
vendored
Normal file
1017
newlib/libm/machine/x86_64/aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
14047
newlib/libm/machine/x86_64/configure
vendored
Executable file
14047
newlib/libm/machine/x86_64/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
25
newlib/libm/machine/x86_64/configure.in
Normal file
25
newlib/libm/machine/x86_64/configure.in
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
dnl This is the newlib/libc/machine/x86_64 configure.in file.
|
||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_PREREQ(2.59)
|
||||||
|
AC_INIT([newlib],[NEWLIB_VERSION])
|
||||||
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
|
|
||||||
|
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
|
||||||
|
AC_CONFIG_AUX_DIR(../../../..)
|
||||||
|
|
||||||
|
NEWLIB_CONFIGURE(../../..)
|
||||||
|
|
||||||
|
dnl We have to add the following lines because automake detects the
|
||||||
|
dnl references to libtool libraries from aclocal and tries to verify that
|
||||||
|
dnl AM_PROG_LIBTOOL is being used. This code must occur after
|
||||||
|
dnl NEWLIB_CONFIGURE.
|
||||||
|
_LT_DECL_SED
|
||||||
|
_LT_PROG_ECHO_BACKSLASH
|
||||||
|
if test "${use_libtool}" = "yes"; then
|
||||||
|
AC_LIBTOOL_WIN32_DLL
|
||||||
|
AM_PROG_LIBTOOL
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
AC_OUTPUT
|
1
newlib/libm/machine/x86_64/feclearexcept.c
Symbolic link
1
newlib/libm/machine/x86_64/feclearexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fegetenv.c
Symbolic link
1
newlib/libm/machine/x86_64/fegetenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fegetexceptflag.c
Symbolic link
1
newlib/libm/machine/x86_64/fegetexceptflag.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fegetround.c
Symbolic link
1
newlib/libm/machine/x86_64/fegetround.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/feholdexcept.c
Symbolic link
1
newlib/libm/machine/x86_64/feholdexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
477
newlib/libm/machine/x86_64/fenv.c
Normal file
477
newlib/libm/machine/x86_64/fenv.c
Normal file
@ -0,0 +1,477 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010-2019 Red Hat, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // for FE_NOMASK_ENV
|
||||||
|
|
||||||
|
#include <fenv.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h> // for memcpy
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
/* x87 supports subnormal numbers so we need it below. */
|
||||||
|
#define __FE_DENORM (1 << 1)
|
||||||
|
/* mask (= 0x3f) to disable all exceptions at initialization */
|
||||||
|
#define __FE_ALL_EXCEPT_X86 (FE_ALL_EXCEPT | __FE_DENORM)
|
||||||
|
|
||||||
|
/* Mask and shift amount for rounding bits. */
|
||||||
|
#define FE_CW_ROUND_MASK (0x0c00)
|
||||||
|
#define FE_CW_ROUND_SHIFT (10)
|
||||||
|
/* Same, for SSE MXCSR. */
|
||||||
|
#define FE_MXCSR_ROUND_MASK (0x6000)
|
||||||
|
#define FE_MXCSR_ROUND_SHIFT (13)
|
||||||
|
|
||||||
|
/* Mask and shift amount for precision bits. */
|
||||||
|
#define FE_CW_PREC_MASK (0x0300)
|
||||||
|
#define FE_CW_PREC_SHIFT (8)
|
||||||
|
|
||||||
|
/* In x87, exception status bits and mask bits occupy
|
||||||
|
corresponding bit positions in the status and control
|
||||||
|
registers, respectively. In SSE, they are both located
|
||||||
|
in the control-and-status register, with the status bits
|
||||||
|
corresponding to the x87 positions, and the mask bits
|
||||||
|
shifted by this amount to the left. */
|
||||||
|
#define FE_SSE_EXCEPT_MASK_SHIFT (7)
|
||||||
|
|
||||||
|
/* These are writable so we can initialise them at startup. */
|
||||||
|
static fenv_t fe_nomask_env;
|
||||||
|
|
||||||
|
/* These pointers provide the outside world with read-only access to them. */
|
||||||
|
const fenv_t *_fe_nomask_env = &fe_nomask_env;
|
||||||
|
|
||||||
|
/* Assume i686 or above (hence SSE available) these days, with the
|
||||||
|
compiler feels free to use it (depending on compile- time flags of
|
||||||
|
course), but we should avoid needlessly breaking any purely integer mode
|
||||||
|
apps (or apps compiled with -mno-sse), so we only manage SSE state in this
|
||||||
|
fenv module if we detect that SSE instructions are available at runtime.
|
||||||
|
If we didn't do this, all applications run on older machines would bomb
|
||||||
|
out with an invalid instruction exception right at startup; let's not
|
||||||
|
be *that* WJM! */
|
||||||
|
static inline bool use_sse(void)
|
||||||
|
{
|
||||||
|
unsigned int edx, eax;
|
||||||
|
|
||||||
|
/* Check for presence of SSE: invoke CPUID #1, check EDX bit 25. */
|
||||||
|
eax = 1;
|
||||||
|
__asm__ volatile ("cpuid" : "=d" (edx), "+a" (eax) :: "%ecx", "%ebx");
|
||||||
|
/* If this flag isn't set we'll avoid trying to execute any SSE. */
|
||||||
|
if ((edx & (1 << 25)) != 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* forward declaration */
|
||||||
|
static void _feinitialise (void);
|
||||||
|
|
||||||
|
/* This function enables traps for each of the exceptions as indicated
|
||||||
|
by the parameter except. The individual exceptions are described in
|
||||||
|
[ ... glibc manual xref elided ...]. Only the specified exceptions are
|
||||||
|
enabled, the status of the other exceptions is not changed.
|
||||||
|
The function returns the previous enabled exceptions in case the
|
||||||
|
operation was successful, -1 otherwise. */
|
||||||
|
int
|
||||||
|
feenableexcept (int excepts)
|
||||||
|
{
|
||||||
|
unsigned short cw, old_cw;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Get control words. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (old_cw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
|
||||||
|
/* Enable exceptions by clearing mask bits. */
|
||||||
|
cw = old_cw & ~excepts;
|
||||||
|
mxcsr &= ~(excepts << FE_SSE_EXCEPT_MASK_SHIFT);
|
||||||
|
|
||||||
|
/* Store updated control words. */
|
||||||
|
__asm__ volatile ("fldcw %0" :: "m" (cw));
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (mxcsr));
|
||||||
|
|
||||||
|
/* Return old value. We assume SSE and x87 stay in sync. Note that
|
||||||
|
we are returning a mask of enabled exceptions, which is the opposite
|
||||||
|
of the flags in the register, which are set to disable (mask) their
|
||||||
|
related exceptions. */
|
||||||
|
return (~old_cw) & FE_ALL_EXCEPT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function disables traps for each of the exceptions as indicated
|
||||||
|
by the parameter except. The individual exceptions are described in
|
||||||
|
[ ... glibc manual xref elided ...]. Only the specified exceptions are
|
||||||
|
disabled, the status of the other exceptions is not changed.
|
||||||
|
The function returns the previous enabled exceptions in case the
|
||||||
|
operation was successful, -1 otherwise. */
|
||||||
|
int
|
||||||
|
fedisableexcept (int excepts)
|
||||||
|
{
|
||||||
|
unsigned short cw, old_cw;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Get control words. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (old_cw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
|
||||||
|
/* Disable exceptions by setting mask bits. */
|
||||||
|
cw = old_cw | excepts;
|
||||||
|
mxcsr |= (excepts << FE_SSE_EXCEPT_MASK_SHIFT);
|
||||||
|
|
||||||
|
/* Store updated control words. */
|
||||||
|
__asm__ volatile ("fldcw %0" :: "m" (cw));
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (mxcsr));
|
||||||
|
|
||||||
|
/* Return old value. We assume SSE and x87 stay in sync. Note that
|
||||||
|
we are returning a mask of enabled exceptions, which is the opposite
|
||||||
|
of the flags in the register, which are set to disable (mask) their
|
||||||
|
related exceptions. */
|
||||||
|
return (~old_cw) & FE_ALL_EXCEPT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function returns a bitmask of all currently enabled exceptions. It
|
||||||
|
returns -1 in case of failure. */
|
||||||
|
int
|
||||||
|
fegetexcept (void)
|
||||||
|
{
|
||||||
|
unsigned short cw;
|
||||||
|
|
||||||
|
/* Get control word. We assume SSE and x87 stay in sync. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
|
||||||
|
/* Exception is *dis*abled when mask bit is set. */
|
||||||
|
return (~cw) & FE_ALL_EXCEPT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Store the floating-point environment in the variable pointed to by envp.
|
||||||
|
The function returns zero in case the operation was successful, a non-zero
|
||||||
|
value otherwise. */
|
||||||
|
int
|
||||||
|
fegetenv (fenv_t *envp)
|
||||||
|
{
|
||||||
|
/* fnstenv disables all exceptions in the x87 FPU; as this is not what is
|
||||||
|
desired here, reload the cfg saved from the x87 FPU, back to the FPU */
|
||||||
|
__asm__ volatile ("fnstenv %0\n\
|
||||||
|
fldenv %0"
|
||||||
|
: "=m" (envp->_fpu) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (envp->_sse_mxcsr) : );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Store the current floating-point environment in the object pointed to
|
||||||
|
by envp. Then clear all exception flags, and set the FPU to trap no
|
||||||
|
exceptions. Not all FPUs support trapping no exceptions; if feholdexcept
|
||||||
|
cannot set this mode, it returns nonzero value. If it succeeds, it
|
||||||
|
returns zero. */
|
||||||
|
int
|
||||||
|
feholdexcept (fenv_t *envp)
|
||||||
|
{
|
||||||
|
unsigned int mxcsr;
|
||||||
|
fegetenv (envp);
|
||||||
|
mxcsr = envp->_sse_mxcsr & ~FE_ALL_EXCEPT;
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (mxcsr));
|
||||||
|
__asm__ volatile ("fnclex");
|
||||||
|
fedisableexcept (FE_ALL_EXCEPT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the floating-point environment to that described by envp. The
|
||||||
|
function returns zero in case the operation was successful, a non-zero
|
||||||
|
value otherwise. */
|
||||||
|
int
|
||||||
|
fesetenv (const fenv_t *envp)
|
||||||
|
{
|
||||||
|
if ((envp == FE_DFL_ENV || envp == FE_NOMASK_ENV) &&
|
||||||
|
envp->_fpu._fpu_cw == 0)
|
||||||
|
_feinitialise ();
|
||||||
|
|
||||||
|
__asm__ volatile ("fldenv %0" :: "m" (envp->_fpu) );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (envp->_sse_mxcsr));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Like fesetenv, this function sets the floating-point environment to
|
||||||
|
that described by envp. However, if any exceptions were flagged in the
|
||||||
|
status word before feupdateenv was called, they remain flagged after
|
||||||
|
the call. In other words, after feupdateenv is called, the status
|
||||||
|
word is the bitwise OR of the previous status word and the one saved
|
||||||
|
in envp. The function returns zero in case the operation was successful,
|
||||||
|
a non-zero value otherwise. */
|
||||||
|
int
|
||||||
|
feupdateenv (const fenv_t *envp)
|
||||||
|
{
|
||||||
|
fenv_t envcopy;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
unsigned short sw;
|
||||||
|
|
||||||
|
/* Don't want to modify *envp, but want to update environment atomically,
|
||||||
|
so take a copy and merge the existing exceptions into it. */
|
||||||
|
memcpy (&envcopy, envp, sizeof *envp);
|
||||||
|
__asm__ volatile ("fnstsw %0" : "=m" (sw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
envcopy._fpu._fpu_sw |= (sw & FE_ALL_EXCEPT);
|
||||||
|
envcopy._sse_mxcsr |= (mxcsr & FE_ALL_EXCEPT);
|
||||||
|
|
||||||
|
return fesetenv (&envcopy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function clears all of the supported exception flags indicated by
|
||||||
|
excepts. The function returns zero in case the operation was successful,
|
||||||
|
a non-zero value otherwise. */
|
||||||
|
int
|
||||||
|
feclearexcept (int excepts)
|
||||||
|
{
|
||||||
|
fenv_t fenv;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Need to save/restore whole environment to modify status word. */
|
||||||
|
fegetenv (&fenv);
|
||||||
|
|
||||||
|
/* Mask undesired bits out. */
|
||||||
|
fenv._fpu._fpu_sw &= ~excepts;
|
||||||
|
fenv._sse_mxcsr &= ~excepts;
|
||||||
|
|
||||||
|
/* Set back into FPU state. */
|
||||||
|
return fesetenv (&fenv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function raises the supported exceptions indicated by
|
||||||
|
excepts. If more than one exception bit in excepts is set the order
|
||||||
|
in which the exceptions are raised is undefined except that overflow
|
||||||
|
(FE_OVERFLOW) or underflow (FE_UNDERFLOW) are raised before inexact
|
||||||
|
(FE_INEXACT). Whether for overflow or underflow the inexact exception
|
||||||
|
is also raised is also implementation dependent. The function returns
|
||||||
|
zero in case the operation was successful, a non-zero value otherwise. */
|
||||||
|
int
|
||||||
|
feraiseexcept (int excepts)
|
||||||
|
{
|
||||||
|
fenv_t fenv;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Need to save/restore whole environment to modify status word. */
|
||||||
|
__asm__ volatile ("fnstenv %0" : "=m" (fenv) : );
|
||||||
|
|
||||||
|
/* Set desired exception bits. */
|
||||||
|
fenv._fpu._fpu_sw |= excepts;
|
||||||
|
|
||||||
|
/* Set back into FPU state. */
|
||||||
|
__asm__ volatile ("fldenv %0" :: "m" (fenv));
|
||||||
|
|
||||||
|
/* And trigger them - whichever are unmasked. */
|
||||||
|
__asm__ volatile ("fwait");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test whether the exception flags indicated by the parameter except
|
||||||
|
are currently set. If any of them are, a nonzero value is returned
|
||||||
|
which specifies which exceptions are set. Otherwise the result is zero. */
|
||||||
|
int
|
||||||
|
fetestexcept (int excepts)
|
||||||
|
{
|
||||||
|
unsigned short sw;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Get status registers. */
|
||||||
|
__asm__ volatile ("fnstsw %0" : "=m" (sw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
|
||||||
|
/* Mask undesired bits out and return result. */
|
||||||
|
return (sw | mxcsr) & excepts;
|
||||||
|
}
|
||||||
|
/* This function stores in the variable pointed to by flagp an
|
||||||
|
implementation-defined value representing the current setting of the
|
||||||
|
exception flags indicated by excepts. The function returns zero in
|
||||||
|
case the operation was successful, a non-zero value otherwise. */
|
||||||
|
int
|
||||||
|
fegetexceptflag (fexcept_t *flagp, int excepts)
|
||||||
|
{
|
||||||
|
unsigned short sw;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Get status registers. */
|
||||||
|
__asm__ volatile ("fnstsw %0" : "=m" (sw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
|
||||||
|
/* Mask undesired bits out and set result. */
|
||||||
|
*flagp = (sw | mxcsr) & excepts;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function restores the flags for the exceptions indicated by
|
||||||
|
excepts to the values stored in the variable pointed to by flagp. */
|
||||||
|
int
|
||||||
|
fesetexceptflag (const fexcept_t *flagp, int excepts)
|
||||||
|
{
|
||||||
|
fenv_t fenv;
|
||||||
|
|
||||||
|
if (excepts & ~FE_ALL_EXCEPT)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Need to save/restore whole environment to modify status word. */
|
||||||
|
fegetenv (&fenv);
|
||||||
|
|
||||||
|
/* Set/Clear desired exception bits. */
|
||||||
|
fenv._fpu._fpu_sw &= ~excepts;
|
||||||
|
fenv._fpu._fpu_sw |= excepts & *flagp;
|
||||||
|
fenv._sse_mxcsr &= ~excepts;
|
||||||
|
fenv._sse_mxcsr |= excepts & *flagp;
|
||||||
|
|
||||||
|
/* Set back into FPU state. */
|
||||||
|
return fesetenv (&fenv);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the currently selected rounding mode, represented by one of the
|
||||||
|
values of the defined rounding mode macros. */
|
||||||
|
int
|
||||||
|
fegetround (void)
|
||||||
|
{
|
||||||
|
unsigned short cw;
|
||||||
|
|
||||||
|
/* Get control word. We assume SSE and x87 stay in sync. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
|
||||||
|
return (cw & FE_CW_ROUND_MASK) >> FE_CW_ROUND_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Changes the currently selected rounding mode to round. If round does
|
||||||
|
not correspond to one of the supported rounding modes nothing is changed.
|
||||||
|
fesetround returns zero if it changed the rounding mode, a nonzero value
|
||||||
|
if the mode is not supported. */
|
||||||
|
int
|
||||||
|
fesetround (int round)
|
||||||
|
{
|
||||||
|
unsigned short cw;
|
||||||
|
unsigned int mxcsr = 0;
|
||||||
|
|
||||||
|
/* Will succeed for any valid value of the input parameter. */
|
||||||
|
if (round < FE_TONEAREST || round > FE_TOWARDZERO)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
/* Get control words. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("stmxcsr %0" : "=m" (mxcsr) : );
|
||||||
|
|
||||||
|
/* Twiddle bits. */
|
||||||
|
cw &= ~FE_CW_ROUND_MASK;
|
||||||
|
cw |= (round << FE_CW_ROUND_SHIFT);
|
||||||
|
mxcsr &= ~FE_MXCSR_ROUND_MASK;
|
||||||
|
mxcsr |= (round << FE_MXCSR_ROUND_SHIFT);
|
||||||
|
|
||||||
|
/* Set back into FPU state. */
|
||||||
|
__asm__ volatile ("fldcw %0" :: "m" (cw));
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (mxcsr));
|
||||||
|
|
||||||
|
/* Indicate success. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__)
|
||||||
|
/* Returns the currently selected precision, represented by one of the
|
||||||
|
values of the defined precision macros. */
|
||||||
|
int
|
||||||
|
fegetprec (void)
|
||||||
|
{
|
||||||
|
unsigned short cw;
|
||||||
|
|
||||||
|
/* Get control word. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
|
||||||
|
return (cw & FE_CW_PREC_MASK) >> FE_CW_PREC_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm:
|
||||||
|
|
||||||
|
The fesetprec function establishes the precision represented by its
|
||||||
|
argument prec. If the argument does not match a precision macro, the
|
||||||
|
precision is not changed.
|
||||||
|
|
||||||
|
The fesetprec function returns a nonzero value if and only if the
|
||||||
|
argument matches a precision macro (that is, if and only if the requested
|
||||||
|
precision can be established). */
|
||||||
|
int
|
||||||
|
fesetprec (int prec)
|
||||||
|
{
|
||||||
|
unsigned short cw;
|
||||||
|
|
||||||
|
/* Will succeed for any valid value of the input parameter. */
|
||||||
|
switch (prec)
|
||||||
|
{
|
||||||
|
case FE_FLTPREC:
|
||||||
|
case FE_DBLPREC:
|
||||||
|
case FE_LDBLPREC:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get control word. */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
|
||||||
|
/* Twiddle bits. */
|
||||||
|
cw &= ~FE_CW_PREC_MASK;
|
||||||
|
cw |= (prec << FE_CW_PREC_SHIFT);
|
||||||
|
|
||||||
|
/* Set back into FPU state. */
|
||||||
|
__asm__ volatile ("fldcw %0" :: "m" (cw));
|
||||||
|
|
||||||
|
/* Indicate success. */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set up the FPU and SSE environment at the start of execution. */
|
||||||
|
static void
|
||||||
|
_feinitialise (void)
|
||||||
|
{
|
||||||
|
extern fenv_t __fe_dfl_env;
|
||||||
|
|
||||||
|
/* Reset FPU: extended prec, all exceptions cleared and masked off. */
|
||||||
|
__asm__ volatile ("fninit");
|
||||||
|
/* The default cw value, 0x37f, is rounding mode zero. The MXCSR has
|
||||||
|
no precision control, so the only thing to do is set the exception
|
||||||
|
mask bits. */
|
||||||
|
|
||||||
|
/* initialize the MXCSR register: mask all exceptions */
|
||||||
|
unsigned int mxcsr = __FE_ALL_EXCEPT_X86 << FE_SSE_EXCEPT_MASK_SHIFT;
|
||||||
|
if (use_sse())
|
||||||
|
__asm__ volatile ("ldmxcsr %0" :: "m" (mxcsr));
|
||||||
|
|
||||||
|
/* Setup unmasked environment, but leave __FE_DENORM masked. */
|
||||||
|
feenableexcept (FE_ALL_EXCEPT);
|
||||||
|
fegetenv (&fe_nomask_env);
|
||||||
|
|
||||||
|
/* Restore default exception masking (all masked). */
|
||||||
|
fedisableexcept (FE_ALL_EXCEPT);
|
||||||
|
|
||||||
|
/* Finally cache state as default environment. */
|
||||||
|
fegetenv (&__fe_dfl_env);
|
||||||
|
}
|
1
newlib/libm/machine/x86_64/feraiseexcept.c
Symbolic link
1
newlib/libm/machine/x86_64/feraiseexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fesetenv.c
Symbolic link
1
newlib/libm/machine/x86_64/fesetenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fesetexceptflag.c
Symbolic link
1
newlib/libm/machine/x86_64/fesetexceptflag.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fesetround.c
Symbolic link
1
newlib/libm/machine/x86_64/fesetround.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/fetestexcept.c
Symbolic link
1
newlib/libm/machine/x86_64/fetestexcept.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
1
newlib/libm/machine/x86_64/feupdateenv.c
Symbolic link
1
newlib/libm/machine/x86_64/feupdateenv.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../fenv/fenv_stub.c
|
Loading…
x
Reference in New Issue
Block a user