root/arch/arm/include/asm/ftrace.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ftrace_call_adjust
  2. return_address
  3. arch_syscall_match_sym_name

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

/* [<][>][^][v][top][bottom][index][help] */