Changeset View
Changeset View
Standalone View
Standalone View
crypto/openssl/crypto/ppccap.c
Show First 20 Lines • Show All 233 Lines • ▼ Show 20 Lines | if (elf_aux_info((int)key, &val, sizeof(val)) != 0) | ||||
return 0ul; | return 0ul; | ||||
return val; | return val; | ||||
} | } | ||||
# endif | # endif | ||||
#endif | #endif | ||||
/* I wish <sys/auxv.h> was universally available */ | /* I wish <sys/auxv.h> was universally available */ | ||||
#define HWCAP 16 /* AT_HWCAP */ | #ifndef AT_HWCAP | ||||
# define AT_HWCAP 16 /* AT_HWCAP */ | |||||
#endif | |||||
#define HWCAP_PPC64 (1U << 30) | #define HWCAP_PPC64 (1U << 30) | ||||
#define HWCAP_ALTIVEC (1U << 28) | #define HWCAP_ALTIVEC (1U << 28) | ||||
#define HWCAP_FPU (1U << 27) | #define HWCAP_FPU (1U << 27) | ||||
#define HWCAP_POWER6_EXT (1U << 9) | #define HWCAP_POWER6_EXT (1U << 9) | ||||
#define HWCAP_VSX (1U << 7) | #define HWCAP_VSX (1U << 7) | ||||
#define HWCAP2 26 /* AT_HWCAP2 */ | #ifndef AT_HWCAP2 | ||||
# define AT_HWCAP2 26 /* AT_HWCAP2 */ | |||||
#endif | |||||
#define HWCAP_VEC_CRYPTO (1U << 25) | #define HWCAP_VEC_CRYPTO (1U << 25) | ||||
#define HWCAP_ARCH_3_00 (1U << 23) | #define HWCAP_ARCH_3_00 (1U << 23) | ||||
# if defined(__GNUC__) && __GNUC__>=2 | # if defined(__GNUC__) && __GNUC__>=2 | ||||
__attribute__ ((constructor)) | __attribute__ ((constructor)) | ||||
# endif | # endif | ||||
void OPENSSL_cpuid_setup(void) | void OPENSSL_cpuid_setup(void) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | OPENSSL_ppccap_P |= PPC_FPU; | ||||
} | } | ||||
return; | return; | ||||
} | } | ||||
#endif | #endif | ||||
#ifdef OSSL_IMPLEMENT_GETAUXVAL | #ifdef OSSL_IMPLEMENT_GETAUXVAL | ||||
{ | { | ||||
unsigned long hwcap = getauxval(HWCAP); | unsigned long hwcap = getauxval(AT_HWCAP); | ||||
unsigned long hwcap2 = getauxval(HWCAP2); | unsigned long hwcap2 = getauxval(AT_HWCAP2); | ||||
if (hwcap & HWCAP_FPU) { | if (hwcap & HWCAP_FPU) { | ||||
OPENSSL_ppccap_P |= PPC_FPU; | OPENSSL_ppccap_P |= PPC_FPU; | ||||
if (sizeof(size_t) == 4) { | if (sizeof(size_t) == 4) { | ||||
/* In 32-bit case PPC_FPU64 is always fastest [if option] */ | /* In 32-bit case PPC_FPU64 is always fastest [if option] */ | ||||
if (hwcap & HWCAP_PPC64) | if (hwcap & HWCAP_PPC64) | ||||
OPENSSL_ppccap_P |= PPC_FPU64; | OPENSSL_ppccap_P |= PPC_FPU64; | ||||
▲ Show 20 Lines • Show All 84 Lines • Show Last 20 Lines |