SPARCv9 assembler pack: refine CPU detection on Linux, fix for "unaligned
[openssl.git] / crypto / sparccpuid.S
index bcf46f209d43f89b5769a7ddb4e79c1e6d0cfa91..1140b5c559b4b844c475da2ce3262e432525ec3a 100644 (file)
@@ -179,7 +179,7 @@ OPENSSL_atomic_add:
        ba      .enter
        nop
 #ifdef __sun
-! Note that you don't have to link with libthread to call thr_yield,
+! Note that you do not have to link with libthread to call thr_yield,
 ! as libc provides a stub, which is overloaded the moment you link
 ! with *either* libpthread or libthread...
 #define        YIELD_CPU       thr_yield
@@ -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: