1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2d3e75ff1SShaohua Li #ifndef _ASM_IA64_FTRACE_H 3d3e75ff1SShaohua Li #define _ASM_IA64_FTRACE_H 4d3e75ff1SShaohua Li 5d3e75ff1SShaohua Li #ifdef CONFIG_FUNCTION_TRACER 6d3e75ff1SShaohua Li #define MCOUNT_INSN_SIZE 32 /* sizeof mcount call */ 7d3e75ff1SShaohua Li 8d3e75ff1SShaohua Li #ifndef __ASSEMBLY__ 9d3e75ff1SShaohua Li extern void _mcount(unsigned long pfs, unsigned long r1, unsigned long b0, unsigned long r0); 10d3e75ff1SShaohua Li #define mcount _mcount 11d3e75ff1SShaohua Li 12a14a07b8SShaohua Li /* In IA64, MCOUNT_ADDR is set in link time, so it's not a constant at compile time */ 13a14a07b8SShaohua Li #define MCOUNT_ADDR (((struct fnptr *)mcount)->ip) 14a14a07b8SShaohua Li #define FTRACE_ADDR (((struct fnptr *)ftrace_caller)->ip) 15a14a07b8SShaohua Li ftrace_call_adjust(unsigned long addr)16a14a07b8SShaohua Listatic inline unsigned long ftrace_call_adjust(unsigned long addr) 17a14a07b8SShaohua Li { 18a14a07b8SShaohua Li /* second bundle, insn 2 */ 19a14a07b8SShaohua Li return addr - 0x12; 20a14a07b8SShaohua Li } 21a14a07b8SShaohua Li 22a14a07b8SShaohua Li struct dyn_arch_ftrace { 23a14a07b8SShaohua Li }; 24d3e75ff1SShaohua Li #endif 25d3e75ff1SShaohua Li 26d3e75ff1SShaohua Li #endif /* CONFIG_FUNCTION_TRACER */ 27d3e75ff1SShaohua Li 28d3e75ff1SShaohua Li #endif /* _ASM_IA64_FTRACE_H */ 29