summaryrefslogtreecommitdiffstats
path: root/sys/amd64/linux32/linux32_sysvec.c
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2010-12-09 22:01:15 +0000
committerdim <dim@FreeBSD.org>2010-12-09 22:01:15 +0000
commita3786f65f1e2fa3a4e925fdb4b2b5544b9021bf9 (patch)
tree5f0a24f71baa3176c75a20a51a9e20a22c75426c /sys/amd64/linux32/linux32_sysvec.c
parentad01c620333d05c430d583ee40647e396be1ab91 (diff)
parent12dd9eb8e940c48f9fc30dbc137071b4fe5caead (diff)
downloadFreeBSD-src-a3786f65f1e2fa3a4e925fdb4b2b5544b9021bf9.zip
FreeBSD-src-a3786f65f1e2fa3a4e925fdb4b2b5544b9021bf9.tar.gz
Sync: merge r216133 through r216338 from ^/head.
Diffstat (limited to 'sys/amd64/linux32/linux32_sysvec.c')
-rw-r--r--sys/amd64/linux32/linux32_sysvec.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c
index f8719c4..3ebb980 100644
--- a/sys/amd64/linux32/linux32_sysvec.c
+++ b/sys/amd64/linux32/linux32_sysvec.c
@@ -865,13 +865,13 @@ exec_linux_setregs(struct thread *td, struct image_params *imgp, u_long stack)
regs->tf_flags = TF_HASSEGS;
regs->tf_cs = _ucode32sel;
regs->tf_rbx = imgp->ps_strings;
- td->td_pcb->pcb_full_iret = 1;
load_cr0(rcr0() | CR0_MP | CR0_TS);
fpstate_drop(td);
- /* Return via doreti so that we can change to a different %cs */
- pcb->pcb_flags |= PCB_FULLCTX | PCB_32BIT;
+ /* Do full restore on return so that we can change to a different %cs */
+ pcb->pcb_flags |= PCB_32BIT;
pcb->pcb_flags &= ~PCB_GS32BIT;
+ pcb->pcb_full_iret = 1;
td->td_retval[1] = 0;
}
OpenPOWER on IntegriCloud