xref: /plan9-contrib/sys/src/cmd/unix/drawterm/posix-arm/tas.c (revision 781103c4074deb8af160e8a0da2742ba6b29dc2b)
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