[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