setjmp.S 562 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. .h8300h
  2. .text
  3. .global __setjmp
  4. .global _longjmp
  5. __setjmp:
  6. add.l #20,er0
  7. mov.l er6,@er0
  8. mov.l er5,@-er0
  9. mov.l er4,@-er0
  10. mov.l er3,@-er0
  11. mov.l er2,@-er0
  12. mov.l er1,@-er0
  13. mov.l sp,@(24,er0)
  14. mov.l @sp,er1
  15. mov.l er1,@(28,er0)
  16. sub.l er0,er0
  17. rts
  18. _longjmp:
  19. mov.l er1,er1
  20. bne 1f
  21. sub.l er1,er1
  22. inc.l #1,er1
  23. 1:
  24. adds #4,er0
  25. adds #4,er0
  26. mov.l @er0+,er3
  27. mov.l @er0+,er4
  28. mov.l @er0+,er5
  29. mov.l @er0+,er6
  30. mov.l @er0+,sp
  31. mov.l @er0,er2
  32. mov.l er2,@sp
  33. mov.l er1,er2
  34. mov.l er0,er1
  35. mov.l er2,er0
  36. sub.l #28,er1
  37. mov.l @(4,er1),er2
  38. mov.l @er1,er1
  39. rts