From 139931bf8c36c58f3e8043c2cb91b852632b395a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 18 Jul 2012 13:06:38 -0700 Subject: [PATCH] Fixed bug 1434 - Add AltiVec detection for OpenBSD/powerpc Brad Smith 2012-02-29 19:31:46 PST The attached patch adds AltiVec detection for OpenBSD/powerpc. Please apply the patch to both 2.0 and 1.2. --- src/cpuinfo/SDL_cpuinfo.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 294b1e4c7..db258405d 100755 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -33,6 +33,10 @@ #endif #if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__)) #include /* For AltiVec check */ +#elif defined(__OpenBSD__) && defined(__powerpc__) +#include +#include /* For AltiVec check */ +#include #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP #include #include @@ -51,7 +55,7 @@ #define CPU_HAS_SSE41 0x00000100 #define CPU_HAS_SSE42 0x00000200 -#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ +#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ /* This is the brute force way of detecting instruction sets... the idea is borrowed from the libmpeg2 library - thanks! */ @@ -214,8 +218,12 @@ static __inline__ int CPU_haveAltiVec(void) { volatile int altivec = 0; -#if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__)) +#if (defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))) || (defined(__OpenBSD__) && defined(__powerpc__)) +#ifdef __OpenBSD__ + int selectors[2] = { CTL_MACHDEP, CPU_ALTIVEC }; +#else int selectors[2] = { CTL_HW, HW_VECTORUNIT }; +#endif int hasVectorUnit = 0; size_t length = sizeof(hasVectorUnit); int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0);