summaryrefslogtreecommitdiff
path: root/crypto/sparccpuid.S
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2005-12-15 22:50:36 +0000
committerAndy Polyakov <appro@openssl.org>2005-12-15 22:50:36 +0000
commitc06b0f3d5e20032e323903f754953fdfe246aa64 (patch)
tree4f445de6598b9c05180d38ccd37f2879ffacb439 /crypto/sparccpuid.S
parent68ea60683a190d3c308e16c59d22b7a7209ae292 (diff)
downloadopenssl-new-c06b0f3d5e20032e323903f754953fdfe246aa64.tar.gz
sparccpuid module update.
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r--crypto/sparccpuid.S36
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