... | ... |
@@ -56,8 +56,10 @@ inline static int tsl(fl_lock_t* lock) |
56 | 56 |
|
57 | 57 |
#elif defined __armv4l |
58 | 58 |
asm volatile( |
59 |
- "swp [%1], %0 \n\t" |
|
60 |
- "=r" (val), "=m" (*lock): "0" (val) : "memory" |
|
59 |
+ "# here \n\t" |
|
60 |
+ "swpb %0, %1, [%2] \n\t" |
|
61 |
+ : "=r" (val) |
|
62 |
+ : "r"(1), "r" (lock) : "memory" |
|
61 | 63 |
); |
62 | 64 |
|
63 | 65 |
#else |
... | ... |
@@ -108,7 +110,10 @@ inline static void release_lock(fl_lock_t* lock) |
108 | 110 |
); |
109 | 111 |
#elif defined __armv4l |
110 | 112 |
asm volatile( |
111 |
- "mov $0, [%0]" : /*no output*/: "r"(lock): "memory" |
|
113 |
+ " str %0, [%1] \n\r" |
|
114 |
+ : /*no outputs*/ |
|
115 |
+ : "r"(0), "r"(lock) |
|
116 |
+ : "memory" |
|
112 | 117 |
); |
113 | 118 |
#else |
114 | 119 |
#error "unknown arhitecture" |