diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2006-12-06 20:14:02 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:02 -0500 |
commit | 66e10a44d724f1464b5e8b5a3eae1e2cbbc2cca6 (patch) | |
tree | 0d2a1a1d5edaf98506ef7cb271cad62f5644268e /arch/i386/kernel/process.c | |
parent | f95d47caae5302a63d92be9a0292abc90e2a14e1 (diff) |
[PATCH] i386: Fix places where using %gs changes the usermode ABI
There are a few places where the change in struct pt_regs and the use of %gs
affect the userspace ABI. These are primarily debugging interfaces where
thread state can be inspected or extracted.
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>
Diffstat (limited to 'arch/i386/kernel/process.c')
-rw-r--r-- | arch/i386/kernel/process.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 905364d42847..dc4272545179 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -315,8 +315,8 @@ void show_regs(struct pt_regs * regs) | |||
315 | regs->eax,regs->ebx,regs->ecx,regs->edx); | 315 | regs->eax,regs->ebx,regs->ecx,regs->edx); |
316 | printk("ESI: %08lx EDI: %08lx EBP: %08lx", | 316 | printk("ESI: %08lx EDI: %08lx EBP: %08lx", |
317 | regs->esi, regs->edi, regs->ebp); | 317 | regs->esi, regs->edi, regs->ebp); |
318 | printk(" DS: %04x ES: %04x\n", | 318 | printk(" DS: %04x ES: %04x GS: %04x\n", |
319 | 0xffff & regs->xds,0xffff & regs->xes); | 319 | 0xffff & regs->xds,0xffff & regs->xes, 0xffff & regs->xgs); |
320 | 320 | ||
321 | cr0 = read_cr0(); | 321 | cr0 = read_cr0(); |
322 | cr2 = read_cr2(); | 322 | cr2 = read_cr2(); |
@@ -509,7 +509,7 @@ void dump_thread(struct pt_regs * regs, struct user * dump) | |||
509 | dump->regs.ds = regs->xds; | 509 | dump->regs.ds = regs->xds; |
510 | dump->regs.es = regs->xes; | 510 | dump->regs.es = regs->xes; |
511 | savesegment(fs,dump->regs.fs); | 511 | savesegment(fs,dump->regs.fs); |
512 | savesegment(gs,dump->regs.gs); | 512 | dump->regs.gs = regs->xgs; |
513 | dump->regs.orig_eax = regs->orig_eax; | 513 | dump->regs.orig_eax = regs->orig_eax; |
514 | dump->regs.eip = regs->eip; | 514 | dump->regs.eip = regs->eip; |
515 | dump->regs.cs = regs->xcs; | 515 | dump->regs.cs = regs->xcs; |