Sophie

Sophie

distrib > Mandriva > mes5 > i586 > by-pkgid > 82168e2c9aa72c8b5b258f7319f5caa7 > files > 3

db42-4.2.52-24mdv2009.0.src.rpm

--- db-4.1.25/dbinc/mutex.h.amd64-mutexes	2002-12-19 17:39:08.000000000 +0100
+++ db-4.1.25/dbinc/mutex.h	2003-07-30 15:42:14.000000000 +0200
@@ -690,6 +690,31 @@ typedef unsigned char tsl_t;
 #endif
 #endif
 
+/*********************************************************************
+ * amd64/gcc assembly.
+ *********************************************************************/
+#ifdef HAVE_MUTEX_X86_64_GCC_ASSEMBLY
+typedef unsigned char tsl_t;
+
+#ifdef LOAD_ACTUAL_MUTEX_CODE
+/*
+ * For gcc/amd64, 0 is clear, 1 is set.
+ */
+#define  MUTEX_SET(tsl) ({           \
+	register tsl_t *__l = (tsl);          \
+	int __r;              \
+	asm volatile("mov $1,%%rax; lock; xchgb %1,%%al; xor $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.
  *
--- db-4.1.25/dist/aclocal/mutex.ac.amd64-mutexes	2002-07-31 21:19:20.000000000 +0200
+++ db-4.1.25/dist/aclocal/mutex.ac	2003-07-30 15:45:39.000000000 +0200
@@ -425,6 +425,17 @@ AC_TRY_COMPILE(,[
 ], [db_cv_mutex="S390/gcc-assembly"])
 fi
 
+# AMD64/gcc: FreeBSD, NetBSD, BSD/OS, Linux
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if (defined(x86_64) || defined(__x86_64__)) && defined(__GNUC__)
+	exit(0);
+#else
+	FAIL TO COMPILE/LINK
+#endif
+], [db_cv_mutex="x86_64/gcc-assembly"])
+fi
+
 # ia86/gcc: Linux
 if test "$db_cv_mutex" = no; then
 AC_TRY_COMPILE(,[
@@ -570,6 +580,10 @@ x86/gcc-assembly)	ADDITIONAL_OBJS="mut_t
 			AC_DEFINE(HAVE_MUTEX_X86_GCC_ASSEMBLY)
 			AH_TEMPLATE(HAVE_MUTEX_X86_GCC_ASSEMBLY,
 			    [Define to 1 to use the GCC compiler and x86 assembly language mutexes.]);;
+x86_64/gcc-assembly)	ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+			AC_DEFINE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY)
+			AH_TEMPLATE(HAVE_MUTEX_X86_64_GCC_ASSEMBLY,
+			    [Define to 1 to use the GCC compiler and amd64 assembly language mutexes.]);;
 UNIX/fcntl)		AC_MSG_WARN(
 			    [NO FAST MUTEXES FOUND FOR THIS COMPILER/ARCHITECTURE.])
 			ADDITIONAL_OBJS="mut_fcntl${o} $ADDITIONAL_OBJS"