提交 40b624bc 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

Save some segment registers in trapasm.S

上级 e470eb3a
#include "mmu.h"
#define _TRAP(x, l) \ #define _TRAP(x, l) \
.globl trap ## x; \ .globl trap ## x; \
.align 8; \ .align 8; \
...@@ -32,12 +34,25 @@ trapcommon: ...@@ -32,12 +34,25 @@ trapcommon:
pushq %r13 pushq %r13
pushq %r14 pushq %r14
pushq %r15 pushq %r15
movq %rsp, %rdi // first argument to trap
call trap # Set up data and per-cpu segments.
movw $KDSEG, %ax
movw %ax, %ds
movw %ax, %es
// XXX(sbw) we should do something with fs, gs, gs.base
movq %rsp, %rdi // first argument to trap
call trap
.globl trapret .globl trapret
.align 8 .align 8
trapret: trapret:
movw $UDSEG, %ax
movw %ax, %ds
movw %ax, %es
movw %ax, %ss
// XXX(sbw) we should do something with fs, gs, gs.base
popq %r15 popq %r15
popq %r14 popq %r14
popq %r13 popq %r13
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论