18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __ASM_SH_FTRACE_H 38c2ecf20Sopenharmony_ci#define __ASM_SH_FTRACE_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#ifdef CONFIG_FUNCTION_TRACER 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ 88c2ecf20Sopenharmony_ci#define FTRACE_SYSCALL_MAX NR_syscalls 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__ 118c2ecf20Sopenharmony_ciextern void mcount(void); 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#define MCOUNT_ADDR ((unsigned long)(mcount)) 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#ifdef CONFIG_DYNAMIC_FTRACE 168c2ecf20Sopenharmony_ci#define CALL_ADDR ((long)(ftrace_call)) 178c2ecf20Sopenharmony_ci#define STUB_ADDR ((long)(ftrace_stub)) 188c2ecf20Sopenharmony_ci#define GRAPH_ADDR ((long)(ftrace_graph_call)) 198c2ecf20Sopenharmony_ci#define CALLER_ADDR ((long)(ftrace_caller)) 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#define MCOUNT_INSN_OFFSET ((STUB_ADDR - CALL_ADDR) - 4) 228c2ecf20Sopenharmony_ci#define GRAPH_INSN_OFFSET ((CALLER_ADDR - GRAPH_ADDR) - 4) 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_cistruct dyn_arch_ftrace { 258c2ecf20Sopenharmony_ci /* No extra data needed on sh */ 268c2ecf20Sopenharmony_ci}; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#endif /* CONFIG_DYNAMIC_FTRACE */ 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_cistatic inline unsigned long ftrace_call_adjust(unsigned long addr) 318c2ecf20Sopenharmony_ci{ 328c2ecf20Sopenharmony_ci /* 'addr' is the memory table address. */ 338c2ecf20Sopenharmony_ci return addr; 348c2ecf20Sopenharmony_ci} 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#endif /* __ASSEMBLY__ */ 378c2ecf20Sopenharmony_ci#endif /* CONFIG_FUNCTION_TRACER */ 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci/* arch/sh/kernel/return_address.c */ 428c2ecf20Sopenharmony_ciextern void *return_address(unsigned int); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#define ftrace_return_address(n) return_address(n) 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif /* __ASSEMBLY__ */ 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci#endif /* __ASM_SH_FTRACE_H */ 49