summaryrefslogtreecommitdiff
path: root/sys/src/cmd/unix/drawterm/posix-amd64/tas.c
blob: 9e1d5d8a12561178005eb4f1f7dd1e4dee229407 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "u.h"
#include "libc.h"

int
tas(long *x)
{
	int     v;

	__asm__(	"movl   $1, %%eax\n\t"
				"xchgl  %%eax,(%%rcx)"
				: "=a" (v)
				: "c" (x)
	);
	switch(v) {
	case 0:
	case 1:
		return v;
	default:
		print("canlock: corrupted 0x%lux\n", v);
		return 1;
	}
}