diff options
Diffstat (limited to 'arch/arm/vfp')
| -rw-r--r-- | arch/arm/vfp/vfpdouble.c | 2 | ||||
| -rw-r--r-- | arch/arm/vfp/vfpsingle.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/vfp/vfpdouble.c b/arch/arm/vfp/vfpdouble.c index 6cac43bd1d86..423f56dd4028 100644 --- a/arch/arm/vfp/vfpdouble.c +++ b/arch/arm/vfp/vfpdouble.c | |||
| @@ -866,6 +866,8 @@ vfp_double_multiply_accumulate(int dd, int dn, int dm, u32 fpscr, u32 negate, ch | |||
| 866 | vdp.sign = vfp_sign_negate(vdp.sign); | 866 | vdp.sign = vfp_sign_negate(vdp.sign); |
| 867 | 867 | ||
| 868 | vfp_double_unpack(&vdn, vfp_get_double(dd)); | 868 | vfp_double_unpack(&vdn, vfp_get_double(dd)); |
| 869 | if (vdn.exponent == 0 && vdn.significand) | ||
| 870 | vfp_double_normalise_denormal(&vdn); | ||
| 869 | if (negate & NEG_SUBTRACT) | 871 | if (negate & NEG_SUBTRACT) |
| 870 | vdn.sign = vfp_sign_negate(vdn.sign); | 872 | vdn.sign = vfp_sign_negate(vdn.sign); |
| 871 | 873 | ||
diff --git a/arch/arm/vfp/vfpsingle.c b/arch/arm/vfp/vfpsingle.c index b252631b406b..4f96c1617aae 100644 --- a/arch/arm/vfp/vfpsingle.c +++ b/arch/arm/vfp/vfpsingle.c | |||
| @@ -915,6 +915,8 @@ vfp_single_multiply_accumulate(int sd, int sn, s32 m, u32 fpscr, u32 negate, cha | |||
| 915 | v = vfp_get_float(sd); | 915 | v = vfp_get_float(sd); |
| 916 | pr_debug("VFP: s%u = %08x\n", sd, v); | 916 | pr_debug("VFP: s%u = %08x\n", sd, v); |
| 917 | vfp_single_unpack(&vsn, v); | 917 | vfp_single_unpack(&vsn, v); |
| 918 | if (vsn.exponent == 0 && vsn.significand) | ||
| 919 | vfp_single_normalise_denormal(&vsn); | ||
| 918 | if (negate & NEG_SUBTRACT) | 920 | if (negate & NEG_SUBTRACT) |
| 919 | vsn.sign = vfp_sign_negate(vsn.sign); | 921 | vsn.sign = vfp_sign_negate(vsn.sign); |
| 920 | 922 | ||
