diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2005-08-03 14:53:25 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-08-03 14:53:25 -0400 |
commit | 7b1fbf292bb4c855ddae8add8c459e94684f7543 (patch) | |
tree | 8269bb5c858aaa0a0483cb81759ca947e0b396c1 | |
parent | 858297509590ef4aa5690e30c2f5505077b4f369 (diff) |
[PATCH] ARM: 2841/1: Fix VFP +/-0 case for doubles addition
Patch from Catalin Marinas
The IEEE 754 standard specifies that the result of (x - x), where x is
a valid number, should be -0 if the rounding mode is towards minus
infinity or +0 otherwise.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/vfp/vfpdouble.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/vfp/vfpdouble.c b/arch/arm/vfp/vfpdouble.c index b801cd66b6ea..9b367a65cb4d 100644 --- a/arch/arm/vfp/vfpdouble.c +++ b/arch/arm/vfp/vfpdouble.c | |||
@@ -770,6 +770,9 @@ vfp_double_add(struct vfp_double *vdd, struct vfp_double *vdn, | |||
770 | if ((s64)m_sig < 0) { | 770 | if ((s64)m_sig < 0) { |
771 | vdd->sign = vfp_sign_negate(vdd->sign); | 771 | vdd->sign = vfp_sign_negate(vdd->sign); |
772 | m_sig = -m_sig; | 772 | m_sig = -m_sig; |
773 | } else if (m_sig == 0) { | ||
774 | vdd->sign = (fpscr & FPSCR_RMODE_MASK) == | ||
775 | FPSCR_ROUND_MINUSINF ? 0x8000 : 0; | ||
773 | } | 776 | } |
774 | } else { | 777 | } else { |
775 | m_sig += vdn->significand; | 778 | m_sig += vdn->significand; |