diff --git a/kernel/arm/asum_vfp.S b/kernel/arm/asum_vfp.S index 2b6ceb191..fe6242a5b 100644 --- a/kernel/arm/asum_vfp.S +++ b/kernel/arm/asum_vfp.S @@ -367,12 +367,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .align 5 -#if defined(DOUBLE) - vsub.f64 d0 , d0 , d0 - vsub.f64 d1 , d1 , d1 -#else - vsub.f32 s0 , s0 , s0 - vsub.f32 s1 , s1 , s1 + movs r12, #0 // clear floating point register + vmov s0, r12 + vmov s1, r12 +#if defined(DOUBLE) + vcvt.f64.f32 d0, s0 + vcvt.f64.f32 d1, s1 #endif cmp N, #0 diff --git a/kernel/arm/iamax_vfp.S b/kernel/arm/iamax_vfp.S index f50c28e42..fab05c9c8 100644 --- a/kernel/arm/iamax_vfp.S +++ b/kernel/arm/iamax_vfp.S @@ -341,11 +341,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .align 5 push {r4} -#if defined(DOUBLE) - vsub.f64 d0 , d0 , d0 -#else - vsub.f32 s0 , s0 , s0 + movs r12, #0 // clear floating point register + vmov s0, r12 +#if defined(DOUBLE) + vcvt.f64.f32 d0, s0 #endif + mov INDEX, #0 cmp N, #0