$NetBSD: patch-ad,v 1.5 2009/03/22 21:02:17 wiz Exp $ Provide proper detection of altivec on NetBSD/powerpc ports. --- liboil/liboilcpu-powerpc.c.orig 2009-02-26 19:50:42.000000000 +0000 +++ liboil/liboilcpu-powerpc.c @@ -59,6 +59,12 @@ #include #endif +#if defined(__NetBSD__) +#include +#include +#include +#endif + #if defined(__OpenBSD__) #include #include @@ -75,7 +81,7 @@ oil_profile_stamp_tb(void) return ts; } -#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) +#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) && !defined(__NetBSD__) static void test_altivec (void * ignored) { @@ -83,6 +89,21 @@ test_altivec (void * ignored) } #endif +#if defined(__NetBSD__) +static void +oil_check_altivec_sysctl_netbsd (void) +{ + int ret, av; + size_t len; + + len = sizeof(av); + ret = sysctlbyname("machdep.altivec", &av, &len, NULL, 0); + if (!ret && av) { + oil_cpu_flags |= OIL_IMPL_FLAG_ALTIVEC; + } +} +#endif + #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) static void oil_check_altivec_sysctl_freebsd (void) @@ -181,7 +202,7 @@ out: } #endif -#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) +#if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) && !defined(__NetBSD__) static void oil_check_altivec_fault (void) { @@ -199,6 +220,8 @@ oil_cpu_detect_arch(void) { #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) oil_check_altivec_sysctl_freebsd(); +#elif defined(__NetBSD__) + oil_check_altivec_sysctl_netbsd(); #elif defined(__OpenBSD__) oil_check_altivec_sysctl_openbsd(); #elif defined(__APPLE__)