tas.s 335 B

12345678910111213141516171819
  1. /*
  2. * mips user level lock code
  3. */
  4. #define LL(base, rt) WORD $((060<<26)|((base)<<21)|((rt)<<16))
  5. #define SC(base, rt) WORD $((070<<26)|((base)<<21)|((rt)<<16))
  6. #define NOOP WORD $0x27
  7. TEXT _tas(SB), $0
  8. TEXT C_4ktas(SB), $0
  9. MOVV R1, R2 /* address of key */
  10. tas1:
  11. MOVW $1, R3
  12. LL(2, 1)
  13. NOOP
  14. SC(2, 3)
  15. NOOP
  16. BEQ R3, tas1
  17. RET