@@ -35850,22 +35850,23 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r,
3585035850 register sp_digit* r __asm__ ("r0") = (sp_digit*)r_p;
3585135851 register const sp_digit* a __asm__ ("r1") = (const sp_digit*)a_p;
3585235852 register const sp_digit* b __asm__ ("r2") = (const sp_digit*)b_p;
35853+ register const sp_digit* m __asm__ ("r3") = (const sp_digit*)m_p;
3585335854#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
3585435855
3585535856 __asm__ __volatile__ (
3585635857 "MOV lr, #0x0\n\t"
3585735858 "LDM %[a], {r5, r6, r7, r8, r9, r10, r11, r12}\n\t"
3585835859 "LDM %[b]!, {r3, r4}\n\t"
35859- "SUBS r5, r5, r3 \n\t"
35860+ "SUBS r5, r5, %[m] \n\t"
3586035861 "SBCS r6, r6, r4\n\t"
3586135862 "LDM %[b]!, {r3, r4}\n\t"
35862- "SBCS r7, r7, r3 \n\t"
35863+ "SBCS r7, r7, %[m] \n\t"
3586335864 "SBCS r8, r8, r4\n\t"
3586435865 "LDM %[b]!, {r3, r4}\n\t"
35865- "SBCS r9, r9, r3 \n\t"
35866+ "SBCS r9, r9, %[m] \n\t"
3586635867 "SBCS r10, r10, r4\n\t"
3586735868 "LDM %[b]!, {r3, r4}\n\t"
35868- "SBCS r11, r11, r3 \n\t"
35869+ "SBCS r11, r11, %[m] \n\t"
3586935870 "SBCS r12, r12, r4\n\t"
3587035871 "SBC lr, lr, #0x0\n\t"
3587135872 "ADDS r5, r5, lr\n\t"
@@ -35886,16 +35887,11 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r,
3588635887 "ADCS r11, r11, lr, LSR #31\n\t"
3588735888 "ADC r12, r12, lr\n\t"
3588835889 "STM %[r], {r5, r6, r7, r8, r9, r10, r11, r12}\n\t"
35889- : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
35890+ : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b), [m] "+r" (m)
3589035891 :
35891- : "memory", "cc", "r3", " r4", "r5", "r6", "r7", "r8", "r9", "r10",
35892- "r11", " r12", "lr"
35892+ : "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11 ",
35893+ "r12", "lr"
3589335894 );
35894- #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
35895- (void)m_p;
35896- #else
35897- (void)m;
35898- #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
3589935895}
3590035896
3590135897/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m)
@@ -45717,7 +45713,7 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_384_mont_sub_12(sp_digit* r,
4571745713#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
4571845714
4571945715 __asm__ __volatile__ (
45720- "MOV r3 , #0x0\n\t"
45716+ "MOV %[m] , #0x0\n\t"
4572145717 "LDM %[a]!, {r8, r9, r10, r11}\n\t"
4572245718 "LDM %[b]!, {r4, r5, r6, r7}\n\t"
4572345719 "SUBS r8, r8, r4\n\t"
@@ -45739,47 +45735,47 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_384_mont_sub_12(sp_digit* r,
4573945735 "SBCS r10, r10, r6\n\t"
4574045736 "SBCS r11, r11, r7\n\t"
4574145737 "STM %[r]!, {r8, r9, r10, r11}\n\t"
45742- "SBC r3, r3 , #0x0\n\t"
45738+ "SBC %[m], %[m] , #0x0\n\t"
4574345739 "SUB %[r], %[r], #0x30\n\t"
45744- "LSR r12, r3 , #1\n\t"
45740+ "LSR r12, %[m] , #1\n\t"
4574545741 "LDM %[r], {r8, r9, r10, r11}\n\t"
45746- "ADDS r8, r8, r3 \n\t"
45742+ "ADDS r8, r8, %[m] \n\t"
4574745743 "ADCS r9, r9, #0x0\n\t"
4574845744 "ADCS r10, r10, #0x0\n\t"
45749- "ADCS r11, r11, r3 \n\t"
45745+ "ADCS r11, r11, %[m] \n\t"
4575045746 "STM %[r]!, {r8, r9, r10, r11}\n\t"
4575145747 "LDM %[r], {r8, r9, r10, r11}\n\t"
4575245748 "ADCS r8, r8, r12, LSL #1\n\t"
45753- "ADCS r9, r9, r3 \n\t"
45754- "ADCS r10, r10, r3 \n\t"
45755- "ADCS r11, r11, r3 \n\t"
45749+ "ADCS r9, r9, %[m] \n\t"
45750+ "ADCS r10, r10, %[m] \n\t"
45751+ "ADCS r11, r11, %[m] \n\t"
4575645752 "STM %[r]!, {r8, r9, r10, r11}\n\t"
4575745753 "LDM %[r], {r8, r9, r10, r11}\n\t"
45758- "ADCS r8, r8, r3 \n\t"
45759- "ADCS r9, r9, r3 \n\t"
45760- "ADCS r10, r10, r3 \n\t"
45761- "ADCS r11, r11, r3 \n\t"
45754+ "ADCS r8, r8, %[m] \n\t"
45755+ "ADCS r9, r9, %[m] \n\t"
45756+ "ADCS r10, r10, %[m] \n\t"
45757+ "ADCS r11, r11, %[m] \n\t"
4576245758 "STM %[r]!, {r8, r9, r10, r11}\n\t"
45763- "ADC r3, r3 , #0x0\n\t"
45759+ "ADC %[m], %[m] , #0x0\n\t"
4576445760 "SUB %[r], %[r], #0x30\n\t"
45765- "LSR r12, r3 , #1\n\t"
45761+ "LSR r12, %[m] , #1\n\t"
4576645762 "LDM %[r], {r8, r9, r10, r11}\n\t"
45767- "ADDS r8, r8, r3 \n\t"
45763+ "ADDS r8, r8, %[m] \n\t"
4576845764 "ADCS r9, r9, #0x0\n\t"
4576945765 "ADCS r10, r10, #0x0\n\t"
45770- "ADCS r11, r11, r3 \n\t"
45766+ "ADCS r11, r11, %[m] \n\t"
4577145767 "STM %[r]!, {r8, r9, r10, r11}\n\t"
4577245768 "LDM %[r], {r8, r9, r10, r11}\n\t"
4577345769 "ADCS r8, r8, r12, LSL #1\n\t"
45774- "ADCS r9, r9, r3 \n\t"
45775- "ADCS r10, r10, r3 \n\t"
45776- "ADCS r11, r11, r3 \n\t"
45770+ "ADCS r9, r9, %[m] \n\t"
45771+ "ADCS r10, r10, %[m] \n\t"
45772+ "ADCS r11, r11, %[m] \n\t"
4577745773 "STM %[r]!, {r8, r9, r10, r11}\n\t"
4577845774 "LDM %[r], {r8, r9, r10, r11}\n\t"
45779- "ADCS r8, r8, r3 \n\t"
45780- "ADCS r9, r9, r3 \n\t"
45781- "ADCS r10, r10, r3 \n\t"
45782- "ADC r11, r11, r3 \n\t"
45775+ "ADCS r8, r8, %[m] \n\t"
45776+ "ADCS r9, r9, %[m] \n\t"
45777+ "ADCS r10, r10, %[m] \n\t"
45778+ "ADC r11, r11, %[m] \n\t"
4578345779 "STM %[r]!, {r8, r9, r10, r11}\n\t"
4578445780 : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b), [m] "+r" (m)
4578545781 :
@@ -57482,10 +57478,11 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_521_mont_sub_17(sp_digit* r,
5748257478 register sp_digit* r __asm__ ("r0") = (sp_digit*)r_p;
5748357479 register const sp_digit* a __asm__ ("r1") = (const sp_digit*)a_p;
5748457480 register const sp_digit* b __asm__ ("r2") = (const sp_digit*)b_p;
57481+ register const sp_digit* m __asm__ ("r3") = (const sp_digit*)m_p;
5748557482#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
5748657483
5748757484 __asm__ __volatile__ (
57488- "MOV r3 , #0x0\n\t"
57485+ "MOV %[m] , #0x0\n\t"
5748957486 "LDM %[a]!, {r8, r9, r10, r11}\n\t"
5749057487 "LDM %[b]!, {r4, r5, r6, r7}\n\t"
5749157488 "SUBS r8, r8, r4\n\t"
@@ -57518,13 +57515,13 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_521_mont_sub_17(sp_digit* r,
5751857515 "LDM %[b]!, {r4}\n\t"
5751957516 "SBCS r8, r8, r4\n\t"
5752057517 "MOV r12, #0x1ff\n\t"
57521- "ASR r3 , r8, #9\n\t"
57518+ "ASR %[m] , r8, #9\n\t"
5752257519 "AND r8, r8, r12\n\t"
57523- "neg r3, r3 \n\t"
57520+ "neg %[m], %[m] \n\t"
5752457521 "STM %[r]!, {r8}\n\t"
5752557522 "SUB %[r], %[r], #0x44\n\t"
5752657523 "LDM %[r], {r4, r5, r6, r7, r8, r9, r10, r11}\n\t"
57527- "SUBS r4, r4, r3 \n\t"
57524+ "SUBS r4, r4, %[m] \n\t"
5752857525 "SBCS r5, r5, #0x0\n\t"
5752957526 "SBCS r6, r6, #0x0\n\t"
5753057527 "SBCS r7, r7, #0x0\n\t"
@@ -57546,16 +57543,11 @@ WC_OMIT_FRAME_POINTER SP_NOINLINE static void sp_521_mont_sub_17(sp_digit* r,
5754657543 "LDM %[r], {r4}\n\t"
5754757544 "SBCS r4, r4, #0x0\n\t"
5754857545 "STM %[r]!, {r4}\n\t"
57549- : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
57546+ : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b), [m] "+r" (m)
5755057547 :
5755157548 : "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
57552- "r3", " r12"
57549+ "r12"
5755357550 );
57554- #ifndef WOLFSSL_NO_VAR_ASSIGN_REG
57555- (void)m_p;
57556- #else
57557- (void)m;
57558- #endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
5755957551}
5756057552
5756157553#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
0 commit comments