diff options
author | rsc <rsc> | 2007-08-27 13:11:13 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-27 13:11:13 +0000 |
commit | e1872bb130da5a9b198ca484da8534304ea9fc79 (patch) | |
tree | bd59ec929de63b290da57a9643c1bf06918e6d7d | |
parent | e0240674f5b30adf92714162cf51dabc43b17aa7 (diff) | |
download | xv6-labs-e1872bb130da5a9b198ca484da8534304ea9fc79.tar.gz xv6-labs-e1872bb130da5a9b198ca484da8534304ea9fc79.tar.bz2 xv6-labs-e1872bb130da5a9b198ca484da8534304ea9fc79.zip |
formatting, fix comment
-rw-r--r-- | trapasm.S | 37 |
1 files changed, 21 insertions, 16 deletions
@@ -1,33 +1,38 @@ .text .globl trap .globl trapret1 - .globl alltraps + +.set SEG_KDATA_SEL 0x10 # selector for SEG_KDATA + + # vectors.S sends all traps here. alltraps: - /* vectors.S sends all traps here */ - pushl %ds # build - pushl %es # trap - pushal # frame - movl $16,%eax # SEG_KDATA << 3 - movw %ax,%ds # kernel - movw %ax,%es # segments - pushl %esp # pass pointer to this trapframe - call trap # and call trap() + # Build trap frame. + pushl %ds + pushl %es + pushal + + # Set up data segments. + movl $SEG_KDATA_SEL, %eax + movw %ax,%ds + movw %ax,%es + + # Call trap(tf), where tf=%esp + pushl %esp + call trap addl $4, %esp - # return falls through to trapret... - /* - * a forked process RETs here - * expects ESP to point to a Trapframe - */ + # Return falls through to trapret... .globl trapret trapret: popal popl %es popl %ds - addl $0x8, %esp /* trapno and errcode */ + addl $0x8, %esp # trapno and errcode iret + # A forked process switches to user mode by calling + # forkret1(tf), where tf is the trap frame to use. .globl forkret1 forkret1: movl 4(%esp), %esp |