diff options
author | kib <kib@FreeBSD.org> | 2008-07-30 11:30:55 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2008-07-30 11:30:55 +0000 |
commit | 19bf5e280722ebf99ad48917f4b8d0af5dbd14e1 (patch) | |
tree | 4dc6b207d6260804b2d05dffc793c7d0907eeccd /sys/amd64/linux32 | |
parent | 13b6ce6962eaf8de9b16589dde1fa06b5947d5f8 (diff) | |
download | FreeBSD-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.c | 2 |
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; } } |