diff options
author | Andy Polyakov <appro@openssl.org> | 2005-12-15 22:50:36 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2005-12-15 22:50:36 +0000 |
commit | c06b0f3d5e20032e323903f754953fdfe246aa64 (patch) | |
tree | 4f445de6598b9c05180d38ccd37f2879ffacb439 /crypto/sparccpuid.S | |
parent | 68ea60683a190d3c308e16c59d22b7a7209ae292 (diff) |
sparccpuid module update.
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r-- | crypto/sparccpuid.S | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/crypto/sparccpuid.S b/crypto/sparccpuid.S index c17350fc89..ac57472dd6 100644 --- a/crypto/sparccpuid.S +++ b/crypto/sparccpuid.S @@ -34,7 +34,8 @@ OPENSSL_wipe_cpu: nop call .PIC.zero.up mov .zero-(.-4),%o0 - ldd [%o0],%f0 + ld [%o0],%f0 + ld [%o0],%f1 subcc %g0,1,%o0 ! Following is V9 "rd %ccr,%o0" instruction. However! V8 @@ -166,6 +167,7 @@ walk_reg_wins: .global OPENSSL_atomic_add .type OPENSSL_atomic_add,#function +.align 32 OPENSSL_atomic_add: #ifndef ABI64 subcc %g0,1,%o2 @@ -213,27 +215,23 @@ OPENSSL_atomic_add: sra %o0,%g0,%o0 ! we return signed int, remember? .size OPENSSL_atomic_add,.-OPENSSL_atomic_add -.global OPENSSL_rdtsc +.global OPENSSL_rdtick +.align 32 +OPENSSL_rdtick: subcc %g0,1,%o0 .word 0x91408000 !rd %ccr,%o0 cmp %o0,0x99 - bne .notsc + bne .notick xor %o0,%o0,%o0 - save %sp,FRAME-16,%sp - mov 513,%o0 !SI_PLATFORM - add %sp,BIAS+16,%o1 - call sysinfo - mov 256,%o2 - - add %sp,BIAS-16,%o1 - ld [%o1],%l0 - ld [%o1+4],%l1 - ld [%o1+8],%l2 - mov %lo('SUNW'),%l3 - ret - restore -.notsc: + .word 0x91410000 !rd %tick,%o0 + retl + .word 0x93323020 !srlx %o2,32,%o1 +.notick: retl + xor %o1,%o1,%o1 +.type OPENSSL_rdtick,#function +.size OPENSSL_rdtick,.-OPENSSL_rdtick + +.section ".init",#alloc,#execinstr + call OPENSSL_cpuid_setup nop -.type OPENSSL_rdtsc,#function -.size OPENSSL_rdtsc,.-OPENSSL_atomic_add |