summaryrefslogtreecommitdiffstats
path: root/crypto/sha/asm/sha1-ppc.pl
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2006-06-05 09:35:50 +0000
committerAndy Polyakov <appro@openssl.org>2006-06-05 09:35:50 +0000
commit4dca00cec8be66dc12c8652a5b456dcc9e692f62 (patch)
treebe27f4976b2e5235586e158381f4b1a026ead6ac /crypto/sha/asm/sha1-ppc.pl
parent061d774b998ec4638ccbc5a0d3372b39dd2c65a5 (diff)
Minor sha1-ppc.pl update.
Diffstat (limited to 'crypto/sha/asm/sha1-ppc.pl')
-rwxr-xr-xcrypto/sha/asm/sha1-ppc.pl23
1 files changed, 11 insertions, 12 deletions
diff --git a/crypto/sha/asm/sha1-ppc.pl b/crypto/sha/asm/sha1-ppc.pl
index 3aa9655a82..704887b7ab 100755
--- a/crypto/sha/asm/sha1-ppc.pl
+++ b/crypto/sha/asm/sha1-ppc.pl
@@ -6,27 +6,28 @@
# forms are granted according to the OpenSSL license.
# ====================================================================
-# I let hardware handle unaligned input, except on page boundaries
+# I let hardware handle unaligned input(*), except on page boundaries
# (see below for details). Otherwise straightforward implementation
# with X vector in register bank. The module is big-endian [which is
# not big deal as there're no little-endian targets left around].
+#
+# (*) this means that this module is inappropriate for PPC403? Does
+# anybody know if pre-POWER3 can sustain unaligned load?
-# gcc-4.0.0 -m64 -m32
-# --------------------------
-# sha1 +76% +59%
+# -m64 -m32
+# ----------------------------------
+# PPC970,gcc-4.0.0 +76% +59%
$output = shift;
if ($output =~ /64\.s/) {
$SIZE_T =8;
- $RZONE =288;
$UCMP ="cmpld";
$STU ="stdu";
$POP ="ld";
$PUSH ="std";
} elsif ($output =~ /32\.s/) {
$SIZE_T =4;
- $RZONE =224;
$UCMP ="cmplw";
$STU ="stwu";
$POP ="lwz";
@@ -149,14 +150,13 @@ ___
}
$code=<<___;
-.machine "any"
.text
.globl .sha1_block_asm_data_order
.align 4
.sha1_block_asm_data_order:
mflr r0
- $STU $sp,`-($FRAME+64+$RZONE)`($sp)
+ $STU $sp,`-($FRAME+64)`($sp)
$PUSH r0,`$FRAME-$SIZE_T*18`($sp)
$PUSH r15,`$FRAME-$SIZE_T*17`($sp)
$PUSH r16,`$FRAME-$SIZE_T*16`($sp)
@@ -205,7 +205,7 @@ Ldone:
$POP r30,`$FRAME-$SIZE_T*2`($sp)
$POP r31,`$FRAME-$SIZE_T*1`($sp)
mtlr r0
- addi $sp,$sp,`$FRAME+64+$RZONE`
+ addi $sp,$sp,`$FRAME+64`
blr
___
@@ -218,15 +218,14 @@ ___
$code.=<<___;
.align 4
Lunaligned:
- li $t1,4096
- subf $t1,$inp,$t1
+ subfic $t1,$inp,4096
andi. $t1,$t1,4095 ; distance to closest page boundary
srwi. $t1,$t1,6 ; t1/=64
beq Lcross_page
$UCMP $num,$t1
ble- Laligned ; didn't cross the page boundary
mtctr $t1
- subf $num,$t1,$num
+ subfc $num,$t1,$num
bl Lsha1_block_private
Lcross_page:
li $t1,16