powerpc64/ftrace: Nop out additional 'std' instruction emitted by gcc v5.x
authorNaveen N Rao <naveen@kernel.org>
Wed, 30 Oct 2024 07:08:36 +0000 (12:38 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 31 Oct 2024 00:00:52 +0000 (11:00 +1100)
commit161d62c2b067c4071cb515efe16475171e1c051e
tree1ecfeac892d484f8227bcd54420800f32f2b5bec
parentbe87d713eaddf0421ccd61cc060c4c29bc36fc9b
powerpc64/ftrace: Nop out additional 'std' instruction emitted by gcc v5.x

Gcc v5.x emits a 3-instruction sequence for -mprofile-kernel:
mflr r0
std r0, 16(r1)
bl _mcount

Gcc v6.x moved to a simpler 2-instruction sequence by removing the 'std'
instruction. The store saved the return address in the LR save area in
the caller stack frame for stack unwinding. However, with dynamic
ftrace, we no longer have a call to _mcount on kernel boot when ftrace
is not enabled. When ftrace is enabled, that store is performed within
ftrace_caller(). As such, the additional 'std' instruction is redundant.
Nop it out on kernel boot.

With this change, we now use the same 2-instruction profiling sequence
with both -mprofile-kernel, as well as -fpatchable-function-entry on
64-bit powerpc.

Signed-off-by: Naveen N Rao <naveen@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://patch.msgid.link/20241030070850.1361304-4-hbathini@linux.ibm.com
arch/powerpc/kernel/trace/ftrace.c