source: bootcd/isolinux/syslinux-6.03/com32/lib/x86_64/setjmp.S @ e16e8f2

Last change on this file since e16e8f2 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 932 bytes
Line 
1#
2# arch/x86_64/setjmp.S
3#
4# setjmp/longjmp for the x86-64 architecture
5#
6
7#
8# The jmp_buf is assumed to contain the following, in order:
9#       %rbx
10#       %rsp (post-return)
11#       %rbp
12#       %r12
13#       %r13
14#       %r14
15#       %r15
16#       <return address>
17#
18
19        .text
20        .align 4
21        .globl setjmp
22        .type setjmp, @function
23setjmp:
24        pop  %rsi                       # Return address, and adjust the stack
25        xorl %eax,%eax                  # Return value
26        movq %rbx,(%rdi)
27        movq %rsp,8(%rdi)               # Post-return %rsp!
28        push %rsi                       # Make the call/return stack happy
29        movq %rbp,16(%rdi)
30        movq %r12,24(%rdi)
31        movq %r13,32(%rdi)
32        movq %r14,40(%rdi)
33        movq %r15,48(%rdi)
34        movq %rsi,56(%rdi)              # Return address
35        ret
36
37        .size setjmp,.-setjmp
38
39        .text
40        .align 4
41        .globl longjmp
42        .type longjmp, @function
43longjmp:
44        movl %esi,%eax                  # Return value (int)
45        movq (%rdi),%rbx
46        movq 8(%rdi),%rsp
47        movq 16(%rdi),%rbp
48        movq 24(%rdi),%r12
49        movq 32(%rdi),%r13
50        movq 40(%rdi),%r14
51        movq 48(%rdi),%r15
52        jmp *56(%rdi)
53
54        .size longjmp,.-longjmp
Note: See TracBrowser for help on using the repository browser.