aboutsummaryrefslogtreecommitdiffstats
path: root/databases/db18/files/patch-src_dbinc_mutex__int.h
blob: 7f85db3b67eb2b7064136225cd18c9b9ad9b88ad (plain) (blame)
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
--- src/dbinc/mutex_int.h.orig	2016-03-28 19:45:54 UTC
+++ src/dbinc/mutex_int.h
@@ -9,6 +9,7 @@
 #ifndef _DB_MUTEX_INT_H_
 #define	_DB_MUTEX_INT_H_
 
+#include <machine/atomic.h>
 #include "dbinc/atomic.h"
 
 #if defined(__cplusplus)
@@ -506,11 +507,11 @@ typedef unsigned int tsl_t;
 #define	MUTEX_UNSET(tsl)	(*(volatile tsl_t *)(tsl) = 0)
 #define	MUTEX_INIT(tsl)         (MUTEX_UNSET(tsl), 0)
 #define	MUTEX_MEMBAR(x) \
-	({ __asm__ volatile ("dsb"); })
+	dsb(x)
 #define	MEMBAR_ENTER() \
-	({ __asm__ volatile ("dsb"); })
+	dsb()
 #define	MEMBAR_EXIT() \
-	({ __asm__ volatile ("dsb"); })
+	dsb()
 #endif
 #endif
 
@@ -652,7 +652,7 @@ MUTEX_SET(int *tsl)  {
 	 : "=&r" (__r), "+r" (tsl)
 	 :
 	 : "cr0", "memory");
-	 return (int)tsl;
+	 return (tsl != 0);
 }
 
 static inline int