#1# arch/x86_64/setjmp.S2#3# setjmp/longjmp for the x86-64 architecture4#56#7# The jmp_buf is assumed to contain the following, in order:8# %rbx9# %rsp (post-return)10# %rbp11# %r1212# %r1313# %r1414# %r1515# <return address>16#1718.text19.align 420.globl setjmp21.type setjmp, @function22setjmp:23pop %rsi # Return address, and adjust the stack24xorl %eax,%eax # Return value25movq %rbx,(%rdi)26movq %rsp,8(%rdi) # Post-return %rsp!27push %rsi # Make the call/return stack happy28movq %rbp,16(%rdi)29movq %r12,24(%rdi)30movq %r13,32(%rdi)31movq %r14,40(%rdi)32movq %r15,48(%rdi)33movq %rsi,56(%rdi) # Return address34ret3536.size setjmp,.-setjmp3738.text39.align 440.globl longjmp41.type longjmp, @function42longjmp:43movl %esi,%eax # Return value (int)44movq (%rdi),%rbx45movq 8(%rdi),%rsp46movq 16(%rdi),%rbp47movq 24(%rdi),%r1248movq 32(%rdi),%r1349movq 40(%rdi),%r1450movq 48(%rdi),%r1551jmp *56(%rdi)5253.size longjmp,.-longjmp545556