xref: /plan9/sys/src/cmd/unix/drawterm/posix-amd64/tas.c (revision ec59a3ddbfceee0efe34584c2c9981a5e5ff1ec4)
1 #include "u.h"
2 #include "libc.h"
3 
4 int
tas(long * x)5 tas(long *x)
6 {
7 	int     v;
8 
9 	__asm__(	"movl   $1, %%eax\n\t"
10 				"xchgl  %%eax,(%%rcx)"
11 				: "=a" (v)
12 				: "c" (x)
13 	);
14 	switch(v) {
15 	case 0:
16 	case 1:
17 		return v;
18 	default:
19 		print("canlock: corrupted 0x%lux\n", v);
20 		return 1;
21 	}
22 }
23 
24