genode/repos/dde_rump/patches/lock.patch
Norman Feske ca971bbfd8 Move repositories to 'repos/' subdirectory
This patch changes the top-level directory layout as a preparatory
step for improving the tools for managing 3rd-party source codes.
The rationale is described in the issue referenced below.

Issue #1082
2014-05-14 16:08:00 +02:00

21 lines
757 B
Diff

diff --git a/src/sys/arch/arm/include/lock.h b/sys/arch/arm/include/lock.h
index c52a44f..3b4ba93 100644
--- a/src/sys/arch/arm/include/lock.h
+++ b/src/sys/arch/arm/include/lock.h
@@ -119,8 +119,13 @@ __swp(__cpu_simple_lock_t __val, volatile __cpu_simple_lock_t *__ptr)
return __rv;
#else
uint32_t __val32;
- __asm volatile("swpb %0, %1, [%2]"
- : "=&r" (__val32) : "r" (__val), "r" (__ptr) : "memory");
+ __asm volatile(" 1: \n"
+ " ldrexb %0, [%2] \n"
+ " strexb r0, %1, [%2]\n"
+ " teqeq r0, #0 \n"
+ " bne 1b \n"
+ : "=&r" (__val32) : "r" (__val), "r" (__ptr)
+ : "memory", "r0");
return __val32;
#endif
}