diff options
Diffstat (limited to 'src/lib/libcrypto/bn/asm/alpha-mont.pl')
-rw-r--r-- | src/lib/libcrypto/bn/asm/alpha-mont.pl | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/lib/libcrypto/bn/asm/alpha-mont.pl b/src/lib/libcrypto/bn/asm/alpha-mont.pl index f7e0ca1646..03596e2014 100644 --- a/src/lib/libcrypto/bn/asm/alpha-mont.pl +++ b/src/lib/libcrypto/bn/asm/alpha-mont.pl | |||
@@ -41,8 +41,12 @@ $j="s4"; | |||
41 | $m1="s5"; | 41 | $m1="s5"; |
42 | 42 | ||
43 | $code=<<___; | 43 | $code=<<___; |
44 | #ifdef __linux__ | ||
45 | #include <asm/regdef.h> | ||
46 | #else | ||
44 | #include <asm.h> | 47 | #include <asm.h> |
45 | #include <regdef.h> | 48 | #include <regdef.h> |
49 | #endif | ||
46 | 50 | ||
47 | .text | 51 | .text |
48 | 52 | ||
@@ -76,7 +80,7 @@ bn_mul_mont: | |||
76 | ldq $aj,8($ap) | 80 | ldq $aj,8($ap) |
77 | subq sp,AT,sp | 81 | subq sp,AT,sp |
78 | ldq $bi,0($bp) # bp[0] | 82 | ldq $bi,0($bp) # bp[0] |
79 | mov -4096,AT | 83 | lda AT,-4096(zero) # mov -4096,AT |
80 | ldq $n0,0($n0) | 84 | ldq $n0,0($n0) |
81 | and sp,AT,sp | 85 | and sp,AT,sp |
82 | 86 | ||
@@ -106,9 +110,9 @@ bn_mul_mont: | |||
106 | .align 4 | 110 | .align 4 |
107 | .L1st: | 111 | .L1st: |
108 | .set noreorder | 112 | .set noreorder |
109 | ldq $aj,($aj) | 113 | ldq $aj,0($aj) |
110 | addl $j,1,$j | 114 | addl $j,1,$j |
111 | ldq $nj,($nj) | 115 | ldq $nj,0($nj) |
112 | lda $tp,8($tp) | 116 | lda $tp,8($tp) |
113 | 117 | ||
114 | addq $alo,$hi0,$lo0 | 118 | addq $alo,$hi0,$lo0 |
@@ -159,12 +163,12 @@ bn_mul_mont: | |||
159 | .align 4 | 163 | .align 4 |
160 | .Louter: | 164 | .Louter: |
161 | s8addq $i,$bp,$bi | 165 | s8addq $i,$bp,$bi |
162 | ldq $hi0,($ap) | 166 | ldq $hi0,0($ap) |
163 | ldq $aj,8($ap) | 167 | ldq $aj,8($ap) |
164 | ldq $bi,($bi) | 168 | ldq $bi,0($bi) |
165 | ldq $hi1,($np) | 169 | ldq $hi1,0($np) |
166 | ldq $nj,8($np) | 170 | ldq $nj,8($np) |
167 | ldq $tj,(sp) | 171 | ldq $tj,0(sp) |
168 | 172 | ||
169 | mulq $hi0,$bi,$lo0 | 173 | mulq $hi0,$bi,$lo0 |
170 | umulh $hi0,$bi,$hi0 | 174 | umulh $hi0,$bi,$hi0 |
@@ -195,10 +199,10 @@ bn_mul_mont: | |||
195 | .set noreorder | 199 | .set noreorder |
196 | ldq $tj,8($tp) #L0 | 200 | ldq $tj,8($tp) #L0 |
197 | nop #U1 | 201 | nop #U1 |
198 | ldq $aj,($aj) #L1 | 202 | ldq $aj,0($aj) #L1 |
199 | s8addq $j,$np,$nj #U0 | 203 | s8addq $j,$np,$nj #U0 |
200 | 204 | ||
201 | ldq $nj,($nj) #L0 | 205 | ldq $nj,0($nj) #L0 |
202 | nop #U1 | 206 | nop #U1 |
203 | addq $alo,$hi0,$lo0 #L1 | 207 | addq $alo,$hi0,$lo0 #L1 |
204 | lda $tp,8($tp) | 208 | lda $tp,8($tp) |
@@ -247,7 +251,7 @@ bn_mul_mont: | |||
247 | addq $hi1,v0,$hi1 | 251 | addq $hi1,v0,$hi1 |
248 | 252 | ||
249 | addq $hi1,$hi0,$lo1 | 253 | addq $hi1,$hi0,$lo1 |
250 | stq $j,($tp) | 254 | stq $j,0($tp) |
251 | cmpult $lo1,$hi0,$hi1 | 255 | cmpult $lo1,$hi0,$hi1 |
252 | addq $lo1,$tj,$lo1 | 256 | addq $lo1,$tj,$lo1 |
253 | cmpult $lo1,$tj,AT | 257 | cmpult $lo1,$tj,AT |
@@ -265,8 +269,8 @@ bn_mul_mont: | |||
265 | mov 0,$hi0 # clear borrow bit | 269 | mov 0,$hi0 # clear borrow bit |
266 | 270 | ||
267 | .align 4 | 271 | .align 4 |
268 | .Lsub: ldq $lo0,($tp) | 272 | .Lsub: ldq $lo0,0($tp) |
269 | ldq $lo1,($np) | 273 | ldq $lo1,0($np) |
270 | lda $tp,8($tp) | 274 | lda $tp,8($tp) |
271 | lda $np,8($np) | 275 | lda $np,8($np) |
272 | subq $lo0,$lo1,$lo1 # tp[i]-np[i] | 276 | subq $lo0,$lo1,$lo1 # tp[i]-np[i] |
@@ -274,7 +278,7 @@ bn_mul_mont: | |||
274 | subq $lo1,$hi0,$lo0 | 278 | subq $lo1,$hi0,$lo0 |
275 | cmpult $lo1,$lo0,$hi0 | 279 | cmpult $lo1,$lo0,$hi0 |
276 | or $hi0,AT,$hi0 | 280 | or $hi0,AT,$hi0 |
277 | stq $lo0,($rp) | 281 | stq $lo0,0($rp) |
278 | cmpult $tp,$tj,v0 | 282 | cmpult $tp,$tj,v0 |
279 | lda $rp,8($rp) | 283 | lda $rp,8($rp) |
280 | bne v0,.Lsub | 284 | bne v0,.Lsub |
@@ -288,7 +292,7 @@ bn_mul_mont: | |||
288 | bis $bp,$ap,$ap # ap=borrow?tp:rp | 292 | bis $bp,$ap,$ap # ap=borrow?tp:rp |
289 | 293 | ||
290 | .align 4 | 294 | .align 4 |
291 | .Lcopy: ldq $aj,($ap) # copy or in-place refresh | 295 | .Lcopy: ldq $aj,0($ap) # copy or in-place refresh |
292 | lda $tp,8($tp) | 296 | lda $tp,8($tp) |
293 | lda $rp,8($rp) | 297 | lda $rp,8($rp) |
294 | lda $ap,8($ap) | 298 | lda $ap,8($ap) |
@@ -309,8 +313,8 @@ bn_mul_mont: | |||
309 | lda sp,48(sp) | 313 | lda sp,48(sp) |
310 | ret (ra) | 314 | ret (ra) |
311 | .end bn_mul_mont | 315 | .end bn_mul_mont |
312 | .rdata | 316 | .ascii "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>" |
313 | .asciiz "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>" | 317 | .align 2 |
314 | ___ | 318 | ___ |
315 | 319 | ||
316 | print $code; | 320 | print $code; |