2008-09-21 17:17:53 +09:00
# ifndef __ASM_SH_FTRACE_H
# define __ASM_SH_FTRACE_H
2008-11-12 20:11:47 +09:00
# ifdef CONFIG_FUNCTION_TRACER
# define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */
2009-08-25 18:39:33 +09:00
# define FTRACE_SYSCALL_MAX NR_syscalls
2008-11-12 20:11:47 +09:00
2008-09-21 17:17:53 +09:00
# ifndef __ASSEMBLY__
extern void mcount ( void ) ;
2008-11-12 20:11:47 +09:00
2015-07-12 17:52:24 +08:00
# define MCOUNT_ADDR ((unsigned long)(mcount))
2008-11-12 20:11:47 +09:00
# ifdef CONFIG_DYNAMIC_FTRACE
2009-06-28 12:53:07 +01:00
# define CALL_ADDR ((long)(ftrace_call))
2008-11-12 20:11:47 +09:00
# define STUB_ADDR ((long)(ftrace_stub))
2009-07-11 00:29:03 +00:00
# define GRAPH_ADDR ((long)(ftrace_graph_call))
# define CALLER_ADDR ((long)(ftrace_caller))
2008-11-12 20:11:47 +09:00
2009-06-28 12:53:07 +01:00
# define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4)
2009-07-11 00:29:03 +00:00
# define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4)
2008-11-27 11:04:43 +09:00
struct dyn_arch_ftrace {
/* No extra data needed on sh */
} ;
# endif /* CONFIG_DYNAMIC_FTRACE */
2008-11-12 20:11:47 +09:00
static inline unsigned long ftrace_call_adjust ( unsigned long addr )
{
/* 'addr' is the memory table address. */
return addr ;
}
2008-09-21 17:17:53 +09:00
2009-10-14 11:49:49 +09:00
# endif /* __ASSEMBLY__ */
# endif /* CONFIG_FUNCTION_TRACER */
# ifndef __ASSEMBLY__
2009-10-13 13:10:14 +09:00
/* arch/sh/kernel/return_address.c */
extern void * return_address ( unsigned int ) ;
2009-10-11 17:56:17 +01:00
2014-05-20 20:31:04 +09:00
# define ftrace_return_address(n) return_address(n)
2009-10-11 17:56:17 +01:00
2008-11-27 11:04:43 +09:00
# endif /* __ASSEMBLY__ */
2008-11-12 20:11:47 +09:00
2008-09-21 17:17:53 +09:00
# endif /* __ASM_SH_FTRACE_H */