Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

parisc: Use long jump to reach ftrace_return_to_handler()

Depending on config options we will need to use a long jump to reach
ftrace_return_to_handler(). Additionally only compile the
parisc_return_to_handler code when CONFIG_FUNCTION_GRAPH_TRACER is set.

Signed-off-by: Helge Deller <deller@gmx.de>

+10 -1
+10 -1
arch/parisc/kernel/entry.S
··· 2019 2019 .procend 2020 2020 ENDPROC(mcount) 2021 2021 2022 + #ifdef CONFIG_FUNCTION_GRAPH_TRACER 2022 2023 .align 8 2023 2024 .globl return_to_handler 2024 2025 .type return_to_handler, @function ··· 2041 2040 #endif 2042 2041 2043 2042 /* call ftrace_return_to_handler(0) */ 2043 + .import ftrace_return_to_handler,code 2044 + load32 ftrace_return_to_handler,%ret0 2045 + load32 .Lftrace_ret,%r2 2044 2046 #ifdef CONFIG_64BIT 2045 2047 ldo -16(%sp),%ret1 /* Reference param save area */ 2048 + bve (%ret0) 2049 + #else 2050 + bv %r0(%ret0) 2046 2051 #endif 2047 - BL ftrace_return_to_handler,%r2 2048 2052 ldi 0,%r26 2053 + .Lftrace_ret: 2049 2054 copy %ret0,%rp 2050 2055 2051 2056 /* restore original return values */ ··· 2068 2061 .exit 2069 2062 .procend 2070 2063 ENDPROC(return_to_handler) 2064 + 2065 + #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 2071 2066 2072 2067 #endif /* CONFIG_FUNCTION_TRACER */ 2073 2068