aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/stacktrace.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-05-12 11:12:12 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-05-12 11:12:12 -0400
commit158304ef09a28c7f2dd37d78f536a4e09ba084a1 (patch)
tree2e6d808fef46d70268e547ccfc5926a865e3d2ea /arch/arm/kernel/stacktrace.c
parent641e79129a56a4c50be1aed0fa713f440b46a440 (diff)
parent25f4a81ef51b7c279786f5b81fe6d89510f46d99 (diff)
Merge branch 'fixes' into devel
Diffstat (limited to 'arch/arm/kernel/stacktrace.c')
-rw-r--r--arch/arm/kernel/stacktrace.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c
index 77ef35efaa8d..398d0c0511eb 100644
--- a/arch/arm/kernel/stacktrace.c
+++ b/arch/arm/kernel/stacktrace.c
@@ -52,21 +52,15 @@ static int save_trace(struct stackframe *frame, void *d)
52 return trace->nr_entries >= trace->max_entries; 52 return trace->nr_entries >= trace->max_entries;
53} 53}
54 54
55void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 55void save_stack_trace(struct stack_trace *trace)
56{ 56{
57 struct stack_trace_data data; 57 struct stack_trace_data data;
58 unsigned long fp, base; 58 unsigned long fp, base;
59 59
60 data.trace = trace; 60 data.trace = trace;
61 data.skip = trace->skip; 61 data.skip = trace->skip;
62 62 base = (unsigned long)task_stack_page(current);
63 if (task) { 63 asm("mov %0, fp" : "=r" (fp));
64 base = (unsigned long)task_stack_page(task);
65 fp = 0; /* FIXME */
66 } else {
67 base = (unsigned long)task_stack_page(current);
68 asm("mov %0, fp" : "=r" (fp));
69 }
70 64
71 walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data); 65 walk_stackframe(fp, base, base + THREAD_SIZE, save_trace, &data);
72} 66}