.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
+ add %sp,BIAS+2,%o0
retl
- nop
+ .word 0xc19a1a40 !ldda [%o0]ASI_FP16_P,%f0
.type _sparcv9_vis1_probe,#function
.size _sparcv9_vis1_probe,.-_sparcv9_vis1_probe
}
unsigned long _sparcv9_rdtick(void);
-unsigned long _sparcv9_rdwrasi(unsigned long);
void _sparcv9_vis1_probe(void);
unsigned long OPENSSL_rdtsc(void)
char *e;
struct sigaction common_act,ill_oact,bus_oact;
sigset_t all_masked,oset;
- unsigned long oasi;
int sig;
if ((e=getenv("OPENSSL_sparcv9cap")))
sigaction(SIGILL,&common_act,&ill_oact);
sigaction(SIGBUS,&common_act,&bus_oact);/* T1 fails 16-bit ldda */
- oasi = _sparcv9_rdwrasi(0xD2); /* ASI_FL16_P */
if ((sig=sigsetjmp(common_jmp,0)) == 0)
{
_sparcv9_vis1_probe();
{
OPENSSL_sparcv9cap_P &= ~SPARCV9_VIS1;
}
- _sparcv9_rdwrasi(oasi);
sigaction(SIGBUS,&bus_oact,NULL);
sigaction(SIGILL,&ill_oact,NULL);