From 65aa3a08ed4cf3de8c12933ff101575e3682c015 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Mon, 28 Jun 2010 13:09:32 -0700 Subject: [PATCH] Add support for OpenBSD in CPU detection From Brad . --- orc/orccpu-powerpc.c | 32 ++++++++++++++++++++++++++++++-- orc/orccpu-x86.c | 6 ++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/orc/orccpu-powerpc.c b/orc/orccpu-powerpc.c index 8430055..93c9910 100644 --- a/orc/orccpu-powerpc.c +++ b/orc/orccpu-powerpc.c @@ -50,6 +50,11 @@ #include #endif +#if defined(__OpenBSD__) +#include +#include +#include +#endif /***** powerpc *****/ @@ -63,7 +68,7 @@ orc_profile_stamp_tb(void) } #endif -#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__APPLE__) && !defined(__linux__) +#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) static void test_altivec (void * ignored) { @@ -95,6 +100,27 @@ orc_check_altivec_sysctl_bsd (void) } #endif +#if defined(__OpenBSD__) +static unsigned long +orc_check_altivec_sysctl_openbsd (void) +{ + unsigned long cpu_flags = 0; + int mib[2], ret, vu; + size_t len; + + mib[0] = CTL_MACHDEP; + mib[1] = CPU_ALTIVEC; + + len = sizeof(vu); + ret = sysctl(mib, 2, &vu, &len, NULL, 0); + if (!ret && vu) { + cpu_flags |= ORC_TARGET_ALTIVEC_ALTIVEC; + } + + return cpu_flags; +} +#endif + #if defined(__linux__) static unsigned long orc_check_altivec_proc_auxv (void) @@ -148,7 +174,7 @@ out: } #endif -#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__APPLE__) && !defined(__linux__) +#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) static void orc_check_altivec_fault (void) { @@ -166,6 +192,8 @@ orc_cpu_detect_arch(void) { #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__APPLE__) orc_check_altivec_sysctl_bsd(); +#elif defined(__OpenBSD__) + orc_check_altivec_sysctl_openbsd(); #elif defined(__linux__) orc_check_altivec_proc_auxv(); #else diff --git a/orc/orccpu-x86.c b/orc/orccpu-x86.c index 6af66f4..072156c 100644 --- a/orc/orccpu-x86.c +++ b/orc/orccpu-x86.c @@ -453,10 +453,8 @@ orc_cpu_detect_kernel_support (void) * unmasked SSE FPU exception bug. Other than that, if /proc/cpuinfo * reported SSE, then it's safe. */ -#elif defined(__sun) - /* Solaris is OK */ -#elif defined(__NetBSD__) - /* NetBSD is OK */ +#elif defined(__sun) || defined(__NetBSD__) || defined(__OpenBSD__) + /* Solaris/NetBSD/OpenBSD are OK */ #else ORC_WARNING("Operating system is not known to support SSE. " -- 2.7.4