[AArch64] Fix FP_ROUNDMODE.

Message ID 1389111810-10851-1-git-send-email-marcus.shawcroft@linaro.org
State New
Headers show

Commit Message

Marcus Shawcroft Jan. 7, 2014, 4:23 p.m.
[BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR. Committed.

/Marcus

---
 NEWS                                        | 2 +-
 ports/ChangeLog.aarch64                     | 7 +++++++
 ports/sysdeps/aarch64/fpu/fpu_control.h     | 3 +++
 ports/sysdeps/aarch64/soft-fp/sfp-machine.h | 2 +-
 4 files changed, 12 insertions(+), 2 deletions(-)

Comments

Marcus Shawcroft Jan. 7, 2014, 4:38 p.m. | #1
On 7 January 2014 16:23, Marcus Shawcroft <marcus.shawcroft@linaro.org> wrote:
> [BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR. Committed.
>

... and I've cherry-pick'd this to 2.18

/Marcus

Patch hide | download patch | download mbox

diff --git a/NEWS b/NEWS
index a3030eb..d674772 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 53ec535..3867810 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 79ab5fb..6a265e8 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 d21d00a..9bb94e5 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