summaryrefslogtreecommitdiff
path: root/trapasm.S
diff options
context:
space:
mode:
authorkolya <kolya>2008-09-24 01:48:31 +0000
committerkolya <kolya>2008-09-24 01:48:31 +0000
commitc7317d4dc74bcb1d0e939c6b06a724fce1510a4e (patch)
treedb061a7ee7430ee83da28632822bb93773dd0553 /trapasm.S
parentadcd16c3f7588b4a28d37495f05e94278c9e3a1e (diff)
downloadxv6-labs-c7317d4dc74bcb1d0e939c6b06a724fce1510a4e.tar.gz
xv6-labs-c7317d4dc74bcb1d0e939c6b06a724fce1510a4e.tar.bz2
xv6-labs-c7317d4dc74bcb1d0e939c6b06a724fce1510a4e.zip
always save and restore %fs, %gs to ensure old segment entries are never
accessible to user from the hidden CPU segment registers.
Diffstat (limited to 'trapasm.S')
-rw-r--r--trapasm.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/trapasm.S b/trapasm.S
index acdca99..962ba10 100644
--- a/trapasm.S
+++ b/trapasm.S
@@ -8,6 +8,8 @@ alltraps:
# Build trap frame.
pushl %ds
pushl %es
+ pushl %fs
+ pushl %gs
pushal
# Set up data segments.
@@ -24,6 +26,8 @@ alltraps:
.globl trapret
trapret:
popal
+ popl %gs
+ popl %fs
popl %es
popl %ds
addl $0x8, %esp # trapno and errcode