OLD | NEW |
1 #include "arm_arch.h" | 1 #include "arm_arch.h" |
2 | 2 |
3 .text | 3 .text |
4 .code 32 | 4 .code 32 |
5 | 5 |
6 #if __ARM_ARCH__>=7 | 6 #if __ARM_MAX_ARCH__>=7 |
7 .align 5 | 7 .align 5 |
8 .LOPENSSL_armcap: | 8 .LOPENSSL_armcap: |
9 .word» OPENSSL_armcap_P-bn_mul_mont | 9 .word» OPENSSL_armcap_P-.Lbn_mul_mont |
10 #endif | 10 #endif |
11 | 11 |
12 .global»bn_mul_mont | 12 .globl» bn_mul_mont |
13 .hidden bn_mul_mont | 13 .hidden bn_mul_mont |
14 .type bn_mul_mont,%function | 14 .type bn_mul_mont,%function |
15 | 15 |
16 .align 5 | 16 .align 5 |
17 bn_mul_mont: | 17 bn_mul_mont: |
| 18 .Lbn_mul_mont: |
18 ldr ip,[sp,#4] @ load num | 19 ldr ip,[sp,#4] @ load num |
19 stmdb sp!,{r0,r2} @ sp points at argument block | 20 stmdb sp!,{r0,r2} @ sp points at argument block |
20 #if __ARM_ARCH__>=7 | 21 #if __ARM_MAX_ARCH__>=7 |
21 tst ip,#7 | 22 tst ip,#7 |
22 bne .Lialu | 23 bne .Lialu |
23 adr r0,bn_mul_mont | 24 adr r0,bn_mul_mont |
24 ldr r2,.LOPENSSL_armcap | 25 ldr r2,.LOPENSSL_armcap |
25 ldr r0,[r0,r2] | 26 ldr r0,[r0,r2] |
| 27 #ifdef __APPLE__ |
| 28 ldr r0,[r0] |
| 29 #endif |
26 tst r0,#1 @ NEON available? | 30 tst r0,#1 @ NEON available? |
27 ldmia sp, {r0,r2} | 31 ldmia sp, {r0,r2} |
28 beq .Lialu | 32 beq .Lialu |
29 add sp,sp,#8 | 33 add sp,sp,#8 |
30 b bn_mul8x_mont_neon | 34 b bn_mul8x_mont_neon |
31 .align 4 | 35 .align 4 |
32 .Lialu: | 36 .Lialu: |
33 #endif | 37 #endif |
34 cmp ip,#2 | 38 cmp ip,#2 |
35 mov r0,ip @ load num | 39 mov r0,ip @ load num |
36 movlt r0,#0 | 40 movlt r0,#0 |
37 addlt sp,sp,#2*4 | 41 addlt sp,sp,#2*4 |
38 blt .Labrt | 42 blt .Labrt |
39 | 43 |
40 » stmdb» sp!,{r4-r12,lr}»» @ save 10 registers | 44 » stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}» » @ save 10 regist
ers |
41 | 45 |
42 mov r0,r0,lsl#2 @ rescale r0 for byte count | 46 mov r0,r0,lsl#2 @ rescale r0 for byte count |
43 sub sp,sp,r0 @ alloca(4*num) | 47 sub sp,sp,r0 @ alloca(4*num) |
44 sub sp,sp,#4 @ +extra dword | 48 sub sp,sp,#4 @ +extra dword |
45 sub r0,r0,#4 @ "num=num-1" | 49 sub r0,r0,#4 @ "num=num-1" |
46 add r4,r2,r0 @ &bp[num-1] | 50 add r4,r2,r0 @ &bp[num-1] |
47 | 51 |
48 add r0,sp,r0 @ r0 to point at &tp[num-1] | 52 add r0,sp,r0 @ r0 to point at &tp[num-1] |
49 ldr r8,[r0,#14*4] @ &n0 | 53 ldr r8,[r0,#14*4] @ &n0 |
50 ldr r2,[r2] @ bp[0] | 54 ldr r2,[r2] @ bp[0] |
(...skipping 20 matching lines...) Expand all Loading... |
71 adds r12,r12,r10 | 75 adds r12,r12,r10 |
72 str r12,[r4],#4 @ tp[j-1]=,tp++ | 76 str r12,[r4],#4 @ tp[j-1]=,tp++ |
73 adc r12,r14,#0 | 77 adc r12,r14,#0 |
74 cmp r4,r0 | 78 cmp r4,r0 |
75 bne .L1st | 79 bne .L1st |
76 | 80 |
77 adds r12,r12,r11 | 81 adds r12,r12,r11 |
78 ldr r4,[r0,#13*4] @ restore bp | 82 ldr r4,[r0,#13*4] @ restore bp |
79 mov r14,#0 | 83 mov r14,#0 |
80 ldr r8,[r0,#14*4] @ restore n0 | 84 ldr r8,[r0,#14*4] @ restore n0 |
error: old chunk mismatch |
None
OLD | NEW |