summaryrefslogtreecommitdiffstats
path: root/crypto/sparccpuid.S
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2010-07-01 07:34:56 +0000
committerAndy Polyakov <appro@openssl.org>2010-07-01 07:34:56 +0000
commitc32fcca6f4cf7d382905b26c8d6402de032f947e (patch)
tree530f3fa6c44385f70e6fa32d6017934ed584de41 /crypto/sparccpuid.S
parent9674de7d3d09a0280961de5648a44ef9b029d64b (diff)
SPARCv9 assembler pack: refine CPU detection on Linux, fix for "unaligned
opcodes detected in executable segment" error.
Diffstat (limited to 'crypto/sparccpuid.S')
-rw-r--r--crypto/sparccpuid.S22
1 files changed, 21 insertions, 1 deletions
diff --git a/crypto/sparccpuid.S b/crypto/sparccpuid.S
index aa8b11efc9..1140b5c559 100644
--- a/crypto/sparccpuid.S
+++ b/crypto/sparccpuid.S
@@ -225,13 +225,33 @@ _sparcv9_rdtick:
xor %o0,%o0,%o0
.word 0x91410000 !rd %tick,%o0
retl
- .word 0x93323020 !srlx %o2,32,%o1
+ .word 0x93323020 !srlx %o0,32,%o1
.notick:
retl
xor %o1,%o1,%o1
.type _sparcv9_rdtick,#function
.size _sparcv9_rdtick,.-_sparcv9_rdtick
+.global _sparcv9_rdwrasi
+.align 8
+_sparcv9_rdwrasi:
+ .word 0x9340c000 !rd %asi,%o1
+ .word 0x87820000 !wr %o0,%g0,%asi
+ retl
+ mov %o1,%o0
+.type _sparcv9_rdwrasi,#function
+.size _sparcv9_rdwrasi,.-_sparcv9_rdwrasi
+
+.global _sparcv9_vis1_probe
+.align 8
+_sparcv9_vis1_probe:
+ .word 0x81b00c20 !fzeros %f0
+ .word 0xc19ba002+BIAS !ldda [%sp+BIAS+2]%asi,%f0
+ retl
+ nop
+.type _sparcv9_vis1_probe,#function
+.size _sparcv9_vis1_probe,.-_sparcv9_vis1_probe
+
.global OPENSSL_cleanse
.align 32
OPENSSL_cleanse: