aboutsummaryrefslogtreecommitdiffstats
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:35:11 +0000
commit0553c6642be2cdf6bac776fac5fd50164cb28709 (patch)
treec1302b18f922ebcb6a739ef7c6ef33bc78651885
parenta244697f97107af77f26eb7e4dfc4538c7e68b27 (diff)
downloadtermbaud-0553c6642be2cdf6bac776fac5fd50164cb28709.tar.gz
termbaud-0553c6642be2cdf6bac776fac5fd50164cb28709.tar.xz
termbaud-0553c6642be2cdf6bac776fac5fd50164cb28709.zip
[AArch64] Fix FP_ROUNDMODE.
[BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR. Conflicts: NEWS
-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 29856cc046f..2e8bb1684e3 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,7 @@ Version 2.18.1
* The following bugs are resolved with this release:
- 15073, 15128, 15909, 15996, 16150.
+ 15073, 15128, 15909, 15996, 16150, 16387.
Version 2.18
diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64
index 89cc504fe45..ce2fd5cf5e0 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/dl-trampoline.S (_dl_runtime_resolve): Correct
cfi_adjust_cfa_offset offset.
diff --git a/ports/sysdeps/aarch64/fpu/fpu_control.h b/ports/sysdeps/aarch64/fpu/fpu_control.h
index 89ff7e129d1..37059261f72 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 d21d00a9344..9bb94e5ccc7 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