diff options
| -rw-r--r-- | trapasm.S | 4 | ||||
| -rw-r--r-- | x86.h | 12 | 
2 files changed, 12 insertions, 4 deletions
| @@ -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 @@ -135,21 +135,25 @@ struct trapframe {    uint eax;    // rest of trap frame -  ushort es; +  ushort gs;    ushort padding1; -  ushort ds; +  ushort fs;    ushort padding2; +  ushort es; +  ushort padding3; +  ushort ds; +  ushort padding4;    uint trapno;    // below here defined by x86 hardware    uint err;    uint eip;    ushort cs; -  ushort padding3; +  ushort padding5;    uint eflags;    // below here only when crossing rings, such as from user to kernel    uint esp;    ushort ss; -  ushort padding4; +  ushort padding6;  }; | 
