summaryrefslogtreecommitdiff
path: root/crypto/sparccpuid.S
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2007-05-19 17:26:48 +0000
committerAndy Polyakov <appro@openssl.org>2007-05-19 17:26:48 +0000
commitaa5c99fa0182399cdb5e6faad7bdf44c767bcd35 (patch)
treeb48c209e6a0189662dcb6459521a6ba0a26526b7 /crypto/sparccpuid.S
parent9c200f5471b644f4d9d0c8a2c7c7a16c6a75832c (diff)
downloadopenssl-new-aa5c99fa0182399cdb5e6faad7bdf44c767bcd35.tar.gz
sparccpuid.s update.
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r--crypto/sparccpuid.S51
1 files changed, 41 insertions, 10 deletions
diff --git a/crypto/sparccpuid.S b/crypto/sparccpuid.S
index f691abc57f..4691bd72bb 100644
--- a/crypto/sparccpuid.S
+++ b/crypto/sparccpuid.S
@@ -235,7 +235,7 @@ _sparcv9_rdtick:
.global OPENSSL_cleanse
.align 32
OPENSSL_cleanse:
- cmp %o1,6
+ cmp %o1,14
nop
#ifdef ABI64
bgu %xcc,.Lot
@@ -253,23 +253,53 @@ OPENSSL_cleanse:
nop
.align 32
.Lot:
- andcc %o0,3,%g0
- bz .Laligned
+#ifndef ABI64
+ subcc %g0,1,%g1
+ ! see above for explanation
+ .word 0x83408000 !rd %ccr,%g1
+ cmp %g1,0x99
+ bne .v8lot
+ nop
+#endif
+
+.v9lot: andcc %o0,7,%g0
+ bz .v9aligned
+ nop
+ stb %g0,[%o0]
+ sub %o1,1,%o1
+ ba .v9lot
+ add %o0,1,%o0
+.align 16,0x01000000
+.v9aligned:
+ .word 0xc0720000 !stx %g0,[%o0]
+ sub %o1,8,%o1
+ andcc %o1,-8,%g0
+#ifdef ABI64
+ .word 0x126ffffd !bnz %xcc,.v9aligned
+#else
+ .word 0x124ffffd !bnz %icc,.v9aligned
+#endif
+ add %o0,8,%o0
+
+ cmp %o1,0
+ bne .Little
+ nop
+ retl
+ nop
+#ifndef ABI64
+.v8lot: andcc %o0,3,%g0
+ bz .v8aligned
nop
stb %g0,[%o0]
sub %o1,1,%o1
- ba .Lot
+ ba .v8lot
add %o0,1,%o0
nop
-.Laligned:
+.v8aligned:
st %g0,[%o0]
sub %o1,4,%o1
andcc %o1,-4,%g0
-#ifdef ABI64
- bnz %xcc,.Laligned
-#else
- bnz .Laligned
-#endif
+ bnz .v8aligned
add %o0,4,%o0
cmp %o1,0
@@ -277,6 +307,7 @@ OPENSSL_cleanse:
nop
retl
nop
+#endif
.type OPENSSL_cleanse,#function
.size OPENSSL_cleanse,.-OPENSSL_cleanse