]> Pileus Git - ~andy/linux/blob - arch/x86/include/asm/ftrace.h
Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing...
[~andy/linux] / arch / x86 / include / asm / ftrace.h
1 #ifndef _ASM_X86_FTRACE_H
2 #define _ASM_X86_FTRACE_H
3
4 #ifdef CONFIG_FUNCTION_TRACER
5 #define MCOUNT_ADDR             ((long)(mcount))
6 #define MCOUNT_INSN_SIZE        5 /* sizeof mcount call */
7
8 #ifndef __ASSEMBLY__
9 extern void mcount(void);
10
11 static inline unsigned long ftrace_call_adjust(unsigned long addr)
12 {
13         /*
14          * call mcount is "e8 <4 byte offset>"
15          * The addr points to the 4 byte offset and the caller of this
16          * function wants the pointer to e8. Simply subtract one.
17          */
18         return addr - 1;
19 }
20 #endif /* __ASSEMBLY__ */
21 #endif /* CONFIG_FUNCTION_TRACER */
22
23 #ifdef CONFIG_FUNCTION_RET_TRACER
24 #define FTRACE_RET_STACK_SIZE 20
25
26 #ifndef __ASSEMBLY__
27
28 /*
29  * Stack of return addresses for functions
30  * of a thread.
31  * Used in struct thread_info
32  */
33 struct ftrace_ret_stack {
34         unsigned long ret;
35         unsigned long func;
36         unsigned long long calltime;
37 };
38
39 /*
40  * Primary handler of a function return.
41  * It relays on ftrace_return_to_handler.
42  * Defined in entry32.S
43  */
44 extern void return_to_handler(void);
45
46 #endif /* __ASSEMBLY__ */
47 #endif /* CONFIG_FUNCTION_RET_TRACER */
48
49 #endif /* _ASM_X86_FTRACE_H */