xref: /kvm-unit-tests/lib/x86/setjmp64.S (revision 9dde4243e6f1759280d3fed2486ae62e80c3f8c7)
1.globl setjmp
2setjmp:
3	mov (%rsp), %rsi
4	mov %rsi, (%rdi)
5	mov %rsp, 0x8(%rdi)
6	mov %rbp, 0x10(%rdi)
7	mov %rbx, 0x18(%rdi)
8	mov %r12, 0x20(%rdi)
9	mov %r13, 0x28(%rdi)
10	mov %r14, 0x30(%rdi)
11	mov %r15, 0x38(%rdi)
12	xor %eax, %eax
13	ret
14
15.globl longjmp
16longjmp:
17	mov %esi, %eax
18	mov 0x38(%rdi), %r15
19	mov 0x30(%rdi), %r14
20	mov 0x28(%rdi), %r13
21	mov 0x20(%rdi), %r12
22	mov 0x18(%rdi), %rbx
23	mov 0x10(%rdi), %rbp
24	mov 0x8(%rdi), %rsp
25	mov (%rdi), %rsi
26	mov %rsi, (%rsp)
27	ret
28