1 /* arm pre-v7 architecture */ 2 #include "u.h" 3 #include "libc.h" 4 5 int 6 tas(long *x) 7 { 8 int v; 9 10 __asm__( 11 "swp %0, %1, [%2]" 12 : "=&r" (v) 13 : "r" (1), "r" (x) 14 : "memory" 15 ); 16 switch(v) { 17 case 0: 18 case 1: 19 return v; 20 default: 21 print("canlock: corrupted 0x%lux\n", v); 22 return 1; 23 } 24 } 25