From 479b54e78e35dac1d682f655b1bc902be8950f85 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Tue, 12 May 2020 23:14:57 +1000 Subject: [PATCH] Fix div word in SP ARM32 --- wolfcrypt/src/sp_arm32.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index d500965f9..8bdc61501 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -4353,6 +4353,10 @@ static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -6177,6 +6181,10 @@ static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -14928,6 +14936,10 @@ static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -17376,6 +17388,10 @@ static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -69645,6 +69661,10 @@ static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -79741,6 +79761,10 @@ static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -87913,6 +87937,10 @@ static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t"