GNU C Library master sources branch master updated. glibc-2.19-654-g4841e6a
wilco@sourceware.org
wilco@sourceware.org
Tue Jun 24 11:42:00 GMT 2014
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 4841e6a6c2fa691201fb52dfaf6b6a8920229bac (commit)
from 08e5862f5f087138047c757376edb1b63217d547 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4841e6a6c2fa691201fb52dfaf6b6a8920229bac
commit 4841e6a6c2fa691201fb52dfaf6b6a8920229bac
Author: Wilco <wdijkstr@arm.com>
Date: Tue Jun 24 11:04:31 2014 +0000
Use libc calls defined by fenv_private.h to implement several fenv functions
rather than duplicating functionality. To make this work for softfp builds,
ensure functions in fenv_private are not conditionally compiled.
2014-06-24 Wilco <wdijkstr@arm.com>
* sysdeps/arm/fegetround.c (fegetround): Call get_rounding_mode.
* sysdeps/arm/feholdexcpt.c (feholdexcept): Call libc_feholdexcept_vfp.
* sysdeps/arm/fesetround.c (fesetround): Call libc_fesetround_vfp.
* sysdeps/arm/fgetexcptflg.c (fegetexceptflag):
Call libc_fetestexcept_vfp.
* sysdeps/arm/ftestexcept.c (fetestexcept): Call libc_fetestexcept_vfp.
* sysdeps/arm/fenv_private.h: Move libc_*_vfp functions outside of
__SOFTFP__ ifdef so that they can be built for softfp.
diff --git a/ChangeLog b/ChangeLog
index 8bfdf80..28bc633 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2014-06-24 Wilco <wdijkstr@arm.com>
+
+ * sysdeps/arm/fegetround.c (fegetround): Call get_rounding_mode.
+ * sysdeps/arm/feholdexcpt.c (feholdexcept): Call libc_feholdexcept_vfp.
+ * sysdeps/arm/fesetround.c (fesetround): Call libc_fesetround_vfp.
+ * sysdeps/arm/fgetexcptflg.c (fegetexceptflag):
+ Call libc_fetestexcept_vfp.
+ * sysdeps/arm/ftestexcept.c (fetestexcept): Call libc_fetestexcept_vfp.
+ * sysdeps/arm/fenv_private.h: Move libc_*_vfp functions outside of
+ __SOFTFP__ ifdef so that they can be built for softfp.
+
2014-06-24 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/x86/nptl/elide.h (elision_adapt): Make first
diff --git a/sysdeps/arm/fegetround.c b/sysdeps/arm/fegetround.c
index 1c9c151..fbad0b3 100644
--- a/sysdeps/arm/fegetround.c
+++ b/sysdeps/arm/fegetround.c
@@ -16,22 +16,12 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <fenv.h>
-#include <fpu_control.h>
-#include <arm-features.h>
+#include <get-rounding-mode.h>
int
fegetround (void)
{
- fpu_control_t fpscr;
-
- /* FE_TONEAREST is the only supported rounding mode
- if a VFP unit isn't present. */
- if (!ARM_HAVE_VFP)
- return FE_TONEAREST;
-
- _FPU_GETCW (fpscr);
- return fpscr & FE_TOWARDZERO;
+ return get_rounding_mode ();
}
libm_hidden_def (fegetround)
diff --git a/sysdeps/arm/feholdexcpt.c b/sysdeps/arm/feholdexcpt.c
index 258ba66..2d79e0c 100644
--- a/sysdeps/arm/feholdexcpt.c
+++ b/sysdeps/arm/feholdexcpt.c
@@ -16,30 +16,18 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <fenv.h>
-#include <fpu_control.h>
+#include <fenv_private.h>
#include <arm-features.h>
int
feholdexcept (fenv_t *envp)
{
- fpu_control_t fpscr;
-
/* Fail if a VFP unit isn't present. */
if (!ARM_HAVE_VFP)
return 1;
- _FPU_GETCW (fpscr);
- envp->__cw = fpscr;
-
- /* Now set all exceptions to non-stop. */
- fpscr &= ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
-
- /* And clear all exception flags. */
- fpscr &= ~FE_ALL_EXCEPT;
-
- _FPU_SETCW (fpscr);
+ libc_feholdexcept_vfp (envp);
return 0;
}
diff --git a/sysdeps/arm/fenv_private.h b/sysdeps/arm/fenv_private.h
index e246fb5..bff8acd 100644
--- a/sysdeps/arm/fenv_private.h
+++ b/sysdeps/arm/fenv_private.h
@@ -22,8 +22,6 @@
#include <fenv.h>
#include <fpu_control.h>
-#ifndef __SOFTFP__
-
static __always_inline void
libc_feholdexcept_vfp (fenv_t *envp)
{
@@ -142,49 +140,6 @@ libc_feupdateenv_vfp (const fenv_t *envp)
libc_feupdateenv_test_vfp (envp, 0);
}
-#define libc_feholdexcept libc_feholdexcept_vfp
-#define libc_feholdexceptf libc_feholdexcept_vfp
-#define libc_feholdexceptl libc_feholdexcept_vfp
-
-#define libc_fesetround libc_fesetround_vfp
-#define libc_fesetroundf libc_fesetround_vfp
-#define libc_fesetroundl libc_fesetround_vfp
-
-#define libc_feresetround libc_feresetround_vfp
-#define libc_feresetroundf libc_feresetround_vfp
-#define libc_feresetroundl libc_feresetround_vfp
-
-#define libc_feresetround_noex libc_fesetenv_vfp
-#define libc_feresetround_noexf libc_fesetenv_vfp
-#define libc_feresetround_noexl libc_fesetenv_vfp
-
-#define libc_feholdexcept_setround libc_feholdexcept_setround_vfp
-#define libc_feholdexcept_setroundf libc_feholdexcept_setround_vfp
-#define libc_feholdexcept_setroundl libc_feholdexcept_setround_vfp
-
-#define libc_feholdsetround libc_feholdsetround_vfp
-#define libc_feholdsetroundf libc_feholdsetround_vfp
-#define libc_feholdsetroundl libc_feholdsetround_vfp
-
-#define libc_fetestexcept libc_fetestexcept_vfp
-#define libc_fetestexceptf libc_fetestexcept_vfp
-#define libc_fetestexceptl libc_fetestexcept_vfp
-
-#define libc_fesetenv libc_fesetenv_vfp
-#define libc_fesetenvf libc_fesetenv_vfp
-#define libc_fesetenvl libc_fesetenv_vfp
-
-#define libc_feupdateenv libc_feupdateenv_vfp
-#define libc_feupdateenvf libc_feupdateenv_vfp
-#define libc_feupdateenvl libc_feupdateenv_vfp
-
-#define libc_feupdateenv_test libc_feupdateenv_test_vfp
-#define libc_feupdateenv_testf libc_feupdateenv_test_vfp
-#define libc_feupdateenv_testl libc_feupdateenv_test_vfp
-
-/* We have support for rounding mode context. */
-#define HAVE_RM_CTX 1
-
static __always_inline void
libc_feholdsetround_vfp_ctx (struct rm_ctx *ctx, int r)
{
@@ -232,17 +187,62 @@ libc_fesetenv_vfp_ctx (struct rm_ctx *ctx)
_FPU_SETCW (new_fpscr);
}
-#define libc_feholdsetround_ctx libc_feholdsetround_vfp_ctx
-#define libc_feresetround_ctx libc_feresetround_vfp_ctx
-#define libc_feresetround_noex_ctx libc_fesetenv_vfp_ctx
+#ifndef __SOFTFP__
+
+# define libc_feholdexcept libc_feholdexcept_vfp
+# define libc_feholdexceptf libc_feholdexcept_vfp
+# define libc_feholdexceptl libc_feholdexcept_vfp
+
+# define libc_fesetround libc_fesetround_vfp
+# define libc_fesetroundf libc_fesetround_vfp
+# define libc_fesetroundl libc_fesetround_vfp
+
+# define libc_feresetround libc_feresetround_vfp
+# define libc_feresetroundf libc_feresetround_vfp
+# define libc_feresetroundl libc_feresetround_vfp
+
+# define libc_feresetround_noex libc_fesetenv_vfp
+# define libc_feresetround_noexf libc_fesetenv_vfp
+# define libc_feresetround_noexl libc_fesetenv_vfp
+
+# define libc_feholdexcept_setround libc_feholdexcept_setround_vfp
+# define libc_feholdexcept_setroundf libc_feholdexcept_setround_vfp
+# define libc_feholdexcept_setroundl libc_feholdexcept_setround_vfp
+
+# define libc_feholdsetround libc_feholdsetround_vfp
+# define libc_feholdsetroundf libc_feholdsetround_vfp
+# define libc_feholdsetroundl libc_feholdsetround_vfp
+
+# define libc_fetestexcept libc_fetestexcept_vfp
+# define libc_fetestexceptf libc_fetestexcept_vfp
+# define libc_fetestexceptl libc_fetestexcept_vfp
+
+# define libc_fesetenv libc_fesetenv_vfp
+# define libc_fesetenvf libc_fesetenv_vfp
+# define libc_fesetenvl libc_fesetenv_vfp
+
+# define libc_feupdateenv libc_feupdateenv_vfp
+# define libc_feupdateenvf libc_feupdateenv_vfp
+# define libc_feupdateenvl libc_feupdateenv_vfp
+
+# define libc_feupdateenv_test libc_feupdateenv_test_vfp
+# define libc_feupdateenv_testf libc_feupdateenv_test_vfp
+# define libc_feupdateenv_testl libc_feupdateenv_test_vfp
+
+/* We have support for rounding mode context. */
+#define HAVE_RM_CTX 1
+
+# define libc_feholdsetround_ctx libc_feholdsetround_vfp_ctx
+# define libc_feresetround_ctx libc_feresetround_vfp_ctx
+# define libc_feresetround_noex_ctx libc_fesetenv_vfp_ctx
-#define libc_feholdsetroundf_ctx libc_feholdsetround_vfp_ctx
-#define libc_feresetroundf_ctx libc_feresetround_vfp_ctx
-#define libc_feresetround_noexf_ctx libc_fesetenv_vfp_ctx
+# define libc_feholdsetroundf_ctx libc_feholdsetround_vfp_ctx
+# define libc_feresetroundf_ctx libc_feresetround_vfp_ctx
+# define libc_feresetround_noexf_ctx libc_fesetenv_vfp_ctx
-#define libc_feholdsetroundl_ctx libc_feholdsetround_vfp_ctx
-#define libc_feresetroundl_ctx libc_feresetround_vfp_ctx
-#define libc_feresetround_noexl_ctx libc_fesetenv_vfp_ctx
+# define libc_feholdsetroundl_ctx libc_feholdsetround_vfp_ctx
+# define libc_feresetroundl_ctx libc_feresetround_vfp_ctx
+# define libc_feresetround_noexl_ctx libc_fesetenv_vfp_ctx
#endif
diff --git a/sysdeps/arm/fesetround.c b/sysdeps/arm/fesetround.c
index d1b92dc..d79f910 100644
--- a/sysdeps/arm/fesetround.c
+++ b/sysdeps/arm/fesetround.c
@@ -16,16 +16,13 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <fenv.h>
-#include <fpu_control.h>
+#include <fenv_private.h>
#include <arm-features.h>
int
fesetround (int round)
{
- fpu_control_t fpscr;
-
/* FE_TONEAREST is the only supported rounding mode
if a VFP unit isn't present. */
if (!ARM_HAVE_VFP)
@@ -35,9 +32,7 @@ fesetround (int round)
if (round & ~FE_TOWARDZERO)
return 1;
- _FPU_GETCW (fpscr);
- fpscr = (fpscr & ~FE_TOWARDZERO) | round;
- _FPU_SETCW (fpscr);
+ libc_fesetround_vfp (round);
return 0;
}
diff --git a/sysdeps/arm/fgetexcptflg.c b/sysdeps/arm/fgetexcptflg.c
index 63fdfbf..994555c 100644
--- a/sysdeps/arm/fgetexcptflg.c
+++ b/sysdeps/arm/fgetexcptflg.c
@@ -17,22 +17,17 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <fenv.h>
-#include <fpu_control.h>
+#include <fenv_private.h>
#include <arm-features.h>
int
fegetexceptflag (fexcept_t *flagp, int excepts)
{
- fpu_control_t fpscr;
-
/* Fail if a VFP unit isn't present. */
if (!ARM_HAVE_VFP)
return 1;
- _FPU_GETCW (fpscr);
-
- *flagp = fpscr & excepts & FE_ALL_EXCEPT;
+ *flagp = libc_fetestexcept_vfp (excepts);
return 0;
}
diff --git a/sysdeps/arm/ftestexcept.c b/sysdeps/arm/ftestexcept.c
index de082b2..9d1f369 100644
--- a/sysdeps/arm/ftestexcept.c
+++ b/sysdeps/arm/ftestexcept.c
@@ -16,23 +16,17 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <fenv.h>
-#include <fpu_control.h>
+#include <fenv_private.h>
#include <arm-features.h>
int
fetestexcept (int excepts)
{
- fpu_control_t fpscr;
-
/* Return no exception flags if a VFP unit isn't present. */
if (!ARM_HAVE_VFP)
return 0;
- /* Get current exceptions. */
- _FPU_GETCW (fpscr);
-
- return fpscr & excepts & FE_ALL_EXCEPT;
+ return libc_fetestexcept_vfp (excepts);
}
libm_hidden_def (fetestexcept)
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 11 +++++
sysdeps/arm/fegetround.c | 14 +-----
sysdeps/arm/feholdexcpt.c | 16 +------
sysdeps/arm/fenv_private.h | 108 ++++++++++++++++++++++----------------------
sysdeps/arm/fesetround.c | 9 +---
sysdeps/arm/fgetexcptflg.c | 9 +---
sysdeps/arm/ftestexcept.c | 10 +---
7 files changed, 75 insertions(+), 102 deletions(-)
hooks/post-receive
--
GNU C Library master sources
More information about the Glibc-cvs
mailing list