mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 20:10:14 +01:00
util: Support elf_aux_info() on OpenBSD arm and ppc
Signed-off-by: Brad Smith <brad@comstyle.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31102>
This commit is contained in:
parent
8db71c95e1
commit
67333c2632
1 changed files with 15 additions and 15 deletions
|
|
@ -59,7 +59,7 @@
|
||||||
#include <machine/cpu.h>
|
#include <machine/cpu.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DETECT_OS_FREEBSD
|
#if DETECT_OS_FREEBSD || DETECT_OS_OPENBSD
|
||||||
#if __has_include(<sys/auxv.h>)
|
#if __has_include(<sys/auxv.h>)
|
||||||
#include <sys/auxv.h>
|
#include <sys/auxv.h>
|
||||||
#define HAVE_ELF_AUX_INFO
|
#define HAVE_ELF_AUX_INFO
|
||||||
|
|
@ -139,6 +139,18 @@ check_os_altivec_support(void)
|
||||||
#endif
|
#endif
|
||||||
#if defined(__ALTIVEC__) && defined(__VSX__)
|
#if defined(__ALTIVEC__) && defined(__VSX__)
|
||||||
/* Do nothing */
|
/* Do nothing */
|
||||||
|
#elif DETECT_OS_FREEBSD || (DETECT_OS_OPENBSD && HAVE_ELF_AUX_INFO) /* !__ALTIVEC__ || !__VSX__ */
|
||||||
|
unsigned long hwcap = 0;
|
||||||
|
#ifdef HAVE_ELF_AUX_INFO
|
||||||
|
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
|
||||||
|
#elif DETECT_OS_FREEBSD
|
||||||
|
size_t len = sizeof(hwcap);
|
||||||
|
sysctlbyname("hw.cpu_features", &hwcap, &len, NULL, 0);
|
||||||
|
#endif
|
||||||
|
if (hwcap & PPC_FEATURE_HAS_ALTIVEC)
|
||||||
|
util_cpu_caps.has_altivec = 1;
|
||||||
|
if (hwcap & PPC_FEATURE_HAS_VSX)
|
||||||
|
util_cpu_caps.has_vsx = 1;
|
||||||
#elif DETECT_OS_APPLE || DETECT_OS_NETBSD || DETECT_OS_OPENBSD
|
#elif DETECT_OS_APPLE || DETECT_OS_NETBSD || DETECT_OS_OPENBSD
|
||||||
#ifdef HW_VECTORUNIT
|
#ifdef HW_VECTORUNIT
|
||||||
int sels[2] = {CTL_HW, HW_VECTORUNIT};
|
int sels[2] = {CTL_HW, HW_VECTORUNIT};
|
||||||
|
|
@ -156,19 +168,7 @@ check_os_altivec_support(void)
|
||||||
util_cpu_caps.has_altivec = 1;
|
util_cpu_caps.has_altivec = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif DETECT_OS_FREEBSD /* !DETECT_OS_APPLE && !DETECT_OS_NETBSD && !DETECT_OS_OPENBSD */
|
#elif DETECT_OS_LINUX /* !DETECT_OS_APPLE && !DETECT_OS_NETBSD && !DETECT_OS_OPENBSD */
|
||||||
unsigned long hwcap = 0;
|
|
||||||
#ifdef HAVE_ELF_AUX_INFO
|
|
||||||
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
|
|
||||||
#else
|
|
||||||
size_t len = sizeof(hwcap);
|
|
||||||
sysctlbyname("hw.cpu_features", &hwcap, &len, NULL, 0);
|
|
||||||
#endif
|
|
||||||
if (hwcap & PPC_FEATURE_HAS_ALTIVEC)
|
|
||||||
util_cpu_caps.has_altivec = 1;
|
|
||||||
if (hwcap & PPC_FEATURE_HAS_VSX)
|
|
||||||
util_cpu_caps.has_vsx = 1;
|
|
||||||
#elif DETECT_OS_LINUX /* !DETECT_OS_FREEBSD */
|
|
||||||
#if DETECT_ARCH_PPC_64
|
#if DETECT_ARCH_PPC_64
|
||||||
Elf64_auxv_t aux;
|
Elf64_auxv_t aux;
|
||||||
#else
|
#else
|
||||||
|
|
@ -406,7 +406,7 @@ check_os_arm_support(void)
|
||||||
*/
|
*/
|
||||||
#if defined(__ARM_NEON) || defined(__ARM_NEON__)
|
#if defined(__ARM_NEON) || defined(__ARM_NEON__)
|
||||||
util_cpu_caps.has_neon = 1;
|
util_cpu_caps.has_neon = 1;
|
||||||
#elif DETECT_OS_FREEBSD && defined(HAVE_ELF_AUX_INFO)
|
#elif (DETECT_OS_FREEBSD || DETECT_OS_OPENBSD) && defined(HAVE_ELF_AUX_INFO)
|
||||||
unsigned long hwcap = 0;
|
unsigned long hwcap = 0;
|
||||||
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
|
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
|
||||||
if (hwcap & HWCAP_NEON)
|
if (hwcap & HWCAP_NEON)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue