1*ec59a3ddSDavid du Colombier #include "u.h" 2*ec59a3ddSDavid du Colombier #include "libc.h" 3*ec59a3ddSDavid du Colombier 4*ec59a3ddSDavid du Colombier int tas(long * x)5*ec59a3ddSDavid du Colombiertas(long *x) 6*ec59a3ddSDavid du Colombier { 7*ec59a3ddSDavid du Colombier int v; 8*ec59a3ddSDavid du Colombier 9*ec59a3ddSDavid du Colombier __asm__( "movl $1, %%eax\n\t" 10*ec59a3ddSDavid du Colombier "xchgl %%eax,(%%rcx)" 11*ec59a3ddSDavid du Colombier : "=a" (v) 12*ec59a3ddSDavid du Colombier : "c" (x) 13*ec59a3ddSDavid du Colombier ); 14*ec59a3ddSDavid du Colombier switch(v) { 15*ec59a3ddSDavid du Colombier case 0: 16*ec59a3ddSDavid du Colombier case 1: 17*ec59a3ddSDavid du Colombier return v; 18*ec59a3ddSDavid du Colombier default: 19*ec59a3ddSDavid du Colombier print("canlock: corrupted 0x%lux\n", v); 20*ec59a3ddSDavid du Colombier return 1; 21*ec59a3ddSDavid du Colombier } 22*ec59a3ddSDavid du Colombier } 23*ec59a3ddSDavid du Colombier 24