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 Colombiertas(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