blob: 12f3a31f20af515fca635446b191a5eefb889016 [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 */
Paul Mundtc68e3202009-08-25 18:39:33 +09007#define FTRACE_SYSCALL_MAX NR_syscalls
Matt Flemingfad57fe2008-11-12 20:11:47 +09008
Paul Mundt4b4cf752008-09-21 17:17:53 +09009#ifndef __ASSEMBLY__
10extern void mcount(void);
Matt Flemingfad57fe2008-11-12 20:11:47 +090011
12#define MCOUNT_ADDR ((long)(mcount))
13
14#ifdef CONFIG_DYNAMIC_FTRACE
Matt Flemingca0d1722009-06-28 12:53:07 +010015#define CALL_ADDR ((long)(ftrace_call))
Matt Flemingfad57fe2008-11-12 20:11:47 +090016#define STUB_ADDR ((long)(ftrace_stub))
Matt Fleming327933f2009-07-11 00:29:03 +000017#define GRAPH_ADDR ((long)(ftrace_graph_call))
18#define CALLER_ADDR ((long)(ftrace_caller))
Matt Flemingfad57fe2008-11-12 20:11:47 +090019
Matt Flemingca0d1722009-06-28 12:53:07 +010020#define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4)
Matt Fleming327933f2009-07-11 00:29:03 +000021#define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4)
Paul Mundt22f131a2008-11-27 11:04:43 +090022
23struct dyn_arch_ftrace {
24 /* No extra data needed on sh */
25};
26
27#endif /* CONFIG_DYNAMIC_FTRACE */
Paul Mundt4b4cf752008-09-21 17:17:53 +090028
Matt Flemingfad57fe2008-11-12 20:11:47 +090029static inline unsigned long ftrace_call_adjust(unsigned long addr)
30{
31 /* 'addr' is the memory table address. */
32 return addr;
33}
Matt Flemingfad57fe2008-11-12 20:11:47 +090034
Paul Mundt22f131a2008-11-27 11:04:43 +090035#endif /* __ASSEMBLY__ */
Matt Flemingfad57fe2008-11-12 20:11:47 +090036#endif /* CONFIG_FUNCTION_TRACER */
37
Paul Mundt4b4cf752008-09-21 17:17:53 +090038#endif /* __ASM_SH_FTRACE_H */