setjmp.S 643 B

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