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