crypto/sha/asm/sha[1|512]-mips.pl: minor updates.
This commit is contained in:
parent
a908b711ac
commit
5a0876cb8c
@ -59,7 +59,6 @@ if ($flavour =~ /64|n32/i) {
|
|||||||
$PTR_SLL="sll";
|
$PTR_SLL="sll";
|
||||||
$SZREG=4;
|
$SZREG=4;
|
||||||
}
|
}
|
||||||
$SAVED_REGS_MASK = ($flavour =~ /nubi/i) ? 0x00fff008 : 0x00ff0000;
|
|
||||||
#
|
#
|
||||||
# <appro@openssl.org>
|
# <appro@openssl.org>
|
||||||
#
|
#
|
||||||
@ -77,11 +76,11 @@ if (!defined($big_endian))
|
|||||||
$MSB=$big_endian?0:3;
|
$MSB=$big_endian?0:3;
|
||||||
$LSB=3&~$MSB;
|
$LSB=3&~$MSB;
|
||||||
|
|
||||||
@X=( "\$8", "\$9", "\$10", "\$11", "\$12", "\$13", "\$14", "\$15",
|
@X=map("\$$_",(8..23)); # a4-a7,s0-s11
|
||||||
"\$16", "\$17", "\$18", "\$19", "\$20", "\$21", "\$22", "\$23");
|
|
||||||
$ctx="\$4"; # a0
|
$ctx=$a0;
|
||||||
$inp="\$5"; # a1
|
$inp=$a1;
|
||||||
$num="\$6"; # a2
|
$num=$a2;
|
||||||
$A="\$1";
|
$A="\$1";
|
||||||
$B="\$2";
|
$B="\$2";
|
||||||
$C="\$3";
|
$C="\$3";
|
||||||
@ -92,8 +91,6 @@ $t1=$num; # $num is offloaded to stack
|
|||||||
$t2="\$30"; # fp
|
$t2="\$30"; # fp
|
||||||
$K="\$31"; # ra
|
$K="\$31"; # ra
|
||||||
|
|
||||||
$FRAMESIZE=16;
|
|
||||||
|
|
||||||
sub BODY_00_14 {
|
sub BODY_00_14 {
|
||||||
my ($i,$a,$b,$c,$d,$e)=@_;
|
my ($i,$a,$b,$c,$d,$e)=@_;
|
||||||
my $j=$i+1;
|
my $j=$i+1;
|
||||||
@ -105,8 +102,8 @@ $code.=<<___ if (!$big_endian);
|
|||||||
andi $t1,0xFF00
|
andi $t1,0xFF00
|
||||||
sll $t2,$t2,8
|
sll $t2,$t2,8
|
||||||
or @X[$i],$t0
|
or @X[$i],$t0
|
||||||
|
or $t1,$t2
|
||||||
or @X[$i],$t1
|
or @X[$i],$t1
|
||||||
or @X[$i],$t2
|
|
||||||
___
|
___
|
||||||
$code.=<<___;
|
$code.=<<___;
|
||||||
lwl @X[$j],$j*4+$MSB($inp)
|
lwl @X[$j],$j*4+$MSB($inp)
|
||||||
@ -236,6 +233,9 @@ $code.=<<___ if ($i<79);
|
|||||||
___
|
___
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$FRAMESIZE=16; # large enough to accomodate NUBI saved registers
|
||||||
|
$SAVED_REGS_MASK = ($flavour =~ /nubi/i) ? 0xc0fff008 : 0xc0ff0000;
|
||||||
|
|
||||||
$code=<<___;
|
$code=<<___;
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ $code=<<___;
|
|||||||
.ent sha1_block_data_order
|
.ent sha1_block_data_order
|
||||||
sha1_block_data_order:
|
sha1_block_data_order:
|
||||||
.frame $sp,$FRAMESIZE*$SZREG,$ra
|
.frame $sp,$FRAMESIZE*$SZREG,$ra
|
||||||
.mask 0xd0000000|$SAVED_REGS_MASK,-$SZREG
|
.mask $SAVED_REGS_MASK,-$SZREG
|
||||||
.set noreorder
|
.set noreorder
|
||||||
$PTR_SUB $sp,$FRAMESIZE*$SZREG
|
$PTR_SUB $sp,$FRAMESIZE*$SZREG
|
||||||
$REG_S $ra,($FRAMESIZE-1)*$SZREG($sp)
|
$REG_S $ra,($FRAMESIZE-1)*$SZREG($sp)
|
||||||
@ -260,7 +260,7 @@ sha1_block_data_order:
|
|||||||
$REG_S $s5,($FRAMESIZE-9)*$SZREG($sp)
|
$REG_S $s5,($FRAMESIZE-9)*$SZREG($sp)
|
||||||
$REG_S $s4,($FRAMESIZE-10)*$SZREG($sp)
|
$REG_S $s4,($FRAMESIZE-10)*$SZREG($sp)
|
||||||
___
|
___
|
||||||
$code.=<<___ if ($flavour =~ /nubi/i);
|
$code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi prologue
|
||||||
$REG_S $s3,($FRAMESIZE-11)*$SZREG($sp)
|
$REG_S $s3,($FRAMESIZE-11)*$SZREG($sp)
|
||||||
$REG_S $s2,($FRAMESIZE-12)*$SZREG($sp)
|
$REG_S $s2,($FRAMESIZE-12)*$SZREG($sp)
|
||||||
$REG_S $s1,($FRAMESIZE-13)*$SZREG($sp)
|
$REG_S $s1,($FRAMESIZE-13)*$SZREG($sp)
|
||||||
|
@ -314,12 +314,15 @@ for (;$i<32;$i++)
|
|||||||
$code.=<<___;
|
$code.=<<___;
|
||||||
and @X[6],0xfff
|
and @X[6],0xfff
|
||||||
li @X[7],$lastK
|
li @X[7],$lastK
|
||||||
$PTR_ADD $Ktbl,16*$SZ # Ktbl+=16
|
.set noreorder
|
||||||
bne @X[6],@X[7],.L16_xx
|
bne @X[6],@X[7],.L16_xx
|
||||||
|
$PTR_ADD $Ktbl,16*$SZ # Ktbl+=16
|
||||||
|
|
||||||
|
$REG_L @X[15],16*$SZ($sp) # restore pointer to the end of input
|
||||||
$LD @X[0],0*$SZ($ctx)
|
$LD @X[0],0*$SZ($ctx)
|
||||||
$LD @X[1],1*$SZ($ctx)
|
$LD @X[1],1*$SZ($ctx)
|
||||||
$LD @X[2],2*$SZ($ctx)
|
$LD @X[2],2*$SZ($ctx)
|
||||||
|
$PTR_ADD $inp,16*$SZ
|
||||||
$LD @X[3],3*$SZ($ctx)
|
$LD @X[3],3*$SZ($ctx)
|
||||||
$ADDU $A,@X[0]
|
$ADDU $A,@X[0]
|
||||||
$LD @X[4],4*$SZ($ctx)
|
$LD @X[4],4*$SZ($ctx)
|
||||||
@ -337,17 +340,14 @@ $code.=<<___;
|
|||||||
$ST $C,2*$SZ($ctx)
|
$ST $C,2*$SZ($ctx)
|
||||||
$ADDU $H,@X[7]
|
$ADDU $H,@X[7]
|
||||||
$ST $D,3*$SZ($ctx)
|
$ST $D,3*$SZ($ctx)
|
||||||
$PTR_ADD $inp,16*$SZ
|
|
||||||
$ST $E,4*$SZ($ctx)
|
$ST $E,4*$SZ($ctx)
|
||||||
$REG_L @X[15],16*$SZ($sp) # restore pointer to the end of input
|
|
||||||
$ST $F,5*$SZ($ctx)
|
$ST $F,5*$SZ($ctx)
|
||||||
$ST $G,6*$SZ($ctx)
|
$ST $G,6*$SZ($ctx)
|
||||||
$ST $H,7*$SZ($ctx)
|
$ST $H,7*$SZ($ctx)
|
||||||
|
|
||||||
|
bnel $inp,@X[15],.Loop
|
||||||
$PTR_SUB $Ktbl,`($rounds-16)*$SZ` # rewind $Ktbl
|
$PTR_SUB $Ktbl,`($rounds-16)*$SZ` # rewind $Ktbl
|
||||||
bne $inp,@X[15],.Loop
|
|
||||||
|
|
||||||
.set noreorder
|
|
||||||
$REG_L $ra,$FRAMESIZE-1*$SZREG($sp)
|
$REG_L $ra,$FRAMESIZE-1*$SZREG($sp)
|
||||||
$REG_L $fp,$FRAMESIZE-2*$SZREG($sp)
|
$REG_L $fp,$FRAMESIZE-2*$SZREG($sp)
|
||||||
$REG_L $s11,$FRAMESIZE-3*$SZREG($sp)
|
$REG_L $s11,$FRAMESIZE-3*$SZREG($sp)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user