aboutsummaryrefslogtreecommitdiff
path: root/newlib/libm/fenv/feholdexcept.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel@rtems.org>2019-08-08 11:27:06 -0500
committerCorinna Vinschen <corinna@vinschen.de>2019-08-09 17:49:16 +0200
commiteae68bfc877ef245b3a1550f70eb2c039d3c4fb0 (patch)
treeb61a8b8a1e2e64f01bb382fac55b731817b67d1b /newlib/libm/fenv/feholdexcept.c
parent03f802846fdf72e102fa6bbbac8c5d713cdb129c (diff)
downloadnewlib-eae68bfc877ef245b3a1550f70eb2c039d3c4fb0.zip
newlib-eae68bfc877ef245b3a1550f70eb2c039d3c4fb0.tar.gz
newlib-eae68bfc877ef245b3a1550f70eb2c039d3c4fb0.tar.bz2
Add default implementation of fenv.h and all methods
The default implementation of the fenv.h methods return -EOPNOTSUP. Some of these have implementations appropriate for soft-float. The intention of the new fenv.h is that it be portable and that architectures provide their own implementation of sys/fenv.h.
Diffstat (limited to 'newlib/libm/fenv/feholdexcept.c')
-rw-r--r--newlib/libm/fenv/feholdexcept.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/newlib/libm/fenv/feholdexcept.c b/newlib/libm/fenv/feholdexcept.c
new file mode 100644
index 0000000..7d066a7
--- /dev/null
+++ b/newlib/libm/fenv/feholdexcept.c
@@ -0,0 +1,70 @@
+/*
+ (c) Copyright 2019 Joel Sherrill <joel@rtems.org
+ 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 COPYRIGHT HOLDERS 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 COPYRIGHT
+ HOLDER 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.
+*/
+
+#include <fenv.h>
+#include <errno.h>
+
+/*
+FUNCTION
+<<feholdexcept>>---save current floating-point environment
+
+INDEX
+ feholdexcept
+
+SYNOPSIS
+ #include <fenv.h>
+ int feholdexcept(fenv_t *<[envp]>);
+
+ Link with -lm.
+
+DESCRIPTION
+This method attempts to save the current floating-point environment
+in the fenv_t instance pointed to by <[envp]>, clear the floating
+point status flags, and then, if supported by the target architecture,
+install a "non-stop" (e.g. continue on floating point exceptions) mode
+for all floating-point exceptions.
+
+RETURNS
+This method will return zero if the non-stop floating-point exception
+handler was installed. Otherwise, a non-zero value is returned.
+
+PORTABILITY
+ANSI C requires <<feholdexcept>>.
+
+Not all Newlib targets have a working implementation. Refer to
+the file <<sys/fenv.h>> to see the status for your target.
+*/
+
+/*
+ * This is a non-functional implementation that should be overridden
+ * by an architecture specific implementation in newlib/libm/machine/ARCH.
+ */
+int feholdexcept(fenv_t *envp)
+{
+ return -ENOTSUP;
+}