diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2009-10-12 17:12:18 -0400 | 
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2009-10-12 17:19:35 -0400 | 
| commit | 5ca6c0ca5dbf105d7b0ffdae2289519982189730 (patch) | |
| tree | c9226c93c710f56b416545bad112b77047c4de32 | |
| parent | a343c75d338aa2afaea4a2a8e40de9e67b6fb4a7 (diff) | |
x86: use kernel_stack_pointer() in kgdb.c
The way to obtain a kernel-mode stack pointer from a struct
pt_regs in 32-bit mode is "subtle": the stack doesn't actually
contain the stack pointer, but rather the location where it would
have been marks the actual previous stack frame.  For clarity, use
kernel_stack_pointer() instead of coding this weirdness
explicitly.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Jason Wessel <jason.wessel@windriver.com>
| -rw-r--r-- | arch/x86/kernel/kgdb.c | 3 | 
1 files changed, 1 insertions, 2 deletions
| diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c index 8d82a77a3f3b..3310d849abd2 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c | |||
| @@ -88,7 +88,6 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) | |||
| 88 | gdb_regs[GDB_SS] = __KERNEL_DS; | 88 | gdb_regs[GDB_SS] = __KERNEL_DS; | 
| 89 | gdb_regs[GDB_FS] = 0xFFFF; | 89 | gdb_regs[GDB_FS] = 0xFFFF; | 
| 90 | gdb_regs[GDB_GS] = 0xFFFF; | 90 | gdb_regs[GDB_GS] = 0xFFFF; | 
| 91 | gdb_regs[GDB_SP] = (int)®s->sp; | ||
| 92 | #else | 91 | #else | 
| 93 | gdb_regs[GDB_R8] = regs->r8; | 92 | gdb_regs[GDB_R8] = regs->r8; | 
| 94 | gdb_regs[GDB_R9] = regs->r9; | 93 | gdb_regs[GDB_R9] = regs->r9; | 
| @@ -101,8 +100,8 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) | |||
| 101 | gdb_regs32[GDB_PS] = regs->flags; | 100 | gdb_regs32[GDB_PS] = regs->flags; | 
| 102 | gdb_regs32[GDB_CS] = regs->cs; | 101 | gdb_regs32[GDB_CS] = regs->cs; | 
| 103 | gdb_regs32[GDB_SS] = regs->ss; | 102 | gdb_regs32[GDB_SS] = regs->ss; | 
| 104 | gdb_regs[GDB_SP] = regs->sp; | ||
| 105 | #endif | 103 | #endif | 
| 104 | gdb_regs[GDB_SP] = kernel_stack_pointer(regs); | ||
| 106 | } | 105 | } | 
| 107 | 106 | ||
| 108 | /** | 107 | /** | 
