]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blame - arch/powerpc/kernel/trace/ftrace_64.S
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
[mirror_ubuntu-kernels.git] / arch / powerpc / kernel / trace / ftrace_64.S
CommitLineData
2874c5fd 1/* SPDX-License-Identifier: GPL-2.0-or-later */
7853f9c0
NR
2/*
3 * Split from entry_64.S
7853f9c0
NR
4 */
5
6#include <linux/magic.h>
7#include <asm/ppc_asm.h>
8#include <asm/asm-offsets.h>
9#include <asm/ftrace.h>
10#include <asm/ppc-opcode.h>
11#include <asm/export.h>
12
67361cf8
NR
13.pushsection ".tramp.ftrace.text","aw",@progbits;
14.globl ftrace_tramp_text
15ftrace_tramp_text:
16 .space 64
17.popsection
18
19.pushsection ".tramp.ftrace.init","aw",@progbits;
20.globl ftrace_tramp_init
21ftrace_tramp_init:
22 .space 64
23.popsection
24
7853f9c0
NR
25_GLOBAL(mcount)
26_GLOBAL(_mcount)
27EXPORT_SYMBOL(_mcount)
28 mflr r12
29 mtctr r12
30 mtlr r0
31 bctr
32
7853f9c0 33#ifdef CONFIG_FUNCTION_GRAPH_TRACER
7853f9c0
NR
34_GLOBAL(return_to_handler)
35 /* need to save return values */
36 std r4, -32(r1)
37 std r3, -24(r1)
38 /* save TOC */
39 std r2, -16(r1)
40 std r31, -8(r1)
41 mr r31, r1
42 stdu r1, -112(r1)
43
44 /*
45 * We might be called from a module.
46 * Switch to our TOC to run inside the core kernel.
47 */
48 ld r2, PACATOC(r13)
49
50 bl ftrace_return_to_handler
51 nop
52
53 /* return value has real return address */
54 mtlr r3
55
56 ld r1, 0(r1)
57 ld r4, -32(r1)
58 ld r3, -24(r1)
59 ld r2, -16(r1)
60 ld r31, -8(r1)
61
62 /* Jump back to real return address */
63 blr
64#endif /* CONFIG_FUNCTION_GRAPH_TRACER */