powerpc/ftrace: Prepare PPC64's ftrace_caller() for CONFIG_DYNAMIC_FTRACE_WITH_ARGS
In order to implement CONFIG_DYNAMIC_FTRACE_WITH_ARGS, change ftrace_caller() to handle LIVEPATCH the same way as frace_caller_regs(). Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/850817333cc76593699032e8e9a70d8c36e1af1e.1640017960.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
d95bf254be
commit
c75388a8ce
|
@ -172,14 +172,19 @@ _GLOBAL(ftrace_caller)
|
|||
addi r3, r3, function_trace_op@toc@l
|
||||
ld r5, 0(r3)
|
||||
|
||||
#ifdef CONFIG_LIVEPATCH_64
|
||||
SAVE_GPR(14, r1)
|
||||
mr r14,r7 /* remember old NIP */
|
||||
#endif
|
||||
/* Calculate ip from nip-4 into r3 for call below */
|
||||
subi r3, r7, MCOUNT_INSN_SIZE
|
||||
|
||||
/* Put the original return address in r4 as parent_ip */
|
||||
std r0, _LINK(r1)
|
||||
mr r4, r0
|
||||
|
||||
/* Set pt_regs to NULL */
|
||||
li r6, 0
|
||||
/* Load &pt_regs in r6 for call below */
|
||||
addi r6, r1 ,STACK_FRAME_OVERHEAD
|
||||
|
||||
/* ftrace_call(r3, r4, r5, r6) */
|
||||
.globl ftrace_call
|
||||
|
@ -189,6 +194,10 @@ ftrace_call:
|
|||
|
||||
ld r3, _NIP(r1)
|
||||
mtctr r3
|
||||
#ifdef CONFIG_LIVEPATCH_64
|
||||
cmpd r14, r3 /* has NIP been altered? */
|
||||
REST_GPR(14, r1)
|
||||
#endif
|
||||
|
||||
/* Restore gprs */
|
||||
REST_GPRS(3, 10, r1)
|
||||
|
@ -196,13 +205,17 @@ ftrace_call:
|
|||
/* Restore callee's TOC */
|
||||
ld r2, 24(r1)
|
||||
|
||||
/* Restore possibly modified LR */
|
||||
ld r0, _LINK(r1)
|
||||
mtlr r0
|
||||
|
||||
/* Pop our stack frame */
|
||||
addi r1, r1, SWITCH_FRAME_SIZE
|
||||
|
||||
/* Reload original LR */
|
||||
ld r0, LRSAVE(r1)
|
||||
mtlr r0
|
||||
|
||||
#ifdef CONFIG_LIVEPATCH_64
|
||||
/* Based on the cmpd above, if the NIP was altered handle livepatch */
|
||||
bne- livepatch_handler
|
||||
#endif
|
||||
/* Handle function_graph or go back */
|
||||
b ftrace_caller_common
|
||||
|
||||
|
|
Loading…
Reference in New Issue