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