[Liboil-commit] liboil/liboilcpu-powerpc.c

David Schleef ds at kemper.freedesktop.org
Wed Mar 12 16:07:30 PDT 2008


 liboil/liboilcpu-powerpc.c |   27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

New commits:
commit 72c14f3c8848c4f2f99687493c39e927b082edc3
Author: David Schleef <ds at ginger.bigkitten.com>
Date:   Wed Mar 12 16:09:24 2008 -0700

    Add check for altivec on Darwin

diff --git a/liboil/liboilcpu-powerpc.c b/liboil/liboilcpu-powerpc.c
index 114625b..a0f029f 100644
--- a/liboil/liboilcpu-powerpc.c
+++ b/liboil/liboilcpu-powerpc.c
@@ -66,14 +66,14 @@ test_altivec (void * ignored)
   asm volatile ("vor v0, v0, v0\n");
 }
 
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 void
-oil_check_altivec_sysctl (void)
+oil_check_altivec_sysctl_freebsd (void)
 {
   int ret, av;
   size_t len;
 
-  len = sizeof(enabled);
+  len = sizeof(av);
   ret = sysctlbyname("hw.altivec", &av, &len, NULL, 0);
   if (!ret && av) {
     oil_cpu_flags |= OIL_IMPL_FLAG_ALTIVEC;
@@ -81,6 +81,21 @@ oil_check_altivec_sysctl (void)
 }
 #endif
 
+#if defined(__APPLE__)
+void
+oil_check_altivec_sysctl_darwin (void)
+{
+  int ret, vu;
+  size_t len;
+
+  len = sizeof(vu);
+  ret = sysctlbyname("hw.vectorunit", &vu, &len, NULL, 0);
+  if (!ret && vu) {
+    oil_cpu_flags |= OIL_IMPL_FLAG_ALTIVEC;
+  }
+}
+#endif
+
 void
 oil_check_altivec_fault (void)
 {
@@ -95,8 +110,10 @@ oil_check_altivec_fault (void)
 void
 oil_cpu_detect_arch(void)
 {
-#if defined(__FreeBSD__)
-  oil_check_altivec_sysctl();
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+  oil_check_altivec_sysctl_freebsd();
+#elif defined(__APPLE__)
+  oil_check_altivec_sysctl_darwin();
 #else
   oil_check_altivec_fault();
 #endif


More information about the Liboil-commit mailing list