xref: /linux/arch/sh/include/asm/ftrace.h (revision fad57feba77d2e5b183e068cb6b90693e4567b40)
14b4cf759SPaul Mundt #ifndef __ASM_SH_FTRACE_H
24b4cf759SPaul Mundt #define __ASM_SH_FTRACE_H
34b4cf759SPaul Mundt 
4*fad57febSMatt Fleming #ifdef CONFIG_FUNCTION_TRACER
5*fad57febSMatt Fleming 
6*fad57febSMatt Fleming #define MCOUNT_INSN_SIZE	4 /* sizeof mcount call */
7*fad57febSMatt Fleming 
84b4cf759SPaul Mundt #ifndef __ASSEMBLY__
94b4cf759SPaul Mundt extern void mcount(void);
10*fad57febSMatt Fleming 
11*fad57febSMatt Fleming #define MCOUNT_ADDR		((long)(mcount))
12*fad57febSMatt Fleming 
13*fad57febSMatt Fleming #ifdef CONFIG_DYNAMIC_FTRACE
14*fad57febSMatt Fleming #define CALLER_ADDR		((long)(ftrace_caller))
15*fad57febSMatt Fleming #define STUB_ADDR		((long)(ftrace_stub))
16*fad57febSMatt Fleming 
17*fad57febSMatt Fleming #define MCOUNT_INSN_OFFSET	((STUB_ADDR - CALLER_ADDR) >> 1)
184b4cf759SPaul Mundt #endif
194b4cf759SPaul Mundt 
20*fad57febSMatt Fleming static inline unsigned long ftrace_call_adjust(unsigned long addr)
21*fad57febSMatt Fleming {
22*fad57febSMatt Fleming 	/* 'addr' is the memory table address. */
23*fad57febSMatt Fleming 	return addr;
24*fad57febSMatt Fleming }
25*fad57febSMatt Fleming #endif
26*fad57febSMatt Fleming 
27*fad57febSMatt Fleming #endif /* CONFIG_FUNCTION_TRACER */
28*fad57febSMatt Fleming 
294b4cf759SPaul Mundt #endif /* __ASM_SH_FTRACE_H */
30