Message ID | 20220125153656.1802079-6-ardb@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ARM: ftrace fixes and cleanups | expand |
On Tue, Jan 25, 2022 at 7:37 AM Ard Biesheuvel <ardb@kernel.org> wrote: > > Avoid explicit literal loads and instead, use accessor macros that > generate the optimal sequence depending on the architecture revision > being targeted. > > Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Note to fellow reviewers, Ard pointed out to me that the definition of ldr_va depends on his vmapped stack series: https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/commit/?h=arm-up-ti-in-task-v4&id=4e918ab13eaf40f19938659cb5a22c93172778a8 ("ARM: assembler: add optimized ldr/str macros to load variables from memory") Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > --- > arch/arm/kernel/entry-ftrace.S | 27 ++++++++------------ > 1 file changed, 11 insertions(+), 16 deletions(-) > > diff --git a/arch/arm/kernel/entry-ftrace.S b/arch/arm/kernel/entry-ftrace.S > index 67548c38a567..99720064a4c5 100644 > --- a/arch/arm/kernel/entry-ftrace.S > +++ b/arch/arm/kernel/entry-ftrace.S > @@ -35,23 +35,20 @@ > > .macro __mcount suffix > mcount_enter > - ldr r0, =ftrace_trace_function > - ldr r2, [r0] > + ldr_va r2, ftrace_trace_function > badr r0, .Lftrace_stub > cmp r0, r2 > bne 1f > > #ifdef CONFIG_FUNCTION_GRAPH_TRACER > - ldr r1, =ftrace_graph_return > - ldr r2, [r1] > - cmp r0, r2 > - bne ftrace_graph_caller\suffix > - > - ldr r1, =ftrace_graph_entry > - ldr r2, [r1] > - ldr r0, =ftrace_graph_entry_stub > - cmp r0, r2 > - bne ftrace_graph_caller\suffix > + ldr_va r2, ftrace_graph_return > + cmp r0, r2 > + bne ftrace_graph_caller\suffix > + > + ldr_va r2, ftrace_graph_entry > + mov_l r0, ftrace_graph_entry_stub > + cmp r0, r2 > + bne ftrace_graph_caller\suffix > #endif > > mcount_exit > @@ -87,8 +84,7 @@ > > mov r3, sp @ struct pt_regs* > > - ldr r2, =function_trace_op > - ldr r2, [r2] @ pointer to the current > + ldr_va r2, function_trace_op @ pointer to the current > @ function tracing op > > ldr r1, [sp, #S_LR] @ lr of instrumented func > @@ -141,8 +137,7 @@ ftrace_graph_regs_call: > mcount_adjust_addr r0, lr @ instrumented function > > #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS > - ldr r2, =function_trace_op > - ldr r2, [r2] @ pointer to the current > + ldr_va r2, function_trace_op @ pointer to the current > @ function tracing op > mov r3, #0 @ regs is NULL > #endif > -- > 2.30.2 >
diff --git a/arch/arm/kernel/entry-ftrace.S b/arch/arm/kernel/entry-ftrace.S index 67548c38a567..99720064a4c5 100644 --- a/arch/arm/kernel/entry-ftrace.S +++ b/arch/arm/kernel/entry-ftrace.S @@ -35,23 +35,20 @@ .macro __mcount suffix mcount_enter - ldr r0, =ftrace_trace_function - ldr r2, [r0] + ldr_va r2, ftrace_trace_function badr r0, .Lftrace_stub cmp r0, r2 bne 1f #ifdef CONFIG_FUNCTION_GRAPH_TRACER - ldr r1, =ftrace_graph_return - ldr r2, [r1] - cmp r0, r2 - bne ftrace_graph_caller\suffix - - ldr r1, =ftrace_graph_entry - ldr r2, [r1] - ldr r0, =ftrace_graph_entry_stub - cmp r0, r2 - bne ftrace_graph_caller\suffix + ldr_va r2, ftrace_graph_return + cmp r0, r2 + bne ftrace_graph_caller\suffix + + ldr_va r2, ftrace_graph_entry + mov_l r0, ftrace_graph_entry_stub + cmp r0, r2 + bne ftrace_graph_caller\suffix #endif mcount_exit @@ -87,8 +84,7 @@ mov r3, sp @ struct pt_regs* - ldr r2, =function_trace_op - ldr r2, [r2] @ pointer to the current + ldr_va r2, function_trace_op @ pointer to the current @ function tracing op ldr r1, [sp, #S_LR] @ lr of instrumented func @@ -141,8 +137,7 @@ ftrace_graph_regs_call: mcount_adjust_addr r0, lr @ instrumented function #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS - ldr r2, =function_trace_op - ldr r2, [r2] @ pointer to the current + ldr_va r2, function_trace_op @ pointer to the current @ function tracing op mov r3, #0 @ regs is NULL #endif
Avoid explicit literal loads and instead, use accessor macros that generate the optimal sequence depending on the architecture revision being targeted. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> --- arch/arm/kernel/entry-ftrace.S | 27 ++++++++------------ 1 file changed, 11 insertions(+), 16 deletions(-)