1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _ASM_SPARC64_FTRACE 3*4882a593Smuzhiyun #define _ASM_SPARC64_FTRACE 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #ifdef CONFIG_MCOUNT 6*4882a593Smuzhiyun #define MCOUNT_ADDR ((unsigned long)(_mcount)) 7*4882a593Smuzhiyun #define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 10*4882a593Smuzhiyun void _mcount(void); 11*4882a593Smuzhiyun #endif 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #endif /* CONFIG_MCOUNT */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #if defined(CONFIG_SPARC64) && !defined(CC_USE_FENTRY) 16*4882a593Smuzhiyun #define HAVE_FUNCTION_GRAPH_FP_TEST 17*4882a593Smuzhiyun #endif 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #ifdef CONFIG_DYNAMIC_FTRACE 20*4882a593Smuzhiyun /* reloction of mcount call site is the same as the address */ ftrace_call_adjust(unsigned long addr)21*4882a593Smuzhiyunstatic inline unsigned long ftrace_call_adjust(unsigned long addr) 22*4882a593Smuzhiyun { 23*4882a593Smuzhiyun return addr; 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct dyn_arch_ftrace { 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun #endif /* CONFIG_DYNAMIC_FTRACE */ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun unsigned long prepare_ftrace_return(unsigned long parent, 31*4882a593Smuzhiyun unsigned long self_addr, 32*4882a593Smuzhiyun unsigned long frame_pointer); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #endif /* _ASM_SPARC64_FTRACE */ 35