--- configure.ac.orig 2007-10-08 00:19:25.000000000 -0500 +++ configure.ac 2007-10-08 00:42:19.000000000 -0500 @@ -219,8 +219,20 @@ dnl ---------------------------------------------------------------------- - -if test "$target_cpu" = "powerpc"; then + +if test "$target_cpu" = "powerpc64" ; then + + AC_ARG_ENABLE(cell, + [ --enable-cell enable Cell BE support (default=no)],, + [ enable_cell=no ]) + + if test "x$enable_cell" = xyes; then + AC_DEFINE(ENABLE_CELLBE, 1, [Define to 1 if you need support for the Cell BE.]) + fi + +fi + +if test "$target_cpu" = "powerpc" -o "$target_cpu" = "powerpc64" ; then AC_DEFINE(POWERPC, 1, "Are we running a ppc CPU?") @@ -252,6 +262,9 @@ dnl -mcpu=7450 does not reliably work with gcc 3.* JACK_OPT_CFLAGS="-D_REENTRANT -mcpu=7400 $ALTIVEC_OPT_FLAGS_FLAGS -mhard-float -mpowerpc-gfxopt" + if test "$target_cpu" = "powerpc64"; then + JACK_OPT_CFLAGS="-D_REENTRANT -O2 -mcpu=powerpc64 $ALTIVEC_OPT_FLAGS -mhard-float" + fi elif echo $target_cpu | egrep '(i.86|x86_64)' >/dev/null; then --- config/cpu/powerpc/cycles.h.orig 2006-05-25 21:45:16.000000000 -0500 +++ config/cpu/powerpc/cycles.h 2007-10-08 00:49:03.000000000 -0500 @@ -25,6 +25,9 @@ /* PowerPC */ #define CPU_FTR_601 0x00000100 +#ifdef __powerpc64__ +#define CPU_FTR_CELL_TB_BUG 0x0000800000000000UL +#endif /* __powerpc64__ */ typedef unsigned long cycles_t; @@ -36,6 +39,27 @@ { cycles_t ret = 0; +#ifdef __powerpc64__ +#ifdef ENABLE_CELLBE + __asm__ __volatile__( \ + "90: mftb %0;\n" \ + "97: cmpwi %0,0;\n" \ + " beq- 90b;\n" \ + "99:\n" \ + ".section __ftr_fixup,\"a\"\n" \ + ".align 3\n" \ + "98:\n" \ + " .llong %1\n" \ + " .llong %1\n" \ + " .llong 97b-98b\n" \ + " .llong 99b-98b\n" \ + ".previous" \ + : "=r" (ret) : "i" (CPU_FTR_CELL_TB_BUG)); + +#else /* !ENABLE_CELLBE */ + __asm__ __volatile__("mftb %0" : "=r" (ret)); +#endif /* !ENABLE_CELLBE */ +#else __asm__ __volatile__( "98: mftb %0\n" "99:\n" @@ -46,6 +70,7 @@ " .long 99b\n" ".previous" : "=r" (ret) : "i" (CPU_FTR_601)); +#endif /* !__powerpc64__ */ return ret; }