Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/s390/kernel/mcount.S
10817 views
1
/*
2
* Copyright IBM Corp. 2008,2009
3
*
4
* Author(s): Heiko Carstens <[email protected]>,
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
stm %r2,%r5,16(%r15)
25
bras %r1,2f
26
0: .long ftrace_trace_function
27
1: .long function_trace_stop
28
2: l %r2,1b-0b(%r1)
29
icm %r2,0xf,0(%r2)
30
jnz 3f
31
st %r14,56(%r15)
32
lr %r0,%r15
33
ahi %r15,-96
34
l %r3,100(%r15)
35
la %r2,0(%r14)
36
st %r0,__SF_BACKCHAIN(%r15)
37
la %r3,0(%r3)
38
l %r14,0b-0b(%r1)
39
l %r14,0(%r14)
40
basr %r14,%r14
41
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
42
l %r2,100(%r15)
43
l %r3,152(%r15)
44
.globl ftrace_graph_caller
45
ftrace_graph_caller:
46
# The bras instruction gets runtime patched to call prepare_ftrace_return.
47
# See ftrace_enable_ftrace_graph_caller. The patched instruction is:
48
# bras %r14,prepare_ftrace_return
49
bras %r14,0f
50
0: st %r2,100(%r15)
51
#endif
52
ahi %r15,96
53
l %r14,56(%r15)
54
3: lm %r2,%r5,16(%r15)
55
br %r14
56
57
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
58
59
.globl return_to_handler
60
return_to_handler:
61
stm %r2,%r5,16(%r15)
62
st %r14,56(%r15)
63
lr %r0,%r15
64
ahi %r15,-96
65
st %r0,__SF_BACKCHAIN(%r15)
66
bras %r1,0f
67
.long ftrace_return_to_handler
68
0: l %r2,0b-0b(%r1)
69
basr %r14,%r2
70
lr %r14,%r2
71
ahi %r15,96
72
lm %r2,%r5,16(%r15)
73
br %r14
74
75
#endif
76
77