linux/arch/i386/kernel/cpu
Jeremy Fitzhardinge f95d47caae [PATCH] i386: Use %gs as the PDA base-segment in the kernel
This patch is the meat of the PDA change.  This patch makes several related
changes:

1: Most significantly, %gs is now used in the kernel.  This means that on
   entry, the old value of %gs is saved away, and it is reloaded with
   __KERNEL_PDA.

2: entry.S constructs the stack in the shape of struct pt_regs, and this
   is passed around the kernel so that the process's saved register
   state can be accessed.

   Unfortunately struct pt_regs doesn't currently have space for %gs
   (or %fs). This patch extends pt_regs to add space for gs (no space
   is allocated for %fs, since it won't be used, and it would just
   complicate the code in entry.S to work around the space).

3: Because %gs is now saved on the stack like %ds, %es and the integer
   registers, there are a number of places where it no longer needs to
   be handled specially; namely context switch, and saving/restoring the
   register state in a signal context.

4: And since kernel threads run in kernel space and call normal kernel
   code, they need to be created with their %gs == __KERNEL_PDA.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Chuck Ebbert <76306.1226@compuserve.com>
Cc: Zachary Amsden <zach@vmware.com>
Cc: Jan Beulich <jbeulich@novell.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
2006-12-07 02:14:02 +01:00
..
cpufreq [CPUFREQ] Make acpi-cpufreq unsticky again. 2006-09-30 23:19:38 -04:00
mcheck [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
mtrr [PATCH] i386: fix buggy MTRR address checks 2006-12-07 02:14:00 +01:00
amd.c [PATCH] i386: mark cpu cache functions as __cpuinit 2006-09-26 10:52:36 +02:00
centaur.c [PATCH] i386: mark cpu cache functions as __cpuinit 2006-09-26 10:52:36 +02:00
common.c [PATCH] i386: Use %gs as the PDA base-segment in the kernel 2006-12-07 02:14:02 +01:00
cpu.h [PATCH] i386: remove redundant generic_identify() calls when identifying cpus 2006-09-26 10:52:36 +02:00
cyrix.c [PATCH] i386: mark cpu identify functions as __cpuinit 2006-09-26 10:52:36 +02:00
intel_cacheinfo.c [PATCH] cpu hotplug: use hotplug version of registration in late inits 2006-07-31 13:28:39 -07:00
intel.c [PATCH] i386: i386 add X86_FEATURE_PEBS and detection 2006-12-07 02:14:01 +01:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nexgen.c [PATCH] i386: mark cpu identify functions as __cpuinit 2006-09-26 10:52:36 +02:00
proc.c [PATCH] i386/x86-64: New Intel feature flags 2006-09-26 10:52:42 +02:00
rise.c [PATCH] i386: mark cpu init functions as __cpuinit, data as __cpuinitdata 2006-09-26 10:52:36 +02:00
transmeta.c [PATCH] i386: mark cpu identify functions as __cpuinit 2006-09-26 10:52:36 +02:00
umc.c [PATCH] i386: mark cpu init functions as __cpuinit, data as __cpuinitdata 2006-09-26 10:52:36 +02:00