]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - arch/s390/kernel/mcount64.S
Merge branch 'for-david' of git://git.open-mesh.org/ecsv/linux-merge
[mirror_ubuntu-bionic-kernel.git] / arch / s390 / kernel / mcount64.S
1 /*
2 * Copyright IBM Corp. 2008,2009
3 *
4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5 *
6 */
7
8 #include <asm/asm-offsets.h>
9
10 .section .kprobes.text, "ax"
11
12 .globl ftrace_stub
13 ftrace_stub:
14 br %r14
15
16 .globl _mcount
17 _mcount:
18 #ifdef CONFIG_DYNAMIC_FTRACE
19 br %r14
20
21 .globl ftrace_caller
22 ftrace_caller:
23 #endif
24 larl %r1,function_trace_stop
25 icm %r1,0xf,0(%r1)
26 bnzr %r14
27 stmg %r2,%r5,32(%r15)
28 stg %r14,112(%r15)
29 lgr %r1,%r15
30 aghi %r15,-160
31 stg %r1,__SF_BACKCHAIN(%r15)
32 lgr %r2,%r14
33 lg %r3,168(%r15)
34 larl %r14,ftrace_trace_function
35 lg %r14,0(%r14)
36 basr %r14,%r14
37 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
38 lg %r2,168(%r15)
39 lg %r3,272(%r15)
40 .globl ftrace_graph_caller
41 ftrace_graph_caller:
42 # The bras instruction gets runtime patched to call prepare_ftrace_return.
43 # See ftrace_enable_ftrace_graph_caller. The patched instruction is:
44 # bras %r14,prepare_ftrace_return
45 bras %r14,0f
46 0: stg %r2,168(%r15)
47 #endif
48 aghi %r15,160
49 lmg %r2,%r5,32(%r15)
50 lg %r14,112(%r15)
51 br %r14
52
53 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
54
55 .globl return_to_handler
56 return_to_handler:
57 stmg %r2,%r5,32(%r15)
58 lgr %r1,%r15
59 aghi %r15,-160
60 stg %r1,__SF_BACKCHAIN(%r15)
61 brasl %r14,ftrace_return_to_handler
62 aghi %r15,160
63 lgr %r14,%r2
64 lmg %r2,%r5,32(%r15)
65 br %r14
66
67 #endif