aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/armksyms.c1
-rw-r--r--arch/arm/kernel/stacktrace.c12
2 files changed, 4 insertions, 9 deletions
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
index 4779f474f911..9179e8220314 100644
--- a/arch/arm/kernel/armksyms.c
+++ b/arch/arm/kernel/armksyms.c
@@ -76,6 +76,7 @@ EXPORT_SYMBOL(__const_udelay);
76 76
77 /* networking */ 77 /* networking */
78EXPORT_SYMBOL(csum_partial); 78EXPORT_SYMBOL(csum_partial);
79EXPORT_SYMBOL(csum_partial_copy_from_user);
79EXPORT_SYMBOL(csum_partial_copy_nocheck); 80EXPORT_SYMBOL(csum_partial_copy_nocheck);
80EXPORT_SYMBOL(__csum_ipv6_magic); 81EXPORT_SYMBOL(__csum_ipv6_magic);
81 82
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}