Merge tag 'ktest-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[deliverable/linux.git] / arch / metag / kernel / ftrace_stub.S
1 /*
2 * Copyright (C) 2008 Imagination Technologies Ltd.
3 * Licensed under the GPL
4 *
5 */
6
7 #include <asm/ftrace.h>
8
9 .text
10 #ifdef CONFIG_DYNAMIC_FTRACE
11 .global _mcount_wrapper
12 .type _mcount_wrapper,function
13 _mcount_wrapper:
14 MOV PC,D0.4
15
16 .global _ftrace_caller
17 .type _ftrace_caller,function
18 _ftrace_caller:
19 MOVT D0Re0,#HI(_function_trace_stop)
20 ADD D0Re0,D0Re0,#LO(_function_trace_stop)
21 GETD D0Re0,[D0Re0]
22 CMP D0Re0,#0
23 BEQ $Lcall_stub
24 MOV PC,D0.4
25 $Lcall_stub:
26 MSETL [A0StP], D0Ar6, D0Ar4, D0Ar2, D0.4
27 MOV D1Ar1, D0.4
28 MOV D0Ar2, D1RtP
29 SUB D1Ar1,D1Ar1,#MCOUNT_INSN_SIZE
30
31 .global _ftrace_call
32 _ftrace_call:
33 MOVT D1RtP,#HI(_ftrace_stub)
34 CALL D1RtP,#LO(_ftrace_stub)
35 GETL D0.4, D1RtP, [A0StP++#(-8)]
36 GETL D0Ar2, D1Ar1, [A0StP++#(-8)]
37 GETL D0Ar4, D1Ar3, [A0StP++#(-8)]
38 GETL D0Ar6, D1Ar5, [A0StP++#(-8)]
39 MOV PC, D0.4
40 #else
41
42 .global _mcount_wrapper
43 .type _mcount_wrapper,function
44 _mcount_wrapper:
45 MOVT D0Re0,#HI(_function_trace_stop)
46 ADD D0Re0,D0Re0,#LO(_function_trace_stop)
47 GETD D0Re0,[D0Re0]
48 CMP D0Re0,#0
49 BEQ $Lcall_mcount
50 MOV PC,D0.4
51 $Lcall_mcount:
52 MSETL [A0StP], D0Ar6, D0Ar4, D0Ar2, D0.4
53 MOV D1Ar1, D0.4
54 MOV D0Ar2, D1RtP
55 MOVT D0Re0,#HI(_ftrace_trace_function)
56 ADD D0Re0,D0Re0,#LO(_ftrace_trace_function)
57 GET D1Ar3,[D0Re0]
58 MOVT D1Re0,#HI(_ftrace_stub)
59 ADD D1Re0,D1Re0,#LO(_ftrace_stub)
60 CMP D1Ar3,D1Re0
61 BEQ $Ltrace_exit
62 MOV D1RtP,D1Ar3
63 SUB D1Ar1,D1Ar1,#MCOUNT_INSN_SIZE
64 SWAP PC,D1RtP
65 $Ltrace_exit:
66 GETL D0.4, D1RtP, [A0StP++#(-8)]
67 GETL D0Ar2, D1Ar1, [A0StP++#(-8)]
68 GETL D0Ar4, D1Ar3, [A0StP++#(-8)]
69 GETL D0Ar6, D1Ar5, [A0StP++#(-8)]
70 MOV PC, D0.4
71
72 #endif /* CONFIG_DYNAMIC_FTRACE */
73
74 .global _ftrace_stub
75 _ftrace_stub:
76 MOV PC,D1RtP
This page took 0.034284 seconds and 5 git commands to generate.