diff options
Diffstat (limited to 'arch/parisc/kernel/stacktrace.c')
-rw-r--r-- | arch/parisc/kernel/stacktrace.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/arch/parisc/kernel/stacktrace.c b/arch/parisc/kernel/stacktrace.c index 2fe914c5f533..ec5835e83a7a 100644 --- a/arch/parisc/kernel/stacktrace.c +++ b/arch/parisc/kernel/stacktrace.c | |||
@@ -16,20 +16,7 @@ static void dump_trace(struct task_struct *task, struct stack_trace *trace) | |||
16 | { | 16 | { |
17 | struct unwind_frame_info info; | 17 | struct unwind_frame_info info; |
18 | 18 | ||
19 | /* initialize unwind info */ | 19 | unwind_frame_init_task(&info, task, NULL); |
20 | if (task == current) { | ||
21 | unsigned long sp; | ||
22 | struct pt_regs r; | ||
23 | HERE: | ||
24 | asm volatile ("copy %%r30, %0" : "=r"(sp)); | ||
25 | memset(&r, 0, sizeof(struct pt_regs)); | ||
26 | r.iaoq[0] = (unsigned long)&&HERE; | ||
27 | r.gr[2] = (unsigned long)__builtin_return_address(0); | ||
28 | r.gr[30] = sp; | ||
29 | unwind_frame_init(&info, task, &r); | ||
30 | } else { | ||
31 | unwind_frame_init_from_blocked_task(&info, task); | ||
32 | } | ||
33 | 20 | ||
34 | /* unwind stack and save entries in stack_trace struct */ | 21 | /* unwind stack and save entries in stack_trace struct */ |
35 | trace->nr_entries = 0; | 22 | trace->nr_entries = 0; |