36c8719926
Despite being located in the ftrace header, the CALLER_ADDRx definitions are used by generic code. As such, we have to provide it generically, and given that there is no real dependence on ftrace in the first place, the definitions can just be moved out. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
56 lines
1.4 KiB
C
56 lines
1.4 KiB
C
#ifndef __ASM_SH_FTRACE_H
|
|
#define __ASM_SH_FTRACE_H
|
|
|
|
#ifdef CONFIG_FUNCTION_TRACER
|
|
|
|
#define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */
|
|
#define FTRACE_SYSCALL_MAX NR_syscalls
|
|
|
|
#ifndef __ASSEMBLY__
|
|
extern void mcount(void);
|
|
|
|
#define MCOUNT_ADDR ((long)(mcount))
|
|
|
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
|
#define CALL_ADDR ((long)(ftrace_call))
|
|
#define STUB_ADDR ((long)(ftrace_stub))
|
|
#define GRAPH_ADDR ((long)(ftrace_graph_call))
|
|
#define CALLER_ADDR ((long)(ftrace_caller))
|
|
|
|
#define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4)
|
|
#define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4)
|
|
|
|
struct dyn_arch_ftrace {
|
|
/* No extra data needed on sh */
|
|
};
|
|
|
|
#endif /* CONFIG_DYNAMIC_FTRACE */
|
|
|
|
static inline unsigned long ftrace_call_adjust(unsigned long addr)
|
|
{
|
|
/* 'addr' is the memory table address. */
|
|
return addr;
|
|
}
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /* CONFIG_FUNCTION_TRACER */
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
/* arch/sh/kernel/return_address.c */
|
|
extern void *return_address(unsigned int);
|
|
|
|
#define HAVE_ARCH_CALLER_ADDR
|
|
|
|
#define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
|
|
#define CALLER_ADDR1 ((unsigned long)return_address(1))
|
|
#define CALLER_ADDR2 ((unsigned long)return_address(2))
|
|
#define CALLER_ADDR3 ((unsigned long)return_address(3))
|
|
#define CALLER_ADDR4 ((unsigned long)return_address(4))
|
|
#define CALLER_ADDR5 ((unsigned long)return_address(5))
|
|
#define CALLER_ADDR6 ((unsigned long)return_address(6))
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif /* __ASM_SH_FTRACE_H */
|