1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
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 29 Jul 2006 11:01:12 -0000
@@ -518,6 +518,20 @@
emode= 555
fmode= 444
+*** 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/dist/configure Wed Dec 3 22:10:02 2003
--- misc/build/db-4.2.52.NC/dist/configure 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.
+ *
|