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 |
: |