tas.s 494 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * magnum 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. #define COP3 WORD $(023<<26)
  8. TEXT C_3ktas(SB),$0
  9. MOVW R1, R21
  10. btas:
  11. MOVW R21, R1
  12. MOVB R0, 1(R1)
  13. NOOP
  14. COP3
  15. BLTZ R1, btas
  16. RET
  17. TEXT C_4ktas(SB), $0
  18. MOVW R1, R2 /* address of key */
  19. tas1:
  20. MOVW $1, R3
  21. LL(2, 1)
  22. NOOP
  23. SC(2, 3)
  24. NOOP
  25. BEQ R3, tas1
  26. RET
  27. TEXT C_fcr0(SB), $0
  28. MOVW FCR0, R1
  29. RET