diff options
author | David McCullough <david_mccullough@au.securecomputing.com> | 2007-07-26 17:46:07 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-07-26 17:46:07 +0900 |
commit | c64ac9f0581a80b6200846e7007a33c3b24ef745 (patch) | |
tree | 2debaa0d6163c2052ba873f0bf07febac6013140 /arch/sh/kernel/process.c | |
parent | 1f25756a11d662a986553754bf398ccc38f3925e (diff) |
sh: fix get_wchan() for SH kernels without framepointers
Do not follow the frame pointers (/proc/X/task/1/stat) unless we were
compiled with them.
Signed-off-by: David McCullough <david_mccullough@au.securecomputing.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/process.c')
-rw-r--r-- | arch/sh/kernel/process.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 6334a4c54c7..3a1783010c0 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c @@ -474,7 +474,6 @@ out: unsigned long get_wchan(struct task_struct *p) { - unsigned long schedule_frame; unsigned long pc; if (!p || p == current || p->state == TASK_RUNNING) @@ -484,10 +483,13 @@ unsigned long get_wchan(struct task_struct *p) * The same comment as on the Alpha applies here, too ... */ pc = thread_saved_pc(p); + +#ifdef CONFIG_FRAME_POINTER if (in_sched_functions(pc)) { - schedule_frame = (unsigned long)p->thread.sp; + unsigned long schedule_frame = (unsigned long)p->thread.sp; return ((unsigned long *)schedule_frame)[21]; } +#endif return pc; } |