blob: 7e0bcc4d4a96e88d8ac9ce9e49b8ac8bca3791eb [file] [log] [blame]
Paul Mundt4b4cf752008-09-21 17:17:53 +09001#ifndef __ASM_SH_FTRACE_H
2#define __ASM_SH_FTRACE_H
3
Matt Flemingfad57fe2008-11-12 20:11:47 +09004#ifdef CONFIG_FUNCTION_TRACER
5
6#define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */
7
Paul Mundt4b4cf752008-09-21 17:17:53 +09008#ifndef __ASSEMBLY__
9extern void mcount(void);
Matt Flemingfad57fe2008-11-12 20:11:47 +090010
11#define MCOUNT_ADDR ((long)(mcount))
12
13#ifdef CONFIG_DYNAMIC_FTRACE
Matt Flemingca0d1722009-06-28 12:53:07 +010014#define CALL_ADDR ((long)(ftrace_call))
Matt Flemingfad57fe2008-11-12 20:11:47 +090015#define STUB_ADDR ((long)(ftrace_stub))
Matt Fleming327933f2009-07-11 00:29:03 +000016#define GRAPH_ADDR ((long)(ftrace_graph_call))
17#define CALLER_ADDR ((long)(ftrace_caller))
Matt Flemingfad57fe2008-11-12 20:11:47 +090018
Matt Flemingca0d1722009-06-28 12:53:07 +010019#define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4)
Matt Fleming327933f2009-07-11 00:29:03 +000020#define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4)
Paul Mundt22f131a2008-11-27 11:04:43 +090021
22struct dyn_arch_ftrace {
23 /* No extra data needed on sh */
24};
25
26#endif /* CONFIG_DYNAMIC_FTRACE */
Paul Mundt4b4cf752008-09-21 17:17:53 +090027
Matt Flemingfad57fe2008-11-12 20:11:47 +090028static inline unsigned long ftrace_call_adjust(unsigned long addr)
29{
30 /* 'addr' is the memory table address. */
31 return addr;
32}
Matt Flemingfad57fe2008-11-12 20:11:47 +090033
Paul Mundt22f131a2008-11-27 11:04:43 +090034#endif /* __ASSEMBLY__ */
Matt Flemingfad57fe2008-11-12 20:11:47 +090035#endif /* CONFIG_FUNCTION_TRACER */
36
Paul Mundt4b4cf752008-09-21 17:17:53 +090037#endif /* __ASM_SH_FTRACE_H */