From: Andy Polyakov Date: Sun, 27 Dec 2009 21:05:19 +0000 (+0000) Subject: Update sha512-parisc.pl and add make rules. X-Git-Tag: OpenSSL-fips-2_0-rc1~1383 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b57599b70c8be6523f38d32d9c96ff466fb01679;p=openssl Update sha512-parisc.pl and add make rules. --- diff --git a/crypto/sha/Makefile b/crypto/sha/Makefile index e6eccb05f9..e7130b5ffb 100644 --- a/crypto/sha/Makefile +++ b/crypto/sha/Makefile @@ -71,6 +71,10 @@ sha1-ppc.s: asm/sha1-ppc.pl; $(PERL) asm/sha1-ppc.pl $(PERLASM_SCHEME) $@ sha256-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@ sha512-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@ +sha1-parisc.s: asm/sha1-parisc.pl; $(PERL) asm/sha1-parisc.pl $(PERLASM_SCHEME) $@ +sha256-parisc.s:asm/sha512-parisc.pl; $(PERL) asm/sha512-parisc.pl $(PERLASM_SCHEME) $@ +sha512-parisc.s:asm/sha512-parisc.pl; $(PERL) asm/sha512-parisc.pl $(PERLASM_SCHEME) $@ + # GNU make "catch all" sha1-%.s: asm/sha1-%.pl; $(PERL) $< $@ sha256-%.s: asm/sha512-%.pl; $(PERL) $< $@ diff --git a/crypto/sha/asm/sha512-parisc.pl b/crypto/sha/asm/sha512-parisc.pl index da1282a076..9ccbdaaf82 100755 --- a/crypto/sha/asm/sha512-parisc.pl +++ b/crypto/sha/asm/sha512-parisc.pl @@ -391,7 +391,7 @@ $code.=<<___; shd $elo,$ehi,$Sigma1[0],$t1 addc $Xhi,$hhi,$hhi ; h += X[i] shd $ehi,$elo,$Sigma1[1],$t2 - ldw,ma 8($Tbl),$Xhi + ldwm 8($Tbl),$Xhi shd $elo,$ehi,$Sigma1[1],$t3 ldw -4($Tbl),$Xlo ; load K[i] xor $t2,$t0,$t0 @@ -694,9 +694,10 @@ my $ldd = sub { my ($mod,$args) = @_; my $orig = "ldd$mod\t$args"; - if ($args =~ /([0-9]+)\(%r([0-9]+)\),%r([0-9]+)/) # format 3 suffices - { my $opcode=(0x14<<26)|($2<<21)|($3<<16)|($1<<1); - $opcode|=0x8 if ($mod eq ",ma"); + if ($args =~ /(\-[0-9]+)\(%r([0-9]+)\),%r([0-9]+)/) # format 3 suffices + { my $opcode=(0x14<<26)|($2<<21)|($3<<16)|(($1&0x1FF8)<<1)|(($1>>13)&1); + $opcode|=(1<<3) if ($mod =~ /^,m/); + $opcode|=(1<<2) if ($mod =~ /^,mb/); sprintf "\t.WORD\t0x%08x\t; %s",$opcode,$orig; } else { "\t".$orig; } @@ -706,9 +707,9 @@ my $std = sub { my ($mod,$args) = @_; my $orig = "std$mod\t$args"; - if ($args =~ /%r([0-9]+),([0-9]+)\(%r([0-9]+)\)/) # format 3 suffices - { sprintf "\t.WORD\t0x%08x\t; %s", - (0x1c<<26)|($3<<21)|($1<<16)|($2<<1),$orig; + if ($args =~ /%r([0-9]+),(\-[0-9]+)\(%r([0-9]+)\)/) # format 3 suffices + { my $opcode=(0x1c<<26)|($3<<21)|($1<<16)|(($2&0x1FF8)<<1)|(($2>>13)&1); + sprintf "\t.WORD\t0x%08x\t; %s",$opcode,$orig; } else { "\t".$orig; } };