From 1d365aabda5be313283658da39f9cc3f7223de4e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 18 Jul 2012 13:08:19 -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 | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 0cd083896..e4d900fac 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -28,6 +28,10 @@ #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 @@ -42,7 +46,7 @@ #define CPU_HAS_SSE2 0x00000080 #define CPU_HAS_ALTIVEC 0x00000100 -#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! */ @@ -359,8 +363,12 @@ static __inline__ int CPU_haveSSE2(void) static __inline__ int CPU_haveAltiVec(void) { volatile int altivec = 0; -#if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__)) - int selectors[2] = { CTL_HW, HW_VECTORUNIT }; +#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);