diff options
author | Andy Polyakov <appro@openssl.org> | 2007-05-19 17:26:48 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2007-05-19 17:26:48 +0000 |
commit | aa5c99fa0182399cdb5e6faad7bdf44c767bcd35 (patch) | |
tree | b48c209e6a0189662dcb6459521a6ba0a26526b7 /crypto/sparccpuid.S | |
parent | 9c200f5471b644f4d9d0c8a2c7c7a16c6a75832c (diff) | |
download | openssl-new-aa5c99fa0182399cdb5e6faad7bdf44c767bcd35.tar.gz |
sparccpuid.s update.
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r-- | crypto/sparccpuid.S | 51 |
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 |