1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __ASM_SH_FTRACE_H 3 #define __ASM_SH_FTRACE_H 4 5 #ifdef CONFIG_FUNCTION_TRACER 6 7 #define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ 8 #define FTRACE_SYSCALL_MAX NR_syscalls 9 10 #ifndef __ASSEMBLY__ 11 extern void mcount(void); 12 13 #define MCOUNT_ADDR ((unsigned long)(mcount)) 14 15 #ifdef CONFIG_DYNAMIC_FTRACE 16 #define CALL_ADDR ((long)(ftrace_call)) 17 #define STUB_ADDR ((long)(ftrace_stub)) 18 #define GRAPH_ADDR ((long)(ftrace_graph_call)) 19 #define CALLER_ADDR ((long)(ftrace_caller)) 20 21 #define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4) 22 #define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4) 23 24 struct dyn_arch_ftrace { 25 /* No extra data needed on sh */ 26 }; 27 28 #endif /* CONFIG_DYNAMIC_FTRACE */ 29 30 static inline unsigned long ftrace_call_adjust(unsigned long addr) 31 { 32 /* 'addr' is the memory table address. */ 33 return addr; 34 } 35 36 #endif /* __ASSEMBLY__ */ 37 #endif /* CONFIG_FUNCTION_TRACER */ 38 39 #ifndef __ASSEMBLY__ 40 41 /* arch/sh/kernel/return_address.c */ 42 extern void *return_address(unsigned int); 43 44 #define ftrace_return_address(n) return_address(n) 45 46 #endif /* __ASSEMBLY__ */ 47 48 #endif /* __ASM_SH_FTRACE_H */ 49