1
linux/arch
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
..
alpha [NET]: Alpha checksum annotations and cleanups. 2006-12-02 21:23:01 -08:00
arm Fix misc Kconfig typos 2006-11-30 05:22:59 +01:00
arm26 [PATCH] remove bogus arch-specific syscall exports 2006-10-11 11:17:07 -07:00
avr32 AVR32: Add missing return instruction in __raw_writesb 2006-11-06 14:07:16 +01:00
cris [NET]: Cris checksum annotations and cleanups. 2006-12-02 21:23:02 -08:00
frv [NET]: FRV checksum annotations. 2006-12-02 21:23:03 -08:00
h8300 [NET]: H8300 checksum annotations and cleanups. 2006-12-02 21:23:04 -08:00
i386 [PATCH] i386: Use %gs as the PDA base-segment in the kernel 2006-12-07 02:14:02 +01:00
ia64 [NET]: IA64 checksum annotations and cleanups. 2006-12-02 21:23:05 -08:00
m32r [NET]: M32R checksum annotations and cleanups. 2006-12-02 21:23:06 -08:00
m68k [NET]: M68K checksum annotations and cleanups. 2006-12-02 21:23:07 -08:00
m68knommu [PATCH] m68knommu: remove __rom_end from 68360 startup code 2006-12-04 08:26:12 -08:00
mips [MIPS] Cleanup memory barriers for weakly ordered systems. 2006-12-04 22:43:14 +00:00
parisc [NET]: PARISC checksum annotations and cleanups. 2006-12-02 21:23:10 -08:00
powerpc [POWERPC] Add missing EXPORTS for mpc52xx support 2006-12-05 11:34:37 +11:00
ppc [POWERPC] Add files build to .gitignore 2006-12-04 20:41:29 +11:00
s390 [S390] Don't use small stacks when lockdep is used. 2006-12-04 15:41:10 +01:00
sh [NET]: Kill direct includes of asm/checksum.h 2006-12-02 21:22:59 -08:00
sh64 [NET]: SH64 checksum annotations and cleanups. 2006-12-02 21:23:11 -08:00
sparc Fix misc Kconfig typos 2006-11-30 05:22:59 +01:00
sparc64 PCI: Use pci_generic_prep_mwi on sparc64 2006-12-01 14:36:57 -08:00
um [NET]: UML checksum annotations and cleanups. 2006-12-02 21:23:12 -08:00
v850 [NET]: V850 checksum annotations and cleanups. 2006-12-02 21:23:13 -08:00
x86_64 [PATCH] x86-64: miscellaneous entry.S adjustments 2006-12-07 02:14:02 +01:00
xtensa [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00