Commit | Line | Data |
---|---|---|
6ac2a4dd MS |
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 | .globl ftrace_stub | |
11 | ftrace_stub: | |
12 | br %r14 | |
13 | ||
14 | .globl _mcount | |
15 | _mcount: | |
16 | #ifdef CONFIG_DYNAMIC_FTRACE | |
17 | br %r14 | |
18 | ||
19 | .data | |
20 | .globl ftrace_dyn_func | |
21 | ftrace_dyn_func: | |
22 | .quad ftrace_stub | |
23 | .previous | |
24 | ||
25 | .globl ftrace_caller | |
26 | ftrace_caller: | |
27 | #endif | |
28 | larl %r1,function_trace_stop | |
29 | icm %r1,0xf,0(%r1) | |
30 | bnzr %r14 | |
31 | stmg %r2,%r5,32(%r15) | |
32 | stg %r14,112(%r15) | |
33 | lgr %r1,%r15 | |
34 | aghi %r15,-160 | |
35 | stg %r1,__SF_BACKCHAIN(%r15) | |
36 | lgr %r2,%r14 | |
37 | lg %r3,168(%r15) | |
38 | #ifdef CONFIG_DYNAMIC_FTRACE | |
39 | larl %r14,ftrace_dyn_func | |
40 | #else | |
41 | larl %r14,ftrace_trace_function | |
42 | #endif | |
43 | lg %r14,0(%r14) | |
44 | basr %r14,%r14 | |
45 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | |
46 | #ifdef CONFIG_DYNAMIC_FTRACE | |
47 | .globl ftrace_graph_caller | |
48 | ftrace_graph_caller: | |
49 | # This unconditional branch gets runtime patched. Change only if | |
50 | # you know what you are doing. See ftrace_enable_graph_caller(). | |
51 | j 0f | |
52 | #endif | |
53 | lg %r2,272(%r15) | |
54 | lg %r3,168(%r15) | |
55 | brasl %r14,prepare_ftrace_return | |
56 | stg %r2,168(%r15) | |
57 | 0: | |
58 | #endif | |
59 | aghi %r15,160 | |
60 | lmg %r2,%r5,32(%r15) | |
61 | lg %r14,112(%r15) | |
62 | br %r14 | |
63 | ||
64 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | |
65 | ||
66 | .globl return_to_handler | |
67 | return_to_handler: | |
68 | stmg %r2,%r5,32(%r15) | |
69 | lgr %r1,%r15 | |
70 | aghi %r15,-160 | |
71 | stg %r1,__SF_BACKCHAIN(%r15) | |
72 | brasl %r14,ftrace_return_to_handler | |
73 | aghi %r15,160 | |
74 | lgr %r14,%r2 | |
75 | lmg %r2,%r5,32(%r15) | |
76 | br %r14 | |
77 | ||
78 | #endif |