freebsd-skq/sys/i386/include
Peter Wemm e0ab2c6d10 Change the segment limits to 4GB, we set the user accessible bit on all
of the kernel address space already.  Intel recommend this anyway, because
using a non-4GB limit adds an additional clock cycle to address generation.
We were able to install 4GB segments into the LDT, so any limits we imposed
on %cs and %ds were academic anyway.  More importantly, this allows us to
make a page in the kernel readable to user applications, for holding things
like the signal trampoline and other fun things.

Move the user %cs/%ds segments from the LDT to the GDT.  There was no good
reason for them to be there anyway.  The old LDT entries are still there
but we can now relax the restriction that prevented users from emptying
the default LDT entries.

Putting user and kernel %cs and %ds together allows us to access the fast
sysenter/sysexit/syscall/sysret instructions.  syscall/sysret in particular
require that the user/kernel segments be laid out this way.  Reserve a slot
specifically for NDIS while here.

Create two user controllable slots in the GDT that are context switched
with the (kernel) thread.  This allows user applications to set two
user privilige selectors to arbitary values.  Create
i386_set_fsbase(void *base) and friends. (get/set, fs/gs).  For i386,
%gs is used by tls and the thread libraries and this means that user
processes no longer have to have the cost of having a custom LDT, and
we will no longer to do a ldt switch when activating a kthread/ithread in
the usual case any more.

In other words, we can now set the base address for %fs and %gs to arbitary
addresses without the pain of messing with ldt segments.
2005-04-13 22:57:17 +00:00
..
pc Move pc98 specific parts to the pc98 specific file. 2005-04-13 13:12:12 +00:00
_inttypes.h
_limits.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
_stdint.h
_types.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
acpica_machdep.h
apicreg.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
apicvar.h Use the local APIC timer to drive the various kernel clocks on SMP machines 2005-02-08 20:25:07 +00:00
apm_bios.h Move pc98 specific parts to the pc98 specific file. 2005-04-03 23:27:11 +00:00
apm_segments.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
asm.h
asmacros.h
atomic.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
bootinfo.h
bus_dma.h Refactor the bus_dma header files so that the interface is described in 2005-03-14 16:46:28 +00:00
bus_memio.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
bus_pio.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
bus.h With pc98/include, we can have pc98 and i386 specific bus space 2005-04-03 17:47:03 +00:00
clock.h Move pc98 specific parts to the pc98 specific file. 2005-04-13 13:12:12 +00:00
cpu.h Initiate deorbit burn sequence for 80386 support in FreeBSD: Remove 2004-11-16 20:42:32 +00:00
cpufunc.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
cputypes.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
cserial.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
db_machdep.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
elan_mmcr.h Expand indirect reference to BSD license with the current one. 2005-01-06 22:05:28 +00:00
elf.h
endian.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
exec.h Use a common multi-inclusion protection, and add such a 2005-02-19 21:16:48 +00:00
float.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
floatingpoint.h The file machine/ieeefp.h needs sys/cdefs.h on amd64 and i386 after my 2005-04-02 17:31:42 +00:00
frame.h
gdb_machdep.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_cause.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_debug.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_ioctl.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_rbch_ioctl.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_tel_ioctl.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
i4b_trace.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
ieeefp.h Remove fpsetsticky(). This was added for SysV compatibility, but due 2005-03-15 15:53:39 +00:00
if_wl_wavelan.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
in_cksum.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
intr_machdep.h Tweak the ELCR support slightly. Explicitly probe the ELCR during boot 2005-01-18 20:24:47 +00:00
ioctl_bt848.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
ioctl_meteor.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
iodev.h
kdb.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
legacyvar.h With pc98/include, we can have pc98 and i386 specific bus space 2005-04-03 17:47:03 +00:00
limits.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
md_var.h Move pc98 specific parts to the pc98 specific file. 2005-04-03 23:27:11 +00:00
memdev.h
metadata.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
mp_watchdog.h
mptable.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
mutex.h
npx.h Initialize the mxcsr properly, so the initial value in a process isn't 2005-03-17 22:21:36 +00:00
param.h Remove UAREA_PAGES. 2004-11-20 02:29:50 +00:00
pcaudioio.h
pcb_ext.h
pcb.h Change the segment limits to 4GB, we set the user accessible bit on all 2005-04-13 22:57:17 +00:00
pci_cfgreg.h Move pc98 specific parts to the pc98 specific file. 2005-04-03 23:27:11 +00:00
pcpu.h Change the segment limits to 4GB, we set the user accessible bit on all 2005-04-13 22:57:17 +00:00
pcvt_ioctl.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
pecoff_machdep.h
perfmon.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
pmap.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
privatespace.h
proc.h Divorce critical sections from spinlocks. Critical sections as denoted by 2005-04-04 21:53:56 +00:00
profile.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
psl.h
ptrace.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
reg.h
reloc.h
resource.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
runq.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
segments.h Change the segment limits to 4GB, we set the user accessible bit on all 2005-04-13 22:57:17 +00:00
setjmp.h
sf_buf.h Implement support for CPU private mappings within sf_buf_alloc(). 2005-02-13 06:23:13 +00:00
sigframe.h
signal.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
smapi.h
smp.h Use the local APIC timer to drive the various kernel clocks on SMP machines 2005-02-08 20:25:07 +00:00
smptests.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
speaker.h
specialreg.h
stdarg.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
sysarch.h Change the segment limits to 4GB, we set the user accessible bit on all 2005-04-13 22:57:17 +00:00
trap.h
tss.h
ucontext.h
varargs.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
vm86.h
vmparam.h