Index: /trunk/source/lisp-kernel/arm-asmutils.s
===================================================================
--- /trunk/source/lisp-kernel/arm-asmutils.s	(revision 14948)
+++ /trunk/source/lisp-kernel/arm-asmutils.s	(revision 14949)
@@ -89,5 +89,8 @@
 _exportfn(C(atomic_swap))
         __(mov r2,r0)
-        __(swp r0,r1,[r2])
+0:      __(ldrex r0,[r2])
+        __(strex r3,r1,[r2]
+        __(cmp r3,#0)
+        __(bne 0b)        
         __(bx lr)
 _endfn
