tas.c 273 B

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