View | Details | Raw Unified | Return to bug 213223 | Differences between
and this patch

Collapse All | Expand All

(-)files/patch-src_dbinc_mutex__int.h (+32 lines)
Lines 1-5 Link Here
1
--- src/dbinc/mutex_int.h.orig	2016-03-28 19:45:54 UTC
1
--- src/dbinc/mutex_int.h.orig	2016-03-28 19:45:54 UTC
2
+++ src/dbinc/mutex_int.h
2
+++ src/dbinc/mutex_int.h
3
@@ -505,13 +505,25 @@ typedef unsigned int tsl_t;
4
 
5
 #define	MUTEX_UNSET(tsl)	(*(volatile tsl_t *)(tsl) = 0)
6
 #define	MUTEX_INIT(tsl)         (MUTEX_UNSET(tsl), 0)
7
-#define	MUTEX_MEMBAR(x) \
8
-	({ __asm__ volatile ("dsb"); })
9
-#define	MEMBAR_ENTER() \
10
-	({ __asm__ volatile ("dsb"); })
11
-#define	MEMBAR_EXIT() \
12
-	({ __asm__ volatile ("dsb"); })
13
+#if __ARM_ARCH >= 7
14
+  #define	MUTEX_MEMBAR(x) \
15
+  	({ __asm__ volatile ("dsb"); })
16
+  #define	MEMBAR_ENTER() \
17
+  	({ __asm__ volatile ("dsb"); })
18
+  #define	MEMBAR_EXIT() \
19
+  	({ __asm__ volatile ("dsb"); })
20
+#elif __ARM_ARCH >= 6
21
+  #define	MUTEX_MEMBAR(x) \
22
+	({ __asm __volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "memory"); })
23
+  #define	MEMBAR_ENTER() \
24
+	({ __asm __volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "memory"); })
25
+  #define	MEMBAR_EXIT() \
26
+	({ __asm __volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "memory"); })
27
+  #endif
28
+#else
29
+  #error Only use this with ARMv6 and later
30
 #endif
31
+
32
 #endif
33
 
34
 /*********************************************************************
3
@@ -652,7 +652,7 @@ MUTEX_SET(int *tsl)  {
35
@@ -652,7 +652,7 @@ MUTEX_SET(int *tsl)  {
4
 	 : "=&r" (__r), "+r" (tsl)
36
 	 : "=&r" (__r), "+r" (tsl)
5
 	 :
37
 	 :

Return to bug 213223