Alpha assembler pack: adapt for Linux [from HEAD].
PR: 2335
This commit is contained in:
parent
2c23b0716e
commit
b6996c7849
crypto
@ -70,9 +70,9 @@ OPENSSL_wipe_cpu:
|
|||||||
OPENSSL_atomic_add:
|
OPENSSL_atomic_add:
|
||||||
.frame $30,0,$26
|
.frame $30,0,$26
|
||||||
.prologue 0
|
.prologue 0
|
||||||
1: ldl_l $0,($16)
|
1: ldl_l $0,0($16)
|
||||||
addl $0,$17,$1
|
addl $0,$17,$1
|
||||||
stl_c $1,($16)
|
stl_c $1,0($16)
|
||||||
beq $1,1b
|
beq $1,1b
|
||||||
addl $0,$17,$0
|
addl $0,$17,$0
|
||||||
ret ($26)
|
ret ($26)
|
||||||
|
@ -41,8 +41,12 @@ $j="s4";
|
|||||||
$m1="s5";
|
$m1="s5";
|
||||||
|
|
||||||
$code=<<___;
|
$code=<<___;
|
||||||
|
#indef __linux__
|
||||||
|
#include <asm/regdef.h>
|
||||||
|
#else
|
||||||
#include <asm.h>
|
#include <asm.h>
|
||||||
#include <regdef.h>
|
#include <regdef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -76,7 +80,7 @@ bn_mul_mont:
|
|||||||
ldq $aj,8($ap)
|
ldq $aj,8($ap)
|
||||||
subq sp,AT,sp
|
subq sp,AT,sp
|
||||||
ldq $bi,0($bp) # bp[0]
|
ldq $bi,0($bp) # bp[0]
|
||||||
mov -4096,AT
|
lda AT,-4096(zero) # mov -4096,AT
|
||||||
ldq $n0,0($n0)
|
ldq $n0,0($n0)
|
||||||
and sp,AT,sp
|
and sp,AT,sp
|
||||||
|
|
||||||
@ -106,9 +110,9 @@ bn_mul_mont:
|
|||||||
.align 4
|
.align 4
|
||||||
.L1st:
|
.L1st:
|
||||||
.set noreorder
|
.set noreorder
|
||||||
ldq $aj,($aj)
|
ldq $aj,0($aj)
|
||||||
addl $j,1,$j
|
addl $j,1,$j
|
||||||
ldq $nj,($nj)
|
ldq $nj,0($nj)
|
||||||
lda $tp,8($tp)
|
lda $tp,8($tp)
|
||||||
|
|
||||||
addq $alo,$hi0,$lo0
|
addq $alo,$hi0,$lo0
|
||||||
@ -159,12 +163,12 @@ bn_mul_mont:
|
|||||||
.align 4
|
.align 4
|
||||||
.Louter:
|
.Louter:
|
||||||
s8addq $i,$bp,$bi
|
s8addq $i,$bp,$bi
|
||||||
ldq $hi0,($ap)
|
ldq $hi0,0($ap)
|
||||||
ldq $aj,8($ap)
|
ldq $aj,8($ap)
|
||||||
ldq $bi,($bi)
|
ldq $bi,0($bi)
|
||||||
ldq $hi1,($np)
|
ldq $hi1,0($np)
|
||||||
ldq $nj,8($np)
|
ldq $nj,8($np)
|
||||||
ldq $tj,(sp)
|
ldq $tj,0(sp)
|
||||||
|
|
||||||
mulq $hi0,$bi,$lo0
|
mulq $hi0,$bi,$lo0
|
||||||
umulh $hi0,$bi,$hi0
|
umulh $hi0,$bi,$hi0
|
||||||
@ -195,10 +199,10 @@ bn_mul_mont:
|
|||||||
.set noreorder
|
.set noreorder
|
||||||
ldq $tj,8($tp) #L0
|
ldq $tj,8($tp) #L0
|
||||||
nop #U1
|
nop #U1
|
||||||
ldq $aj,($aj) #L1
|
ldq $aj,0($aj) #L1
|
||||||
s8addq $j,$np,$nj #U0
|
s8addq $j,$np,$nj #U0
|
||||||
|
|
||||||
ldq $nj,($nj) #L0
|
ldq $nj,0($nj) #L0
|
||||||
nop #U1
|
nop #U1
|
||||||
addq $alo,$hi0,$lo0 #L1
|
addq $alo,$hi0,$lo0 #L1
|
||||||
lda $tp,8($tp)
|
lda $tp,8($tp)
|
||||||
@ -247,7 +251,7 @@ bn_mul_mont:
|
|||||||
addq $hi1,v0,$hi1
|
addq $hi1,v0,$hi1
|
||||||
|
|
||||||
addq $hi1,$hi0,$lo1
|
addq $hi1,$hi0,$lo1
|
||||||
stq $j,($tp)
|
stq $j,0($tp)
|
||||||
cmpult $lo1,$hi0,$hi1
|
cmpult $lo1,$hi0,$hi1
|
||||||
addq $lo1,$tj,$lo1
|
addq $lo1,$tj,$lo1
|
||||||
cmpult $lo1,$tj,AT
|
cmpult $lo1,$tj,AT
|
||||||
@ -265,8 +269,8 @@ bn_mul_mont:
|
|||||||
mov 0,$hi0 # clear borrow bit
|
mov 0,$hi0 # clear borrow bit
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
.Lsub: ldq $lo0,($tp)
|
.Lsub: ldq $lo0,0($tp)
|
||||||
ldq $lo1,($np)
|
ldq $lo1,0($np)
|
||||||
lda $tp,8($tp)
|
lda $tp,8($tp)
|
||||||
lda $np,8($np)
|
lda $np,8($np)
|
||||||
subq $lo0,$lo1,$lo1 # tp[i]-np[i]
|
subq $lo0,$lo1,$lo1 # tp[i]-np[i]
|
||||||
@ -274,7 +278,7 @@ bn_mul_mont:
|
|||||||
subq $lo1,$hi0,$lo0
|
subq $lo1,$hi0,$lo0
|
||||||
cmpult $lo1,$lo0,$hi0
|
cmpult $lo1,$lo0,$hi0
|
||||||
or $hi0,AT,$hi0
|
or $hi0,AT,$hi0
|
||||||
stq $lo0,($rp)
|
stq $lo0,0($rp)
|
||||||
cmpult $tp,$tj,v0
|
cmpult $tp,$tj,v0
|
||||||
lda $rp,8($rp)
|
lda $rp,8($rp)
|
||||||
bne v0,.Lsub
|
bne v0,.Lsub
|
||||||
@ -288,7 +292,7 @@ bn_mul_mont:
|
|||||||
bis $bp,$ap,$ap # ap=borrow?tp:rp
|
bis $bp,$ap,$ap # ap=borrow?tp:rp
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
.Lcopy: ldq $aj,($ap) # copy or in-place refresh
|
.Lcopy: ldq $aj,0($ap) # copy or in-place refresh
|
||||||
lda $tp,8($tp)
|
lda $tp,8($tp)
|
||||||
lda $rp,8($rp)
|
lda $rp,8($rp)
|
||||||
lda $ap,8($ap)
|
lda $ap,8($ap)
|
||||||
@ -309,8 +313,8 @@ bn_mul_mont:
|
|||||||
lda sp,48(sp)
|
lda sp,48(sp)
|
||||||
ret (ra)
|
ret (ra)
|
||||||
.end bn_mul_mont
|
.end bn_mul_mont
|
||||||
.rdata
|
.ascii "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
|
||||||
.asciiz "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro\@openssl.org>"
|
.align 2
|
||||||
___
|
___
|
||||||
|
|
||||||
print $code;
|
print $code;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user