about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarcus Shawcroft <marcus.shawcroft@linaro.org>2014-01-07 16:16:35 +0000
committerMarcus Shawcroft <marcus.shawcroft@linaro.org>2014-01-07 16:17:52 +0000
commit196f456b842ee96e1bf1e5ae6ed21ba427dee3f3 (patch)
treefb882be8637c0d895494c60e71d6c1c3025847e0
parent07d55c6c3777499bdc0228ef820d5b647f2af71c (diff)
downloadglibc-196f456b842ee96e1bf1e5ae6ed21ba427dee3f3.tar.gz
glibc-196f456b842ee96e1bf1e5ae6ed21ba427dee3f3.tar.xz
glibc-196f456b842ee96e1bf1e5ae6ed21ba427dee3f3.zip
[AArch64] Fix FP_ROUNDMODE.
[BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR.
-rw-r--r--NEWS2
-rw-r--r--ports/ChangeLog.aarch647
-rw-r--r--ports/sysdeps/aarch64/fpu/fpu_control.h3
-rw-r--r--ports/sysdeps/aarch64/soft-fp/sfp-machine.h2
4 files changed, 12 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index a3030eb163..d674772247 100644
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Version 2.19
   16103, 16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172,
   16195, 16214, 16245, 16271, 16274, 16283, 16289, 16293, 16314, 16316,
   16330, 16337, 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379,
-  16384, 16385, 16386, 16390, 16400.
+  16384, 16385, 16386, 16387, 16390, 16400.
 
 * Slovenian translations for glibc messages have been contributed by the
   Translation Project's Slovenian team of translators.
diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64
index 53ec5357b8..3867810f40 100644
--- a/ports/ChangeLog.aarch64
+++ b/ports/ChangeLog.aarch64
@@ -1,5 +1,12 @@
 2014-01-07  Marcus Shawcroft  <marcus.shawcroft@linaro.org>
 
+	[BZ #16387]
+	* sysdeps/aarch64/fpu/fpu_control.h (_FPU_FPCR_RM_MASK): Define.
+	* sysdeps/aarch64/soft-fp/sfp-machine.h (FP_ROUNDMODE): Adjust
+	rounding mode mask.
+
+2014-01-07  Marcus Shawcroft  <marcus.shawcroft@linaro.org>
+
 	* sysdeps/aarch64/libm-test-ulps: Drop sqrt ULPs.
 
 2014-01-07  Marcus Shawcroft  <marcus.shawcroft@linaro.org>
diff --git a/ports/sysdeps/aarch64/fpu/fpu_control.h b/ports/sysdeps/aarch64/fpu/fpu_control.h
index 79ab5fb95d..6a265e89b5 100644
--- a/ports/sysdeps/aarch64/fpu/fpu_control.h
+++ b/ports/sysdeps/aarch64/fpu/fpu_control.h
@@ -59,6 +59,9 @@
                    E E D D
                        E E
  */
+
+#define _FPU_FPCR_RM_MASK  0xc00000
+
 #define _FPU_FPCR_MASK_IXE 0x1000
 #define _FPU_FPCR_MASK_UFE 0x0800
 #define _FPU_FPCR_MASK_OFE 0x0400
diff --git a/ports/sysdeps/aarch64/soft-fp/sfp-machine.h b/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
index d21d00a934..9bb94e5ccc 100644
--- a/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
+++ b/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
@@ -47,7 +47,7 @@
 
 #define _FP_DECL_EX		fpu_control_t _fcw
 
-#define FP_ROUNDMODE		(_fcw & 0x3)
+#define FP_ROUNDMODE		(_fcw & _FPU_FPCR_RM_MASK)
 
 #define FP_RND_NEAREST		FE_TONEAREST
 #define FP_RND_ZERO		FE_TOWARDZERO