Index: berkeleydb/db-4.2.52.patch =================================================================== RCS file: /cvs/external/berkeleydb/db-4.2.52.patch,v retrieving revision 1.15 diff -u -r1.15 db-4.2.52.patch --- berkeleydb/db-4.2.52.patch 22 Nov 2006 10:35:13 -0000 1.15 +++ berkeleydb/db-4.2.52.patch 6 Dec 2006 00:28:05 -0000 @@ -205,6 +205,21 @@ ! $(SLO)$/dbreg_util.obj ! ! .INCLUDE : target.mk + +*** misc/db-4.2.52.NC/dist/config.hin Wed Dec 3 16:10:00 2003 +--- misc/build/db-4.2.52.NC/dist/config.hin Fri May 19 17:37:41 2006 +*************** +*** 193,198 **** +--- 193,201 ---- + /* Define to 1 to use the GCC compiler and x86 assembly language mutexes. */ + #undef HAVE_MUTEX_X86_GCC_ASSEMBLY + ++ /* Define to 1 to use the GCC compiler and x86-64 assembly language mutexes. */ ++ #undef HAVE_MUTEX_X86_64_GCC_ASSEMBLY ++ + /* Define to 1 if you have the header file, and it defines `DIR'. */ + #undef HAVE_NDIR_H + *** misc/db-4.2.52.NC/dist/configure 2003-12-03 22:10:02.000000000 +0100 --- misc/build/db-4.2.52.NC/dist/configure 2006-05-02 17:06:13.000000000 +0200 *************** @@ -273,6 +288,77 @@ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +*************** +*** 28556,28561 **** +--- 28556,28606 ---- + rm -f conftest.$ac_objext conftest.$ac_ext + fi + ++ # x86_64/gcc: FreeBSD, NetBSD, BSD/OS, Linux ++ if test "$db_cv_mutex" = no; then ++ cat >conftest.$ac_ext <<_ACEOF ++ #line $LINENO "configure" ++ /* confdefs.h. */ ++ _ACEOF ++ cat confdefs.h >>conftest.$ac_ext ++ cat >>conftest.$ac_ext <<_ACEOF ++ /* end confdefs.h. */ ++ ++ int ++ main () ++ { ++ ++ #if (defined(__amd64__) || defined(__x86_64__)) && defined(__GNUC__) ++ exit(0); ++ #else ++ FAIL TO COMPILE/LINK ++ #endif ++ ++ ; ++ return 0; ++ } ++ _ACEOF ++ rm -f conftest.$ac_objext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ db_cv_mutex="x86_64/gcc-assembly" ++ else ++ echo "$as_me: failed program was:" >&5 ++ sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ fi ++ rm -f conftest.$ac_objext conftest.$ac_ext ++ fi ++ + # S390/cc: IBM OS/390 Unix + if test "$db_cv_mutex" = no; then + cat >conftest.$ac_ext <<_ACEOF +*************** +*** 28971,28976 **** +--- 29016,29028 ---- + x86/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS" + cat >>confdefs.h <<\_ACEOF + #define HAVE_MUTEX_X86_GCC_ASSEMBLY 1 ++ _ACEOF ++ ++ ++ ;; ++ x86_64/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS" ++ cat >>confdefs.h <<\_ACEOF ++ #define HAVE_MUTEX_X86_64_GCC_ASSEMBLY 1 + _ACEOF + + + *** misc/db-4.2.52.NC/dist/ltmain.sh 2003-04-26 19:45:37.000000000 +0200 --- misc/build/db-4.2.52.NC/dist/ltmain.sh 2006-05-02 16:55:53.000000000 +0200 *************** @@ -975,3 +1061,39 @@ ! $(SLO)$/xa_map.obj ! ! .INCLUDE : target.mk +*** misc/db-4.2.52.NC/dbinc/mutex.h Sat Sep 20 17:40:49 2003 +--- misc/build/db-4.2.52.NC/dbinc/mutex.h Fri May 19 12:43:58 2006 +*************** +*** 781,786 **** +--- 781,811 ---- + #endif + #endif + ++ /********************************************************************* ++ * x86_64/gcc assembly. ++ *********************************************************************/ ++ #ifdef HAVE_MUTEX_X86_64_GCC_ASSEMBLY ++ typedef unsigned char tsl_t; ++ ++ #ifdef LOAD_ACTUAL_MUTEX_CODE ++ /* ++ * For gcc/x86-64, 0 is clear, 1 is set. ++ */ ++ #define MUTEX_SET(tsl) ({ \ ++ register tsl_t *__l = (tsl); \ ++ int __r; \ ++ asm volatile("movq $1,%%rax; lock; xchgb %1,%%al; xorq $1,%%rax"\ ++ : "=&a" (__r), "=m" (*__l) \ ++ : "1" (*__l) \ ++ ); \ ++ __r & 1; \ ++ }) ++ ++ #define MUTEX_UNSET(tsl) (*(tsl) = 0) ++ #define MUTEX_INIT(tsl) MUTEX_UNSET(tsl) ++ #endif ++ #endif ++ + /* + * Mutex alignment defaults to one byte. + *