From 196f456b842ee96e1bf1e5ae6ed21ba427dee3f3 Mon Sep 17 00:00:00 2001 From: Marcus Shawcroft Date: Tue, 7 Jan 2014 16:16:35 +0000 Subject: [AArch64] Fix FP_ROUNDMODE. [BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR. --- ports/ChangeLog.aarch64 | 7 +++++++ ports/sysdeps/aarch64/fpu/fpu_control.h | 3 +++ ports/sysdeps/aarch64/soft-fp/sfp-machine.h | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'ports') diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64 index 53ec5357b8..3867810f40 100644 --- a/ports/ChangeLog.aarch64 +++ b/ports/ChangeLog.aarch64 @@ -1,3 +1,10 @@ +2014-01-07 Marcus Shawcroft + + [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 * sysdeps/aarch64/libm-test-ulps: Drop sqrt ULPs. 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 -- cgit 1.4.1