Full support for Ginger Console
[linux-ginger.git] / arch / s390 / kernel / mcount.S
blobdfe015d7398c9e900f13810eb9b6bab6e52ca4f2
1 /*
2  * Copyright IBM Corp. 2008,2009
3  *
4  *   Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5  *
6  */
8 #include <asm/asm-offsets.h>
10         .globl ftrace_stub
11 ftrace_stub:
12         br      %r14
14         .globl _mcount
15 _mcount:
16 #ifdef CONFIG_DYNAMIC_FTRACE
17         br      %r14
19         .data
20         .globl  ftrace_dyn_func
21 ftrace_dyn_func:
22         .long   ftrace_stub
23         .previous
25         .globl ftrace_caller
26 ftrace_caller:
27 #endif
28         stm     %r2,%r5,16(%r15)
29         bras    %r1,2f
30 #ifdef CONFIG_DYNAMIC_FTRACE
31 0:      .long   ftrace_dyn_func
32 #else
33 0:      .long   ftrace_trace_function
34 #endif
35 1:      .long   function_trace_stop
36 2:      l       %r2,1b-0b(%r1)
37         icm     %r2,0xf,0(%r2)
38         jnz     3f
39         st      %r14,56(%r15)
40         lr      %r0,%r15
41         ahi     %r15,-96
42         l       %r3,100(%r15)
43         la      %r2,0(%r14)
44         st      %r0,__SF_BACKCHAIN(%r15)
45         la      %r3,0(%r3)
46         l       %r14,0b-0b(%r1)
47         l       %r14,0(%r14)
48         basr    %r14,%r14
49 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
50 #ifdef CONFIG_DYNAMIC_FTRACE
51         .globl  ftrace_graph_caller
52 ftrace_graph_caller:
53         # This unconditional branch gets runtime patched. Change only if
54         # you know what you are doing. See ftrace_enable_graph_caller().
55         j       1f
56 #endif
57         bras    %r1,0f
58         .long   prepare_ftrace_return
59 0:      l       %r2,152(%r15)
60         l       %r4,0(%r1)
61         l       %r3,100(%r15)
62         basr    %r14,%r4
63         st      %r2,100(%r15)
65 #endif
66         ahi     %r15,96
67         l       %r14,56(%r15)
68 3:      lm      %r2,%r5,16(%r15)
69         br      %r14
71 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
73         .globl  return_to_handler
74 return_to_handler:
75         stm     %r2,%r5,16(%r15)
76         st      %r14,56(%r15)
77         lr      %r0,%r15
78         ahi     %r15,-96
79         st      %r0,__SF_BACKCHAIN(%r15)
80         bras    %r1,0f
81         .long   ftrace_return_to_handler
82 0:      l       %r2,0b-0b(%r1)
83         basr    %r14,%r2
84         lr      %r14,%r2
85         ahi     %r15,96
86         lm      %r2,%r5,16(%r15)
87         br      %r14
89 #endif