Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 was automatically generated by the LXR engine.