ftrace: nmi safe code clean ups
[safe/jmp/linux-2.6] / 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
21 #ifdef CONFIG_DYNAMIC_FTRACE
22 extern void ftrace_nmi_enter(void);
23 extern void ftrace_nmi_exit(void);
24 #else
25 static inline void ftrace_nmi_enter(void) { }
26 static inline void ftrace_nmi_exit(void) { }
27 #endif
28 #endif /* __ASSEMBLY__ */
29
30 #else /* CONFIG_FUNCTION_TRACER */
31
32 #ifndef __ASSEMBLY__
33 static inline void ftrace_nmi_enter(void) { }
34 static inline void ftrace_nmi_exit(void) { }
35 #endif
36
37 #endif /* CONFIG_FUNCTION_TRACER */
38
39 #endif /* _ASM_X86_FTRACE_H */