Commit bbc3708a authored by Markos Chandras's avatar Markos Chandras Committed by Ben Hutchings

MIPS: mcount: Adjust stack pointer for static trace in MIPS32

commit 8a574cfa upstream.

Every mcount() call in the MIPS 32-bit kernel is done as follows:

[...]
move at, ra
jal _mcount
addiu sp, sp, -8
[...]

but upon returning from the mcount() function, the stack pointer
is not adjusted properly. This is explained in details in 58b69401
(MIPS: Function tracer: Fix broken function tracing).

Commit ad8c3969 ("MIPS: Unbreak function tracer for 64-bit kernel.)
fixed the stack manipulation for 64-bit but it didn't fix it completely
for MIPS32.
Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7792/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent edeb8f82
...@@ -119,7 +119,11 @@ NESTED(_mcount, PT_SIZE, ra) ...@@ -119,7 +119,11 @@ NESTED(_mcount, PT_SIZE, ra)
nop nop
#endif #endif
b ftrace_stub b ftrace_stub
#ifdef CONFIG_32BIT
addiu sp, sp, 8
#else
nop nop
#endif
static_trace: static_trace:
MCOUNT_SAVE_REGS MCOUNT_SAVE_REGS
...@@ -129,6 +133,9 @@ static_trace: ...@@ -129,6 +133,9 @@ static_trace:
move a1, AT /* arg2: parent's return address */ move a1, AT /* arg2: parent's return address */
MCOUNT_RESTORE_REGS MCOUNT_RESTORE_REGS
#ifdef CONFIG_32BIT
addiu sp, sp, 8
#endif
.globl ftrace_stub .globl ftrace_stub
ftrace_stub: ftrace_stub:
RETURN_BACK RETURN_BACK
...@@ -177,6 +184,11 @@ NESTED(ftrace_graph_caller, PT_SIZE, ra) ...@@ -177,6 +184,11 @@ NESTED(ftrace_graph_caller, PT_SIZE, ra)
jal prepare_ftrace_return jal prepare_ftrace_return
nop nop
MCOUNT_RESTORE_REGS MCOUNT_RESTORE_REGS
#ifndef CONFIG_DYNAMIC_FTRACE
#ifdef CONFIG_32BIT
addiu sp, sp, 8
#endif
#endif
RETURN_BACK RETURN_BACK
END(ftrace_graph_caller) END(ftrace_graph_caller)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment