diff options
author | Jason Wessel <jason.wessel@windriver.com> | 2009-02-12 00:46:32 (GMT) |
---|---|---|
committer | Jason Wessel <jason.wessel@windriver.com> | 2009-05-15 12:56:25 (GMT) |
commit | 33ab1979bc9f719213bc3f392c8fd9d012e4f4e9 (patch) | |
tree | 4bec72fadd446a86c7ffc96269a9f83fc4a9f456 | |
parent | 364b5b7b1d793a7f98be55b6b154716dcae78dfc (diff) | |
download | linux-fsl-qoriq-33ab1979bc9f719213bc3f392c8fd9d012e4f4e9.tar.xz |
kgdb,i386: use address that SP register points to in the exception frame
The treatment of the SP register is different on x86_64 and i386.
This is a regression fix that lived outside the mainline kernel from
2.6.27 to now. The regression was a result of the original merge
consolidation of the i386 and x86_64 archs to x86.
The incorrectly reported SP on i386 prevented stack tracebacks from
working correctly in gdb.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-rw-r--r-- | arch/x86/kernel/kgdb.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c index eedfaeb..b1f4dff 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c @@ -88,6 +88,7 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) gdb_regs[GDB_SS] = __KERNEL_DS; gdb_regs[GDB_FS] = 0xFFFF; gdb_regs[GDB_GS] = 0xFFFF; + gdb_regs[GDB_SP] = (int)®s->sp; #else gdb_regs[GDB_R8] = regs->r8; gdb_regs[GDB_R9] = regs->r9; @@ -100,8 +101,8 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) gdb_regs32[GDB_PS] = regs->flags; gdb_regs32[GDB_CS] = regs->cs; gdb_regs32[GDB_SS] = regs->ss; -#endif gdb_regs[GDB_SP] = regs->sp; +#endif } /** |