diff options
-rw-r--r-- | mpi/armv6/mpih-mul1.S | 10 | ||||
-rw-r--r-- | mpi/armv6/mpih-mul2.S | 2 | ||||
-rw-r--r-- | mpi/armv6/mpih-mul3.S | 7 |
3 files changed, 11 insertions, 8 deletions
diff --git a/mpi/armv6/mpih-mul1.S b/mpi/armv6/mpih-mul1.S index ae19a153..0aa41efb 100644 --- a/mpi/armv6/mpih-mul1.S +++ b/mpi/armv6/mpih-mul1.S @@ -60,18 +60,18 @@ _gcry_mpih_mul_1: beq .Lend; .Large_loop: - mov %r9, #0; ldm %r1!, {%r5, %r6, %r7, %r8}; + mov %r9, #0; mov %r10, #0; umlal %r4, %r9, %r5, %r3; mov %r11, #0; umlal %r9, %r10, %r6, %r3; - mov %lr, #0; + str %r4, [%r0], #4; + mov %r4, #0; umlal %r10, %r11, %r7, %r3; subs %r2, #4; - umlal %r11, %lr, %r8, %r3; - stm %r0!, {%r4, %r9, %r10, %r11}; - mov %r4, %lr; + umlal %r11, %r4, %r8, %r3; + stm %r0!, {%r9, %r10, %r11}; bne .Large_loop; .Lend: diff --git a/mpi/armv6/mpih-mul2.S b/mpi/armv6/mpih-mul2.S index 02f7c07e..a7eb8a15 100644 --- a/mpi/armv6/mpih-mul2.S +++ b/mpi/armv6/mpih-mul2.S @@ -61,8 +61,8 @@ _gcry_mpih_addmul_1: beq .Lend; .Large_loop: - ldm %r0, {%r4, %r6, %r8, %r10}; ldr %r5, [%r1], #4; + ldm %r0, {%r4, %r6, %r8, %r10}; sub %r2, #4; adcs %r4, %lr; diff --git a/mpi/armv6/mpih-mul3.S b/mpi/armv6/mpih-mul3.S index e42fc304..034929e5 100644 --- a/mpi/armv6/mpih-mul3.S +++ b/mpi/armv6/mpih-mul3.S @@ -63,20 +63,23 @@ _gcry_mpih_submul_1: .Large_loop: ldr %r5, [%r1], #4; - ldm %r0, {%r4, %r6, %r8, %r10}; - mov %r9, #0; + ldr %r4, [%r0, #0]; + umlal %lr, %r9, %r5, %r3; + ldr %r6, [%r0, #4]; ldr %r5, [%r1], #4; sbcs %r4, %r4, %lr; mov %lr, #0; umlal %r9, %lr, %r5, %r3; + ldr %r8, [%r0, #8]; ldr %r5, [%r1], #4; sbcs %r6, %r6, %r9; mov %r9, #0; umlal %lr, %r9, %r5, %r3; + ldr %r10, [%r0, #12]; ldr %r5, [%r1], #4; sbcs %r8, %r8, %lr; |