summaryrefslogtreecommitdiffstats
path: root/sys/amd64/linux32
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-07-30 11:30:55 +0000
committerkib <kib@FreeBSD.org>2008-07-30 11:30:55 +0000
commit19bf5e280722ebf99ad48917f4b8d0af5dbd14e1 (patch)
tree4dc6b207d6260804b2d05dffc793c7d0907eeccd /sys/amd64/linux32
parent13b6ce6962eaf8de9b16589dde1fa06b5947d5f8 (diff)
downloadFreeBSD-src-19bf5e280722ebf99ad48917f4b8d0af5dbd14e1.zip
FreeBSD-src-19bf5e280722ebf99ad48917f4b8d0af5dbd14e1.tar.gz
Bring back the save/restore of the %ds, %es, %fs and %gs registers for
the 32bit images on amd64. Change the semantic of the PCB_32BIT pcb flag to request the context switch code to operate on the segment registers. Its previous meaning of saving or restoring the %gs base offset is assigned to the new PCB_GS32BIT flag. FreeBSD 32bit image activator sets the PCB_32BIT flag, while Linux 32bit emulation sets PCB_32BIT | PCB_GS32BIT. Reviewed by: peter MFC after: 2 weeks
Diffstat (limited to 'sys/amd64/linux32')
-rw-r--r--sys/amd64/linux32/linux32_machdep.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/amd64/linux32/linux32_machdep.c b/sys/amd64/linux32/linux32_machdep.c
index 565e6d2..6f1401c 100644
--- a/sys/amd64/linux32/linux32_machdep.c
+++ b/sys/amd64/linux32/linux32_machdep.c
@@ -696,7 +696,7 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
td2->td_pcb->pcb_gs32sd = sd;
td2->td_pcb->pcb_gs32p = &gdt[GUGS32_SEL];
td2->td_pcb->pcb_gs = GSEL(GUGS32_SEL, SEL_UPL);
- td2->td_pcb->pcb_flags |= PCB_32BIT;
+ td2->td_pcb->pcb_flags |= PCB_GS32BIT | PCB_32BIT;
}
}
OpenPOWER on IntegriCloud