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