linux/arch/x86/kernel/syscall_64.c
<<
>>
Prefs
   1/* System call table for x86-64. */
   2
   3#include <linux/linkage.h>
   4#include <linux/sys.h>
   5#include <linux/cache.h>
   6#include <asm/asm-offsets.h>
   7
   8#define __SYSCALL_COMMON(nr, sym, compat) __SYSCALL_64(nr, sym, compat)
   9
  10#ifdef CONFIG_X86_X32_ABI
  11# define __SYSCALL_X32(nr, sym, compat) __SYSCALL_64(nr, sym, compat)
  12#else
  13# define __SYSCALL_X32(nr, sym, compat) /* nothing */
  14#endif
  15
  16#define __SYSCALL_64(nr, sym, compat) extern asmlinkage void sym(void) ;
  17#include <asm/syscalls_64.h>
  18#undef __SYSCALL_64
  19
  20#define __SYSCALL_64(nr, sym, compat) [nr] = sym,
  21
  22typedef void (*sys_call_ptr_t)(void);
  23
  24extern void sys_ni_syscall(void);
  25
  26const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
  27        /*
  28         * Smells like a compiler bug -- it doesn't work
  29         * when the & below is removed.
  30         */
  31        [0 ... __NR_syscall_max] = &sys_ni_syscall,
  32#include <asm/syscalls_64.h>
  33};
  34