- If the system call table on this arch is more complicated than a simple array
   of addresses of the system calls, implement an arch_syscall_addr to return
   the address of a given system call.
+- If the symbol names of the system calls do not match the function names on
+  this arch, define ARCH_HAS_SYSCALL_MATCH_SYM_NAME in asm/ftrace.h and
+  implement arch_syscall_match_sym_name with the appropriate logic to return
+  true if the function name corresponds with the symbol name.
 - Tag this arch as HAVE_SYSCALL_TRACEPOINTS.
 
 
 
 
 static struct syscall_metadata **syscalls_metadata;
 
+#ifndef ARCH_HAS_SYSCALL_MATCH_SYM_NAME
+static inline bool arch_syscall_match_sym_name(const char *sym, const char *name)
+{
+       /*
+        * Only compare after the "sys" prefix. Archs that use
+        * syscall wrappers may have syscalls symbols aliases prefixed
+        * with "SyS" instead of "sys", leading to an unwanted
+        * mismatch.
+        */
+       return !strcmp(sym + 3, name + 3);
+}
+#endif
+
 static __init struct syscall_metadata *
 find_syscall_meta(unsigned long syscall)
 {
        kallsyms_lookup(syscall, NULL, NULL, NULL, str);
 
        for ( ; start < stop; start++) {
-               /*
-                * Only compare after the "sys" prefix. Archs that use
-                * syscall wrappers may have syscalls symbols aliases prefixed
-                * with "SyS" instead of "sys", leading to an unwanted
-                * mismatch.
-                */
-               if ((*start)->name && !strcmp((*start)->name + 3, str + 3))
+               if ((*start)->name && arch_syscall_match_sym_name(str, (*start)->name))
                        return *start;
        }
        return NULL;