summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel
diff options
context:
space:
mode:
authorCorey Minyard <cminyard@mvista.com>2013-07-16 00:17:17 +0200
committerRalf Baechle <ralf@linux-mips.org>2013-09-03 14:46:27 +0200
commit05f226391d800b0b7696125eb9a13273ea9018f8 (patch)
tree06a9858c4cb5554d4cb4b338e0f6ae669ce78ba9 /arch/mips/kernel
parentMIPS: R4k clock source initialization bug fix (diff)
downloadlinux-05f226391d800b0b7696125eb9a13273ea9018f8.tar.xz
linux-05f226391d800b0b7696125eb9a13273ea9018f8.zip
MIPS: Ftrace: Fix function tracing return address to match
Dynamic function tracing was not working on MIPS. When doing dynamic tracing, the tracer attempts to match up the passed in address with the one the compiler creates in the mcount tables. The MIPS code was passing in the return address from the tracing function call, but the compiler tables were the address of the function call. So they wouldn't match. Just subtracting 8 from the return address will give the address of the function call. Easy enough. Signed-off-by: Corey Minyard <cminyard@mvista.com> [david.daney@cavium.com: Adjusted code comment and patch Subject.] Signed-off-by: David Daney <david.daney@cavium.com> Cc: linux-mips@linux-mips.org Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Patchwork: https://patchwork.linux-mips.org/patch/5592/
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r--arch/mips/kernel/mcount.S2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/mips/kernel/mcount.S b/arch/mips/kernel/mcount.S
index a03e93c4a946..539b6294b613 100644
--- a/arch/mips/kernel/mcount.S
+++ b/arch/mips/kernel/mcount.S
@@ -83,7 +83,7 @@ _mcount:
PTR_S MCOUNT_RA_ADDRESS_REG, PT_R12(sp)
#endif
- move a0, ra /* arg1: self return address */
+ PTR_SUBU a0, ra, 8 /* arg1: self address */
.globl ftrace_call
ftrace_call:
nop /* a placeholder for the call to a real tracing function */