[S390] convert/optimize csum_fold() to C
[deliverable/linux.git] / arch / s390 / kernel / mcount.S
CommitLineData
5d360a75 1/*
dfd9f7ab 2 * Copyright IBM Corp. 2008,2009
5d360a75
HC
3 *
4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5 *
6 */
7
cf087343
HC
8#include <asm/asm-offsets.h>
9
dfd9f7ab
HC
10 .globl ftrace_stub
11ftrace_stub:
12 br %r14
13
14#ifdef CONFIG_64BIT
15
16#ifdef CONFIG_DYNAMIC_FTRACE
17
18 .globl _mcount
5d360a75 19_mcount:
5d360a75
HC
20 br %r14
21
dfd9f7ab
HC
22 .globl ftrace_caller
23ftrace_caller:
8b4488f8
HC
24 larl %r1,function_trace_stop
25 icm %r1,0xf,0(%r1)
26 bnzr %r14
dfd9f7ab
HC
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_dyn_func
35 lg %r14,0(%r14)
36 basr %r14,%r14
88dbd203
HC
37#ifdef CONFIG_FUNCTION_GRAPH_TRACER
38 .globl ftrace_graph_caller
39ftrace_graph_caller:
40 # This unconditional branch gets runtime patched. Change only if
41 # you know what you are doing. See ftrace_enable_graph_caller().
42 j 0f
43 lg %r2,272(%r15)
44 lg %r3,168(%r15)
45 brasl %r14,prepare_ftrace_return
46 stg %r2,168(%r15)
470:
48#endif
dfd9f7ab
HC
49 aghi %r15,160
50 lmg %r2,%r5,32(%r15)
51 lg %r14,112(%r15)
5d360a75
HC
52 br %r14
53
dfd9f7ab
HC
54 .data
55 .globl ftrace_dyn_func
56ftrace_dyn_func:
57 .quad ftrace_stub
58 .previous
59
60#else /* CONFIG_DYNAMIC_FTRACE */
5d360a75 61
dfd9f7ab 62 .globl _mcount
5d360a75 63_mcount:
8b4488f8
HC
64 larl %r1,function_trace_stop
65 icm %r1,0xf,0(%r1)
66 bnzr %r14
dfd9f7ab 67 stmg %r2,%r5,32(%r15)
5d360a75
HC
68 stg %r14,112(%r15)
69 lgr %r1,%r15
70 aghi %r15,-160
cf087343 71 stg %r1,__SF_BACKCHAIN(%r15)
5d360a75
HC
72 lgr %r2,%r14
73 lg %r3,168(%r15)
74 larl %r14,ftrace_trace_function
75 lg %r14,0(%r14)
76 basr %r14,%r14
88dbd203
HC
77#ifdef CONFIG_FUNCTION_GRAPH_TRACER
78 lg %r2,272(%r15)
79 lg %r3,168(%r15)
80 brasl %r14,prepare_ftrace_return
81 stg %r2,168(%r15)
82#endif
5d360a75 83 aghi %r15,160
dfd9f7ab 84 lmg %r2,%r5,32(%r15)
5d360a75
HC
85 lg %r14,112(%r15)
86 br %r14
87
dfd9f7ab
HC
88#endif /* CONFIG_DYNAMIC_FTRACE */
89
88dbd203
HC
90#ifdef CONFIG_FUNCTION_GRAPH_TRACER
91
92 .globl return_to_handler
93return_to_handler:
94 stmg %r2,%r5,32(%r15)
95 lgr %r1,%r15
96 aghi %r15,-160
97 stg %r1,__SF_BACKCHAIN(%r15)
98 brasl %r14,ftrace_return_to_handler
99 aghi %r15,160
100 lgr %r14,%r2
101 lmg %r2,%r5,32(%r15)
102 br %r14
103
104#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
105
dfd9f7ab
HC
106#else /* CONFIG_64BIT */
107
108#ifdef CONFIG_DYNAMIC_FTRACE
109
110 .globl _mcount
111_mcount:
112 br %r14
113
114 .globl ftrace_caller
115ftrace_caller:
116 stm %r2,%r5,16(%r15)
8b4488f8
HC
117 bras %r1,2f
1180: .long ftrace_trace_function
1191: .long function_trace_stop
1202: l %r2,1b-0b(%r1)
121 icm %r2,0xf,0(%r2)
122 jnz 3f
dfd9f7ab 123 st %r14,56(%r15)
8b4488f8 124 lr %r0,%r15
dfd9f7ab
HC
125 ahi %r15,-96
126 l %r3,100(%r15)
127 la %r2,0(%r14)
8b4488f8 128 st %r0,__SF_BACKCHAIN(%r15)
dfd9f7ab 129 la %r3,0(%r3)
8b4488f8 130 l %r14,0b-0b(%r1)
dfd9f7ab
HC
131 l %r14,0(%r14)
132 basr %r14,%r14
88dbd203
HC
133#ifdef CONFIG_FUNCTION_GRAPH_TRACER
134 .globl ftrace_graph_caller
135ftrace_graph_caller:
136 # This unconditional branch gets runtime patched. Change only if
137 # you know what you are doing. See ftrace_enable_graph_caller().
138 j 1f
139 bras %r1,0f
140 .long prepare_ftrace_return
1410: l %r2,152(%r15)
142 l %r4,0(%r1)
143 l %r3,100(%r15)
144 basr %r14,%r4
145 st %r2,100(%r15)
1461:
147#endif
dfd9f7ab 148 ahi %r15,96
dfd9f7ab 149 l %r14,56(%r15)
8b4488f8 1503: lm %r2,%r5,16(%r15)
dfd9f7ab
HC
151 br %r14
152
153 .data
154 .globl ftrace_dyn_func
155ftrace_dyn_func:
156 .long ftrace_stub
157 .previous
158
159#else /* CONFIG_DYNAMIC_FTRACE */
160
161 .globl _mcount
162_mcount:
163 stm %r2,%r5,16(%r15)
8b4488f8
HC
164 bras %r1,2f
1650: .long ftrace_trace_function
1661: .long function_trace_stop
1672: l %r2,1b-0b(%r1)
168 icm %r2,0xf,0(%r2)
169 jnz 3f
dfd9f7ab 170 st %r14,56(%r15)
8b4488f8 171 lr %r0,%r15
dfd9f7ab
HC
172 ahi %r15,-96
173 l %r3,100(%r15)
174 la %r2,0(%r14)
8b4488f8 175 st %r0,__SF_BACKCHAIN(%r15)
dfd9f7ab 176 la %r3,0(%r3)
8b4488f8 177 l %r14,0b-0b(%r1)
dfd9f7ab
HC
178 l %r14,0(%r14)
179 basr %r14,%r14
88dbd203
HC
180#ifdef CONFIG_FUNCTION_GRAPH_TRACER
181 bras %r1,0f
182 .long prepare_ftrace_return
1830: l %r2,152(%r15)
184 l %r4,0(%r1)
185 l %r3,100(%r15)
186 basr %r14,%r4
187 st %r2,100(%r15)
188#endif
dfd9f7ab 189 ahi %r15,96
dfd9f7ab 190 l %r14,56(%r15)
8b4488f8 1913: lm %r2,%r5,16(%r15)
5d360a75
HC
192 br %r14
193
dfd9f7ab 194#endif /* CONFIG_DYNAMIC_FTRACE */
88dbd203
HC
195
196#ifdef CONFIG_FUNCTION_GRAPH_TRACER
197
198 .globl return_to_handler
199return_to_handler:
200 stm %r2,%r5,16(%r15)
201 st %r14,56(%r15)
202 lr %r0,%r15
203 ahi %r15,-96
204 st %r0,__SF_BACKCHAIN(%r15)
205 bras %r1,0f
206 .long ftrace_return_to_handler
2070: l %r2,0b-0b(%r1)
208 basr %r14,%r2
209 lr %r14,%r2
210 ahi %r15,96
211 lm %r2,%r5,16(%r15)
212 br %r14
213
214#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
215
5d360a75 216#endif /* CONFIG_64BIT */
This page took 0.085703 seconds and 5 git commands to generate.