Index: berkeleydb/db-4.2.52.patch
===================================================================
RCS file: /cvs/external/berkeleydb/db-4.2.52.patch,v
retrieving revision 1.13
diff -u -r1.13 db-4.2.52.patch
--- berkeleydb/db-4.2.52.patch	25 Jul 2006 10:23:22 -0000	1.13
+++ berkeleydb/db-4.2.52.patch	23 Aug 2006 02:24:30 -0000
@@ -313,6 +313,20 @@
 ! 			$(SLO)$/btree_auto.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 <ndir.h> header file, and it defines `DIR'. */
+  #undef HAVE_NDIR_H
+
 *** misc/db-4.2.52.NC/clib/makefile.mk	Tue Jul 25 09:33:00 2006
 --- misc/build/db-4.2.52.NC/clib/makefile.mk	Tue Jul 25 09:05:20 2006
 ***************
@@ -554,6 +568,76 @@
     fi
   
     # Commands to make compiler produce verbose output that lists
+***************
+*** 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	Sat Apr 26 19:45:37 2003
 --- misc/build/db-4.2.52.NC/dist/ltmain.sh	Tue Jul 25 09:05:20 2006
 ***************
@@ -1010,3 +1094,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.
+   *
