80641224a0959299dff6ba72c8119378ecd87059
[linux-2.6.git] / arch / s390 / kernel / mcount.S
1 /*
2  * Copyright IBM Corp. 2008
3  *
4  *   Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
5  *
6  */
7
8 #include <asm/asm-offsets.h>
9
10 #ifndef CONFIG_64BIT
11 .globl _mcount
12 _mcount:
13         stm     %r0,%r5,8(%r15)
14         st      %r14,56(%r15)
15         lr      %r1,%r15
16         ahi     %r15,-96
17         l       %r3,100(%r15)
18         la      %r2,0(%r14)
19         st      %r1,__SF_BACKCHAIN(%r15)
20         la      %r3,0(%r3)
21         bras    %r14,0f
22         .long   ftrace_trace_function
23 0:      l       %r14,0(%r14)
24         l       %r14,0(%r14)
25         basr    %r14,%r14
26         ahi     %r15,96
27         lm      %r0,%r5,8(%r15)
28         l       %r14,56(%r15)
29         br      %r14
30
31 .globl ftrace_stub
32 ftrace_stub:
33         br      %r14
34
35 #else /* CONFIG_64BIT */
36
37 .globl _mcount
38 _mcount:
39         stmg    %r0,%r5,16(%r15)
40         stg     %r14,112(%r15)
41         lgr     %r1,%r15
42         aghi    %r15,-160
43         stg     %r1,__SF_BACKCHAIN(%r15)
44         lgr     %r2,%r14
45         lg      %r3,168(%r15)
46         larl    %r14,ftrace_trace_function
47         lg      %r14,0(%r14)
48         basr    %r14,%r14
49         aghi    %r15,160
50         lmg     %r0,%r5,16(%r15)
51         lg      %r14,112(%r15)
52         br      %r14
53
54 .globl ftrace_stub
55 ftrace_stub:
56         br      %r14
57
58 #endif /* CONFIG_64BIT */