Make some shortcuts in sparcv9cap.c. Trouble is that di_walk_node result
is inconsistent among CPU generations.
This commit is contained in:
parent
2329694222
commit
f3c26535ad
@ -41,6 +41,7 @@ unsigned long OPENSSL_rdtsc(void)
|
|||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <libdevinfo.h>
|
#include <libdevinfo.h>
|
||||||
|
#include <sys/systeminfo.h>
|
||||||
|
|
||||||
typedef di_node_t (*di_init_t)(const char *,uint_t);
|
typedef di_node_t (*di_init_t)(const char *,uint_t);
|
||||||
typedef void (*di_fini_t)(di_node_t);
|
typedef void (*di_fini_t)(di_node_t);
|
||||||
@ -79,7 +80,7 @@ static int walk_nodename(di_node_t node, di_node_name_t di_node_name)
|
|||||||
void OPENSSL_cpuid_setup(void)
|
void OPENSSL_cpuid_setup(void)
|
||||||
{
|
{
|
||||||
void *h;
|
void *h;
|
||||||
char *e;
|
char *e,si[256];
|
||||||
static int trigger=0;
|
static int trigger=0;
|
||||||
|
|
||||||
if (trigger) return;
|
if (trigger) return;
|
||||||
@ -91,6 +92,25 @@ void OPENSSL_cpuid_setup(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sysinfo(SI_MACHINE,si,sizeof(si))>0)
|
||||||
|
{
|
||||||
|
if (strcmp(si,"sun4v"))
|
||||||
|
/* FPU is preferred for all CPUs, but US-T1/2 */
|
||||||
|
OPENSSL_sparcv9cap_P |= SPARCV9_PREFER_FPU;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sysinfo(SI_ISALIST,si,sizeof(si))>0)
|
||||||
|
{
|
||||||
|
if (strstr(si,"+vis"))
|
||||||
|
OPENSSL_sparcv9cap_P |= SPARCV9_VIS1;
|
||||||
|
if (strstr(si,"+vis2"))
|
||||||
|
{
|
||||||
|
OPENSSL_sparcv9cap_P |= SPARCV9_VIS2;
|
||||||
|
OPENSSL_sparcv9cap_P &= ~SPARCV9_TICK_PRIVILEGED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((h = dlopen("libdevinfo.so.1",RTLD_LAZY))) do
|
if ((h = dlopen("libdevinfo.so.1",RTLD_LAZY))) do
|
||||||
{
|
{
|
||||||
di_init_t di_init;
|
di_init_t di_init;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user