xv6

port of xv6 to x86-64
git clone http://frotz.net/git/xv6.git
Log | Files | Refs | README | LICENSE

trapasm64.S (597B)


      1 
      2   # vectors.S sends all traps here.
      3 .globl alltraps
      4 alltraps:
      5   # Build trap frame.
      6   push %r15
      7   push %r14
      8   push %r13
      9   push %r12
     10   push %r11
     11   push %r10
     12   push %r9
     13   push %r8
     14   push %rdi
     15   push %rsi
     16   push %rbp
     17   push %rdx
     18   push %rcx
     19   push %rbx
     20   push %rax
     21 
     22   mov  %rsp, %rdi  # frame in arg1
     23   call trap
     24 
     25   # Return falls through to trapret...
     26 .globl trapret
     27 trapret:
     28   pop %rax
     29   pop %rbx
     30   pop %rcx
     31   pop %rdx
     32   pop %rbp
     33   pop %rsi
     34   pop %rdi
     35   pop %r8
     36   pop %r9
     37   pop %r10
     38   pop %r11
     39   pop %r12
     40   pop %r13
     41   pop %r14
     42   pop %r15
     43 
     44   # discard trapnum and errorcode
     45   add $16, %rsp
     46   iretq