1 #ifndef _ASM_ARM_FTRACE 2 #define _ASM_ARM_FTRACE 3 4 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS 5 #define ARCH_SUPPORTS_FTRACE_OPS 1 6 #endif 7 8 #ifdef CONFIG_FUNCTION_TRACER 9 #define MCOUNT_ADDR ((unsigned long)(__gnu_mcount_nc)) 10 #define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ 11 12 #ifndef __ASSEMBLY__ 13 extern void mcount(void); 14 extern void __gnu_mcount_nc(void); 15 16 #ifdef CONFIG_DYNAMIC_FTRACE 17 struct dyn_arch_ftrace { 18 #ifdef CONFIG_OLD_MCOUNT 19 bool old_mcount; 20 #endif 21 }; 22 23 static inline unsigned long ftrace_call_adjust(unsigned long addr) 24 { 25 /* With Thumb-2, the recorded addresses have the lsb set */ 26 return addr & ~1; 27 } 28 29 extern void ftrace_caller_old(void); 30 extern void ftrace_call_old(void); 31 #endif 32 33 #endif 34 35 #endif 36 37 #ifndef __ASSEMBLY__ 38 39 #if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) 40 /* 41 * return_address uses walk_stackframe to do it's work. If both 42 * CONFIG_FRAME_POINTER=y and CONFIG_ARM_UNWIND=y walk_stackframe uses unwind 43 * information. For this to work in the function tracer many functions would 44 * have to be marked with __notrace. So for now just depend on 45 * !CONFIG_ARM_UNWIND. 46 */ 47 48 void *return_address(unsigned int); 49 50 #else 51 52 static inline void *return_address(unsigned int level) 53 { 54 return NULL; 55 } 56 57 #endif 58 59 #define ftrace_return_address(n) return_address(n) 60 61 #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME 62 63 static inline bool arch_syscall_match_sym_name(const char *sym, 64 const char *name) 65 { 66 if (!strcmp(sym, "sys_mmap2")) 67 sym = "sys_mmap_pgoff"; 68 else if (!strcmp(sym, "sys_statfs64_wrapper")) 69 sym = "sys_statfs64"; 70 else if (!strcmp(sym, "sys_fstatfs64_wrapper")) 71 sym = "sys_fstatfs64"; 72 else if (!strcmp(sym, "sys_arm_fadvise64_64")) 73 sym = "sys_fadvise64_64"; 74 75 /* Ignore case since sym may start with "SyS" instead of "sys" */ 76 return !strcasecmp(sym, name); 77 } 78 79 #endif /* ifndef __ASSEMBLY__ */ 80 81 #endif /* _ASM_ARM_FTRACE */ 82