diff options
-rw-r--r-- | sys/i386/i386/trap.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c index 7c16b24..981e3f1 100644 --- a/sys/i386/i386/trap.c +++ b/sys/i386/i386/trap.c @@ -550,11 +550,7 @@ user_trctrap_out: vm86_trap((struct vm86frame *)frame); goto out; } - if (type == T_STKFLT) - break; - /* FALL THROUGH */ - case T_SEGNPFLT: /* segment not present fault */ if (curpcb->pcb_flags & PCB_VM86CALL) break; @@ -595,6 +591,9 @@ user_trctrap_out: frame->tf_eip = (int)doreti_iret_fault; goto out; } + if (type == T_STKFLT) + break; + if (frame->tf_eip == (int)doreti_popl_ds) { frame->tf_eip = (int)doreti_popl_ds_fault; goto out; |