setjmp.S 579 B

123456789101112131415161718192021222324252627282930313233
  1. .text
  2. .globl setjmp
  3. .type setjmp, @function
  4. setjmp:
  5. pop %rsi
  6. movq %rbx,0x00(%rdi)
  7. movq %rsp,0x08(%rdi)
  8. push %rsi
  9. movq %rbp,0x10(%rdi)
  10. movq %r12,0x18(%rdi)
  11. movq %r13,0x20(%rdi)
  12. movq %r14,0x28(%rdi)
  13. movq %r15,0x30(%rdi)
  14. movq %rsi,0x38(%rdi)
  15. xor %rax,%rax
  16. ret
  17. .globl longjmp
  18. .type longjmp, @function
  19. longjmp:
  20. movl %esi, %eax
  21. movq 0x00(%rdi), %rbx
  22. movq 0x08(%rdi), %rsp
  23. movq 0x10(%rdi), %rbp
  24. movq 0x18(%rdi), %r12
  25. movq 0x20(%rdi), %r13
  26. movq 0x28(%rdi), %r14
  27. movq 0x30(%rdi), %r15
  28. xor %rdx,%rdx
  29. mov $1,%rcx
  30. cmp %rax,%rdx
  31. cmove %rcx,%rax
  32. jmp *0x38(%rdi)