mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
MIPS: mcount: Adjust stack pointer for static trace in MIPS32
commit8a574cfa26
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 in58b69401c7
(MIPS: Function tracer: Fix broken function tracing). Commitad8c396936
("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: Markos Chandras <markos.chandras@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/7792/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Zefan Li <lizefan@huawei.com>
This commit is contained in:
parent
4fae6ccac6
commit
504c4611c9
1 changed files with 12 additions and 0 deletions
|
@ -119,7 +119,11 @@ NESTED(_mcount, PT_SIZE, ra)
|
|||
nop
|
||||
#endif
|
||||
b ftrace_stub
|
||||
#ifdef CONFIG_32BIT
|
||||
addiu sp, sp, 8
|
||||
#else
|
||||
nop
|
||||
#endif
|
||||
|
||||
static_trace:
|
||||
MCOUNT_SAVE_REGS
|
||||
|
@ -129,6 +133,9 @@ static_trace:
|
|||
move a1, AT /* arg2: parent's return address */
|
||||
|
||||
MCOUNT_RESTORE_REGS
|
||||
#ifdef CONFIG_32BIT
|
||||
addiu sp, sp, 8
|
||||
#endif
|
||||
.globl ftrace_stub
|
||||
ftrace_stub:
|
||||
RETURN_BACK
|
||||
|
@ -177,6 +184,11 @@ NESTED(ftrace_graph_caller, PT_SIZE, ra)
|
|||
jal prepare_ftrace_return
|
||||
nop
|
||||
MCOUNT_RESTORE_REGS
|
||||
#ifndef CONFIG_DYNAMIC_FTRACE
|
||||
#ifdef CONFIG_32BIT
|
||||
addiu sp, sp, 8
|
||||
#endif
|
||||
#endif
|
||||
RETURN_BACK
|
||||
END(ftrace_graph_caller)
|
||||
|
||||
|
|
Loading…
Reference in a new issue