setjmp.s 587 B

1234567891011121314151617181920212223242526272829
  1. arg=0
  2. link=14
  3. sp=13
  4. TEXT setjmp(SB), 1, $-4
  5. MOVW R(sp), (R(arg+0))
  6. MOVW R(link), 4(R(arg+0))
  7. MOVW $0, R0
  8. RET
  9. TEXT sigsetjmp(SB), 1, $-4
  10. MOVW savemask+4(FP), R(arg+2)
  11. MOVW R(arg+2), 0(R(arg+0))
  12. MOVW $_psigblocked(SB), R(arg+2)
  13. MOVW R2, 4(R(arg+0))
  14. MOVW R(sp), 8(R(arg+0))
  15. MOVW R(link), 12(R(arg+0))
  16. MOVW $0, R(arg+0)
  17. RET
  18. TEXT longjmp(SB), 1, $-4
  19. MOVW r+4(FP), R(arg+2)
  20. CMP $0, R(arg+2)
  21. BNE ok /* ansi: "longjmp(0) => longjmp(1)" */
  22. MOVW $1, R(arg+2) /* bless their pointed heads */
  23. ok: MOVW (R(arg+0)), R(sp)
  24. MOVW 4(R(arg+0)), R(link)
  25. MOVW R(arg+2), R(arg+0)
  26. RET