setjmp.S 821 B

12345678910111213141516171819202122232425262728293031323334
  1. # setjmp.S atp. Sept. 2001
  2. # save regs and info needed for a longjmp
  3. .globl __sigsetjmp
  4. .align 4
  5. __sigsetjmp:
  6. .word 0x0000 # we look after reg saving here - this must
  7. # match longjmp
  8. movl 0x4(%ap), %r0 # our scratch reg
  9. # kenn would probably use movq here. :-)
  10. movl %r1, 0x14(%r0) # save regs
  11. movl %r2, 0x18(%r0)
  12. movl %r3, 0x1c(%r0)
  13. movl %r4, 0x20(%r0)
  14. movl %r5, 0x24(%r0)
  15. movl %r6, 0x28(%r0)
  16. movl %r7, 0x2c(%r0)
  17. movl %r8, 0x30(%r0)
  18. movl %r9, 0x34(%r0)
  19. movl %r10, 0x38(%r0)
  20. movl %r11, 0x3c(%r0)
  21. # now save our call frame
  22. movl (%fp), (%r0) # condition handler (for VMS emulation)
  23. movl 0x4(%fp), 0x4(%r0) # psw
  24. movl 0x8(%fp), 0x8(%r0) # ap
  25. movl 0xc(%fp), 0xc(%r0) # fp
  26. movl 0x10(%fp), 0x10(%r0) # pc
  27. # call the sigjmp save routine
  28. pushl 8(%ap)
  29. pushl %r0
  30. calls $2, __sigjmp_save
  31. # done
  32. ret