setjmp.s 367 B

12345678910111213141516171819
  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 longjmp(SB), 1, $-4
  10. MOVW r+4(FP), R(arg+2)
  11. CMP $0, R(arg+2)
  12. BNE ok /* ansi: "longjmp(0) => longjmp(1)" */
  13. MOVW $1, R(arg+2) /* bless their pointed heads */
  14. ok: MOVW (R(arg+0)), R(sp)
  15. MOVW 4(R(arg+0)), R(link)
  16. MOVW R(arg+2), R(arg+0)
  17. RET