xref: /xv6-public/trapasm.S (revision 3e392c72)
1#include "mmu.h"
2
3  # vectors.S sends all traps here.
4.globl alltraps
5alltraps:
6  # Build trap frame.
7  pushl %ds
8  pushl %es
9  pushl %fs
10  pushl %gs
11  pushal
12
13  # Set up data segments.
14  movw $(SEG_KDATA<<3), %ax
15  movw %ax, %ds
16  movw %ax, %es
17
18  # Call trap(tf), where tf=%esp
19  pushl %esp
20  call trap
21  addl $4, %esp
22
23  # Return falls through to trapret...
24.globl trapret
25trapret:
26  popal
27  popl %gs
28  popl %fs
29  popl %es
30  popl %ds
31  addl $0x8, %esp  # trapno and errcode
32  iret
33