ARM: ftrace: avoid unnecessary literal loads
authorArd Biesheuvel <ardb@kernel.org>
Tue, 7 Dec 2021 18:50:35 +0000 (19:50 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 9 Feb 2022 08:12:33 +0000 (09:12 +0100)
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>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
arch/arm/kernel/entry-ftrace.S

index 67548c38a567ed4dc7c688fdbf665fbac0e59f2b..99720064a4c570d87020c24d800242ce46dd905c 100644 (file)
 
 .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