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