Merge tag 'for-4.6' of git://git.osdn.jp/gitroot/uclinux-h8/linux
[deliverable/linux.git] / arch / x86 / um / setjmp_64.S
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
23 setjmp:
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
43 longjmp:
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
This page took 0.049744 seconds and 5 git commands to generate.