summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@flint.arm.linux.org.uk>2005-01-16 19:32:46 +0000
committerRussell King <rmk@flint.arm.linux.org.uk>2005-01-16 19:32:46 +0000
commit61642e3e074b78e62093cca39590b76dee6063dd (patch)
treeb4d5c6aa5a05696d36fcbcaa6aad1908b118b497
parentbfc52a39f05cf3c661d9b0ca5a98aef6e6a97f50 (diff)
[ARM] Fix profile_pc() for SMP
profile_pc() used thread_saved_fp() with the current task. However, thread_saved_fp() only returns sane values when called for threads which are presently sleeping, so this caused an oops. Instead, use regs->ARM_fp, which correspond with the frame pointer.
-rw-r--r--arch/arm/kernel/time.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index a46efa25f34b..3c92fe6f5acf 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -63,7 +63,7 @@ unsigned long profile_pc(struct pt_regs *regs)
unsigned long fp, pc = instruction_pointer(regs);
if (in_lock_functions(pc)) {
- fp = thread_saved_fp(current);
+ fp = regs->ARM_fp;
pc = pc_pointer(((unsigned long *)fp)[-1]);
}