# HG changeset patch # User Sam Lantinga # Date 1075392912 0 # Node ID 275708f2e838a6fd59bc64873515a05d290a21d9 # Parent a5defa3b93e1464e9e8329f67c46eaf610840bf3 Check for altivec assembly support before trying to use it. :) diff -r a5defa3b93e1 -r 275708f2e838 configure.in --- a/configure.in Thu Jan 29 16:14:09 2004 +0000 +++ b/configure.in Thu Jan 29 16:15:12 2004 +0000 @@ -1723,15 +1723,35 @@ fi } +dnl Check for altivec instruction support using gas syntax +CheckAltivec() +{ + AC_MSG_CHECKING(for GCC Altivec instruction support) + have_gcc_altivec=no + AC_TRY_COMPILE([ + ],[ + asm volatile ("mtspr 256, %0\n\t" + "vand %%v0, %%v0, %%v0" + : + : "r" (-1)); + ],[ + have_gcc_altivec=yes + ]) + if test x$have_gcc_altivec = xyes; then + CFLAGS="$CFLAGS -DGCC_ALTIVEC" + fi + AC_MSG_RESULT($have_gcc_altivec) +} + case "$target" in *-*-linux*|*-*-gnu*|*-*-k*bsd*-gnu) case "$target" in - *-*-linux*) ARCH=linux ;; - *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; - *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; - *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; - *-*-gnu*) ARCH=gnu ;; # must be last - esac + *-*-linux*) ARCH=linux ;; + *-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;; + *-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;; + *-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;; + *-*-gnu*) ARCH=gnu ;; # must be last + esac CheckDummyVideo CheckDiskAudio CheckDLOPEN @@ -1755,6 +1775,7 @@ CheckOpenGL CheckInputEvents CheckPTHREAD + CheckAltivec # Set up files for the main() stub if test "x$video_qtopia" = "xyes"; then SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main" diff -r a5defa3b93e1 -r 275708f2e838 src/cpuinfo/SDL_cpuinfo.c --- a/src/cpuinfo/SDL_cpuinfo.c Thu Jan 29 16:14:09 2004 +0000 +++ b/src/cpuinfo/SDL_cpuinfo.c Thu Jan 29 16:15:12 2004 +0000 @@ -236,7 +236,7 @@ int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0); if( 0 == error ) altivec = (hasVectorUnit != 0); -#elseif defined(USE_SETJMP) && defined(__GNUC__) && defined(__powerpc__) +#elif defined(USE_SETJMP) && defined(GCC_ALTIVEC) void (*handler)(int sig); handler = signal(SIGILL, illegal_instruction); if ( setjmp(jmpbuf) == 0 ) {