summaryrefslogtreecommitdiff
path: root/arch/um/sys-i386/sysrq.c
diff options
context:
space:
mode:
authorAllan Graves <allan.graves@oracle.com>2005-10-04 18:53:52 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-04 20:22:01 (GMT)
commitfad1c45c939bb246a488be1fa06f539e85b80545 (patch)
tree2a368da0e73817083caed84f4fe8085fcb654554 /arch/um/sys-i386/sysrq.c
parent71dc036247573e377703233af289019f4aa3176e (diff)
downloadlinux-fsl-qoriq-fad1c45c939bb246a488be1fa06f539e85b80545.tar.xz
[PATCH] uml: Fix sysrq-r support for skas mode
The old code had the IP and SP coming from the registers in the thread struct, which are completely wrong since those are the userspace registers. This fixes that by pulling the correct values from the jmp_buf in which the kernel state of each thread is stored. Signed-off-by: Allan Graves <allan.graves@oracle.com> Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/sys-i386/sysrq.c')
-rw-r--r--arch/um/sys-i386/sysrq.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/arch/um/sys-i386/sysrq.c b/arch/um/sys-i386/sysrq.c
index e3706d1..d5244f0 100644
--- a/arch/um/sys-i386/sysrq.c
+++ b/arch/um/sys-i386/sysrq.c
@@ -88,9 +88,7 @@ void show_trace(struct task_struct* task, unsigned long * stack)
task = current;
if (task != current) {
- //ebp = (unsigned long) KSTK_EBP(task);
- /* Which one? No actual difference - just coding style.*/
- ebp = (unsigned long) PT_REGS_EBP(&task->thread.regs);
+ ebp = (unsigned long) KSTK_EBP(task);
} else {
asm ("movl %%ebp, %0" : "=r" (ebp) : );
}
@@ -99,15 +97,6 @@ void show_trace(struct task_struct* task, unsigned long * stack)
((unsigned long)stack & (~(THREAD_SIZE - 1)));
print_context_stack(context, stack, ebp);
- /*while (((long) stack & (THREAD_SIZE-1)) != 0) {
- addr = *stack;
- if (__kernel_text_address(addr)) {
- printk("%08lx: [<%08lx>]", (unsigned long) stack, addr);
- print_symbol(" %s", addr);
- printk("\n");
- }
- stack++;
- }*/
printk("\n");
}