[PATCH 2/2] Add AArch64 support to strace

Steve McIntyre steve.mcintyre at linaro.org
Tue Oct 23 16:38:22 UTC 2012


Add AArch64 support to strace

AArch64 has been included in Linux from 3.7 onwards. Add support for
AArch64 in strace, tested on Linux in a simulator.

* configure.ac: Support AArch64.
* defs.h: Support AArch64.
* ipc.c: Support AArch64.
* process.c: Support AArch64.
* syscall.c: Support AArch64. Uses new PTRACE_GETREGSET ptrace request
instead of PTRACE_GETREGS, so also include sys/uio.h and elf.h for needed
definitions.
* linux/aarch64/*: Set up definitions for AArch64. Initially based on
ARM defs, added syscallent.h based on kernel 3.7 version of
asm-generic/unistd.h.

Signed-off-by: Steve McIntyre <steve.mcintyre at linaro.org>
---
 configure.ac                |    4 +
 defs.h                      |    5 +-
 ipc.c                       |    2 +-
 linux/aarch64/ioctlent.h.in |    1 +
 linux/aarch64/syscallent.h  | 1096 +++++++++++++++++++++++++++++++++++++++++++
 process.c                   |    7 +-
 syscall.c                   |   34 ++
 7 files changed, 1143 insertions(+), 6 deletions(-)
 create mode 100644 linux/aarch64/ioctlent.h.in
 create mode 100644 linux/aarch64/syscallent.h

diff --git a/configure.ac b/configure.ac
index a9f8d15..f44eaf1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,6 +56,10 @@ arm*)
 	arch=arm
 	AC_DEFINE([ARM], 1, [Define for the ARM architecture.])
 	;;
+aarch64*)
+	arch=aarch64
+	AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
+	;;
 avr32*)
 	arch=avr32
 	AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.])
diff --git a/defs.h b/defs.h
index 7814bbd..b0846cd 100644
--- a/defs.h
+++ b/defs.h
@@ -134,7 +134,7 @@ extern char *stpcpy(char *dst, const char *src);
 # define LINUX_MIPS64
 #endif
 
-#if (defined(LINUXSPARC) || defined(X86_64) || defined(ARM) || defined(AVR32)) && defined(__GLIBC__)
+#if (defined(LINUXSPARC) || defined(X86_64) || defined(ARM) || defined(AARCH64) || defined(AVR32)) && defined(__GLIBC__)
 # include <sys/ptrace.h>
 #else
 /* Work around awkward prototype in ptrace.h. */
@@ -389,7 +389,8 @@ struct tcb {
 #if defined(ALPHA) || defined(AVR32) || defined(SPARC) || defined(SPARC64) \
   || defined(POWERPC) || defined(IA64) || defined(HPPA) \
   || defined(SH) || defined(SH64) || defined(S390) || defined(S390X) \
-  || defined(ARM) || defined(MIPS) || defined(BFIN) || defined(TILE)
+  || defined(ARM) || defined(AARCH64) || defined(MIPS) || defined(BFIN) \
+  || defined(TILE)
 /* This tracee has entered into execve syscall. Expect post-execve SIGTRAP
  * to happen. (When it is detected, tracee is continued and this bit is cleared.)
  */
diff --git a/ipc.c b/ipc.c
index f4ec522..0bde1cf 100644
--- a/ipc.c
+++ b/ipc.c
@@ -174,7 +174,7 @@ indirect_ipccall(struct tcb *tcp)
 #if defined IA64
 	return tcp->scno < 1024; /* ia32 emulation syscalls are low */
 #endif
-#if defined(ALPHA) || defined(MIPS) || defined(HPPA) || defined(__ARM_EABI__)
+#if defined(ALPHA) || defined(MIPS) || defined(HPPA) || defined(__ARM_EABI__) || defined(AARCH64)
 	return 0;
 #endif
 	return 1;
diff --git a/linux/aarch64/ioctlent.h.in b/linux/aarch64/ioctlent.h.in
new file mode 100644
index 0000000..83e6eb2
--- /dev/null
+++ b/linux/aarch64/ioctlent.h.in
@@ -0,0 +1 @@
+#include "../arm/ioctlent.h.in"
diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h
new file mode 100644
index 0000000..76b4df3
--- /dev/null
+++ b/linux/aarch64/syscallent.h
@@ -0,0 +1,1096 @@
+	{ 2,	0,	sys_io_setup,			"io_setup"			}, /*    0 */
+	{ 1,	0,	sys_io_destroy,			"io_destroy"			}, /*    1 */
+	{ 3,	0,	sys_io_submit,			"io_submit"			}, /*    2 */
+	{ 3,	0,	sys_io_cancel,			"io_cancel"			}, /*    3 */
+	{ 5,	0,	sys_io_getevents,		"io_getevents"			}, /*    4 */
+	{ 5,	TF,	sys_setxattr,			"setxattr"			}, /*    5 */
+	{ 5,	TF,	sys_setxattr,			"lsetxattr"			}, /*    6 */
+	{ 5,	TD,	sys_fsetxattr,			"fsetxattr"			}, /*    7 */
+	{ 4,	TF,	sys_getxattr,			"getxattr"			}, /*    8 */
+	{ 4,	TF,	sys_getxattr,			"lgetxattr"			}, /*    9 */
+	{ 4,	TD,	sys_fgetxattr,			"fgetxattr"			}, /*   10 */
+	{ 3,	TF,	sys_listxattr,			"listxattr"			}, /*   11 */
+	{ 3,	TF,	sys_listxattr,			"llistxattr"			}, /*   12 */
+	{ 3,	TD,	sys_flistxattr,			"flistxattr"			}, /*   13 */
+	{ 2,	TF,	sys_removexattr,		"removexattr"			}, /*   14 */
+	{ 2,	TF,	sys_removexattr,		"lremovexattr"			}, /*   15 */
+	{ 2,	TD,	sys_fremovexattr,		"fremovexattr"			}, /*   16 */
+	{ 2,	TF,	sys_getcwd,			"getcwd"			}, /*   17 */
+	{ 4,	0,	sys_lookup_dcookie,		"lookup_dcookie"		}, /*   18 */
+	{ 2,	TD,	sys_eventfd2,			"eventfd2"			}, /*   19 */
+	{ 1,	TD,	sys_epoll_create1,		"epoll_create1"			}, /*   20 */
+	{ 4,	TD,	sys_epoll_ctl,			"epoll_ctl"			}, /*   21 */
+	{ 6,	TD,	sys_epoll_pwait,		"epoll_pwait"			}, /*   22 */
+	{ 1,	TD,	sys_dup,			"dup"				}, /*   23 */
+	{ 3,	TD,	sys_dup3,			"dup3"				}, /*   24 */
+	{ 3,	TD,	sys_fcntl,			"fcntl"				}, /*   25 */
+	{ 1,	TD,	sys_inotify_init1,		"inotify_init1"			}, /*   26 */
+	{ 3,	TD,	sys_inotify_add_watch,		"inotify_add_watch"		}, /*   27 */
+	{ 2,	TD,	sys_inotify_rm_watch,		"inotify_rm_watch"		}, /*   28 */
+	{ 3,	TD,	sys_ioctl,			"ioctl"				}, /*   29 */
+	{ 3,	0,	sys_ioprio_set,			"ioprio_set"			}, /*   30 */
+	{ 2,	0,	sys_ioprio_get,			"ioprio_get"			}, /*   31 */
+	{ 2,	TD,	sys_flock,			"flock"				}, /*   32 */
+	{ 4,	TD|TF,	sys_mknodat,			"mknodat"			}, /*   33 */
+	{ 3,	TD|TF,	sys_mkdirat,			"mkdirat"			}, /*   34 */
+	{ 3,	TD|TF,	sys_unlinkat,			"unlinkat"			}, /*   35 */
+	{ 3,	TD|TF,	sys_symlinkat,			"symlinkat"			}, /*   36 */
+	{ 5,	TD|TF,	sys_linkat,			"linkat"			}, /*   37 */
+	{ 4,	TD|TF,	sys_renameat,			"renameat"			}, /*   38 */
+	{ 2,	TF,	sys_umount2,			"umount2"			}, /*   39 */
+	{ 5,	TF,	sys_mount,			"mount"				}, /*   40 */
+	{ 2,	TF,	sys_pivotroot,			"pivot_root"			}, /*   41 */
+	{ 3,	0,	sys_nfsservctl,			"nfsservctl"			}, /*   42 */
+	{ 2,	TF,	sys_statfs,			"statfs64"			}, /*   43 */
+	{ 2,	TD,	sys_fstatfs,			"fstatfs64"			}, /*   44 */
+	{ 2,	TF,	sys_truncate,			"truncate64"			}, /*   45 */
+	{ 2,	TD,	sys_ftruncate,			"ftruncate64"			}, /*   46 */
+	{ 6,	TD,	sys_fallocate,			"fallocate"			}, /*   47 */
+	{ 3,	TD|TF,	sys_faccessat,			"faccessat"			}, /*   48 */
+	{ 1,	TF,	sys_chdir,			"chdir"				}, /*   49 */
+	{ 1,	TD,	sys_fchdir,			"fchdir"			}, /*   50 */
+	{ 1,	TF,	sys_chroot,			"chroot"			}, /*   51 */
+	{ 2,	TD,	sys_fchmod,			"fchmod"			}, /*   52 */
+	{ 3,	TD|TF,	sys_fchmodat,			"fchmodat"			}, /*   53 */
+	{ 5,	TD|TF,	sys_fchownat,			"fchownat"			}, /*   54 */
+	{ 3,	TD,	sys_fchown,			"fchown"			}, /*   55 */
+	{ 4,	TD|TF,	sys_openat,			"openat"			}, /*   56 */
+	{ 1,	TD,	sys_close,			"close"				}, /*   57 */
+	{ 0,	0,	sys_vhangup,			"vhangup"			}, /*   58 */
+	{ 2,	TD,	sys_pipe2,			"pipe2"				}, /*   59 */
+	{ 4,	0,	sys_quotactl,			"quotactl"			}, /*   60 */
+	{ 3,	TD,	sys_getdents64,			"getdents64"			}, /*   61 */
+	{ 3,	TD,	sys_lseek,			"lseek"				}, /*   62 */
+	{ 3,	TD,	sys_read,			"read"				}, /*   63 */
+	{ 3,	TD,	sys_write,			"write"				}, /*   64 */
+	{ 3,	TD,	sys_readv,			"readv"				}, /*   65 */
+	{ 3,	TD,	sys_writev,			"writev"			}, /*   66 */
+	{ 5,	TD,	sys_pread,			"pread64"			}, /*   67 */
+	{ 5,	TD,	sys_pwrite,			"pwrite64"			}, /*   68 */
+	{ 5,	TD,	sys_preadv,			"preadv"			}, /*   69 */
+	{ 5,	TD,	sys_pwritev,			"pwritev"			}, /*   70 */
+	{ 4,	TD|TN,	sys_sendfile,			"sendfile"			}, /*   71 */
+	{ 6,	TD,	sys_pselect6,			"pselect6"			}, /*   72 */
+	{ 5,	TD,	sys_ppoll,			"ppoll"				}, /*   73 */
+	{ 4,	TD|TS,	sys_signalfd4,			"signalfd4"			}, /*   74 */
+	{ 4,	TD,	sys_vmsplice,			"vmsplice"			}, /*   75 */
+	{ 6,	TD,	sys_splice,			"splice"			}, /*   76 */
+	{ 4,	TD,	sys_tee,			"tee"				}, /*   77 */
+	{ 4,	TD|TF,	sys_readlinkat,			"readlinkat"			}, /*   78 */
+	{ 4,	TD|TF,	sys_newfstatat,			"newfstatat"			}, /*   79 */
+	{ 2,	TD,	sys_fstat,			"fstat"				}, /*   80 */
+	{ 0,	0,	sys_sync,			"sync"				}, /*   81 */
+	{ 1,	TD,	sys_fsync,			"fsync"				}, /*   82 */
+	{ 1,	TD,	sys_fdatasync,			"fdatasync"			}, /*   83 */
+	{ 4,	TD,	sys_sync_file_range,		"sync_file_range"		}, /*   84 */
+	{ 2,	TD,	sys_timerfd_create,		"timerfd_create"		}, /*   85 */
+	{ 4,	TD,	sys_timerfd_settime,		"timerfd_settime"		}, /*   86 */
+	{ 2,	TD,	sys_timerfd_gettime,		"timerfd_gettime"		}, /*   87 */
+	{ 4,	TD|TF,	sys_utimensat,			"utimensat"			}, /*   88 */
+	{ 1,	TF,	sys_acct,			"acct"				}, /*   89 */
+	{ 2,	0,	sys_capget,			"capget"			}, /*   90 */
+	{ 2,	0,	sys_capset,			"capset"			}, /*   91 */
+	{ 1,	0,	sys_personality,		"personality"			}, /*   92 */
+	{ 1,	TP,	sys_exit,			"exit"				}, /*   93 */
+	{ 1,	TP,	sys_exit,			"exit_group"			}, /*   94 */
+	{ 5,	TP,	sys_waitid,			"waitid"			}, /*   95 */
+	{ 1,	0,	sys_set_tid_address,		"set_tid_address"		}, /*   96 */
+	{ 1,	TP,	sys_unshare,			"unshare"			}, /*   97 */
+	{ 6,	0,	sys_futex,			"futex"				}, /*   98 */
+	{ 2,	0,	sys_set_robust_list,		"set_robust_list"		}, /*   99 */
+	{ 3,	0,	sys_get_robust_list,		"get_robust_list"		}, /*  100 */
+	{ 2,	0,	sys_nanosleep,			"nanosleep"			}, /*  101 */
+	{ 2,	0,	sys_getitimer,			"getitimer"			}, /*  102 */
+	{ 3,	0,	sys_setitimer,			"setitimer"			}, /*  103 */
+	{ 4,	0,	sys_kexec_load,			"kexec_load"			}, /*  104 */
+	{ 3,	0,	sys_init_module,		"init_module"			}, /*  105 */
+	{ 2,	0,	sys_delete_module,		"delete_module"			}, /*  106 */
+	{ 3,	0,	sys_timer_create,		"timer_create"			}, /*  107 */
+	{ 2,	0,	sys_timer_gettime,		"timer_gettime"			}, /*  108 */
+	{ 1,	0,	sys_timer_getoverrun,		"timer_getoverrun"		}, /*  109 */
+	{ 4,	0,	sys_timer_settime,		"timer_settime"			}, /*  110 */
+	{ 1,	0,	sys_timer_delete,		"timer_delete"			}, /*  111 */
+	{ 2,	0,	sys_clock_settime,		"clock_settime"			}, /*  112 */
+	{ 2,	0,	sys_clock_gettime,		"clock_gettime"			}, /*  113 */
+	{ 2,	0,	sys_clock_getres,		"clock_getres"			}, /*  114 */
+	{ 4,	0,	sys_clock_nanosleep,		"clock_nanosleep"		}, /*  115 */
+	{ 3,	0,	sys_syslog,			"syslog"			}, /*  116 */
+	{ 4,	0,	sys_ptrace,			"ptrace"			}, /*  117 */
+	{ 0,	0,	sys_sched_setparam,		"sched_setparam"		}, /*  118 */
+	{ 3,	0,	sys_sched_setscheduler,		"sched_setscheduler"		}, /*  119 */
+	{ 1,	0,	sys_sched_getscheduler,		"sched_getscheduler"		}, /*  120 */
+	{ 2,	0,	sys_sched_getparam,		"sched_getparam"		}, /*  121 */
+	{ 3,	0,	sys_sched_setaffinity,		"sched_setaffinity"		}, /*  122 */
+	{ 3,	0,	sys_sched_getaffinity,		"sched_getaffinity"		}, /*  123 */
+	{ 0,	0,	sys_sched_yield,		"sched_yield"			}, /*  124 */
+	{ 1,	0,	sys_sched_get_priority_max,	"sched_get_priority_max"	}, /*  125 */
+	{ 1,	0,	sys_sched_get_priority_min,	"sched_get_priority_min"	}, /*  126 */
+	{ 2,	0,	sys_sched_rr_get_interval,	"sched_rr_get_interval"		}, /*  127 */
+	{ 0,	0,	sys_restart_syscall,		"restart_syscall"		}, /*  128 */
+	{ 2,	TS,	sys_kill,			"kill"				}, /*  129 */
+	{ 2,	TS,	sys_kill,			"tkill"				}, /*  130 */
+	{ 3,	TS,	sys_tgkill,			"tgkill"			}, /*  131 */
+	{ 2,	TS,	sys_sigaltstack,		"sigaltstack"			}, /*  132 */
+	{ 2,	TS,	sys_rt_sigsuspend,		"rt_sigsuspend"			}, /*  133 */
+	{ 4,	TS,	sys_rt_sigaction,		"rt_sigaction"			}, /*  134 */
+	{ 4,	TS,	sys_rt_sigprocmask,		"rt_sigprocmask"		}, /*  135 */
+	{ 2,	TS,	sys_rt_sigpending,		"rt_sigpending"			}, /*  136 */
+	{ 4,	TS,	sys_rt_sigtimedwait,		"rt_sigtimedwait"		}, /*  137 */
+	{ 3,	TS,	sys_rt_sigqueueinfo,		"rt_sigqueueinfo"		}, /*  138 */
+	{ 0,	TS,	sys_rt_sigreturn,		"rt_sigreturn"			}, /*  139 */
+	{ 3,	0,	sys_setpriority,		"setpriority"			}, /*  140 */
+	{ 2,	0,	sys_getpriority,		"getpriority"			}, /*  141 */
+	{ 4,	0,	sys_reboot,			"reboot"			}, /*  142 */
+	{ 2,	0,	sys_setregid,			"setregid"			}, /*  143 */
+	{ 1,	0,	sys_setgid,			"setgid"			}, /*  144 */
+	{ 2,	0,	sys_setreuid,			"setreuid"			}, /*  145 */
+	{ 1,	0,	sys_setuid,			"setuid"			}, /*  146 */
+	{ 3,	0,	sys_setresuid,			"setresuid"			}, /*  147 */
+	{ 3,	0,	sys_getresuid,			"getresuid"			}, /*  148 */
+	{ 3,	0,	sys_setresgid,			"setresgid"			}, /*  149 */
+	{ 3,	0,	sys_getresgid,			"getresgid"			}, /*  150 */
+	{ 1,	NF,	sys_setfsuid,			"setfsuid"			}, /*  151 */
+	{ 1,	NF,	sys_setfsgid,			"setfsgid"			}, /*  152 */
+	{ 1,	0,	sys_times,			"times"				}, /*  153 */
+	{ 2,	0,	sys_setpgid,			"setpgid"			}, /*  154 */
+	{ 1,	0,	sys_getpgid,			"getpgid"			}, /*  155 */
+	{ 1,	0,	sys_getsid,			"getsid"			}, /*  156 */
+	{ 0,	0,	sys_setsid,			"setsid"			}, /*  157 */
+	{ 2,	0,	sys_getgroups,			"getgroups"			}, /*  158 */
+	{ 2,	0,	sys_setgroups,			"setgroups"			}, /*  159 */
+	{ 1,	0,	sys_uname,			"uname"				}, /*  160 */
+	{ 2,	0,	sys_sethostname,		"sethostname"			}, /*  161 */
+	{ 2,	0,	sys_setdomainname,		"setdomainname"			}, /*  162 */
+	{ 2,	0,	sys_getrlimit,			"getrlimit"			}, /*  163 */
+	{ 2,	0,	sys_setrlimit,			"setrlimit"			}, /*  164 */
+	{ 2,	0,	sys_getrusage,			"getrusage"			}, /*  165 */
+	{ 1,	0,	sys_umask,			"umask"				}, /*  166 */
+	{ 5,	0,	sys_prctl,			"prctl"				}, /*  167 */
+	{ 3,	0,	sys_getcpu,			"getcpu"			}, /*  168 */
+	{ 2,	0,	sys_gettimeofday,		"gettimeofday"			}, /*  169 */
+	{ 2,	0,	sys_settimeofday,		"settimeofday"			}, /*  170 */
+	{ 1,	0,	sys_adjtimex,			"adjtimex"			}, /*  171 */
+	{ 0,	0,	sys_getpid,			"getpid"			}, /*  172 */
+	{ 0,	0,	sys_getppid,			"getppid"			}, /*  173 */
+	{ 0,	NF,	sys_getuid,			"getuid"			}, /*  174 */
+	{ 0,	NF,	sys_geteuid,			"geteuid"			}, /*  175 */
+	{ 0,	NF,	sys_getgid,			"getgid"			}, /*  176 */
+	{ 0,	NF,	sys_getegid,			"getegid"			}, /*  177 */
+	{ 0,	0,	sys_gettid,			"gettid"			}, /*  178 */
+	{ 1,	0,	sys_sysinfo,			"sysinfo"			}, /*  179 */
+	{ 4,	0,	sys_mq_open,			"mq_open"			}, /*  180 */
+	{ 1,	0,	sys_mq_unlink,			"mq_unlink"			}, /*  181 */
+	{ 5,	0,	sys_mq_timedsend,		"mq_timedsend"			}, /*  182 */
+	{ 5,	0,	sys_mq_timedreceive,		"mq_timedreceive"		}, /*  183 */
+	{ 2,	0,	sys_mq_notify,			"mq_notify"			}, /*  184 */
+	{ 3,	0,	sys_mq_getsetattr,		"mq_getsetattr"			}, /*  185 */
+	{ 4,	TI,	sys_msgget,			"msgget"			}, /*  186 */
+	{ 3,	TI,	sys_msgctl,			"msgctl"			}, /*  187 */
+	{ 5,	TI,	sys_msgrcv,			"msgrcv"			}, /*  188 */
+	{ 4,	TI,	sys_msgsnd,			"msgsnd"			}, /*  189 */
+	{ 4,	TI,	sys_semget,			"semget"			}, /*  190 */
+	{ 4,	TI,	sys_semctl,			"semctl"			}, /*  191 */
+	{ 5,	TI,	sys_semtimedop,			"semtimedop"			}, /*  192 */
+	{ 4,	TI,	sys_semop,			"semop"				}, /*  193 */
+	{ 4,	TI,	sys_shmget,			"shmget"			}, /*  194 */
+	{ 4,	TI,	sys_shmctl,			"shmctl"			}, /*  195 */
+	{ 4,	TI,	sys_shmat,			"shmat"				}, /*  196 */
+	{ 4,	TI,	sys_shmdt,			"shmdt"				}, /*  197 */
+	{ 3,	TN,	sys_socket,			"socket"			}, /*  198 */
+	{ 4,	TN,	sys_socketpair,			"socketpair"			}, /*  199 */
+	{ 3,	TN,	sys_bind,			"bind"				}, /*  200 */
+	{ 2,	TN,	sys_listen,			"listen"			}, /*  201 */
+	{ 3,	TN,	sys_accept,			"accept"			}, /*  202 */
+	{ 3,	TN,	sys_connect,			"connect"			}, /*  203 */
+	{ 3,	TN,	sys_getsockname,		"getsockname"			}, /*  204 */
+	{ 3,	TN,	sys_getpeername,		"getpeername"			}, /*  205 */
+	{ 6,	TN,	sys_sendto,			"sendto"			}, /*  206 */
+	{ 6,	TN,	sys_recvfrom,			"recvfrom"			}, /*  207 */
+	{ 5,	TN,	sys_setsockopt,			"setsockopt"			}, /*  208 */
+	{ 5,	TN,	sys_getsockopt,			"getsockopt"			}, /*  209 */
+	{ 2,	TN,	sys_shutdown,			"shutdown"			}, /*  210 */
+	{ 3,	TN,	sys_sendmsg,			"sendmsg"			}, /*  211 */
+	{ 5,	TN,	sys_recvmsg,			"recvmsg"			}, /*  212 */
+	{ 4,	TD,	sys_readahead,			"readahead"			}, /*  213 */
+	{ 1,	0,	sys_brk,			"brk"				}, /*  214 */
+	{ 2,	0,	sys_munmap,			"munmap"			}, /*  215 */
+	{ 5,	0,	sys_mremap,			"mremap"			}, /*  216 */
+	{ 5,	0,	sys_add_key,			"add_key"			}, /*  217 */
+	{ 4,	0,	sys_request_key,		"request_key"			}, /*  218 */
+	{ 5,	0,	sys_keyctl,			"keyctl"			}, /*  219 */
+	{ 5,	TP,	sys_clone,			"clone"				}, /*  220 */
+	{ 3,	TF|TP,	sys_execve,			"execve"			}, /*  221 */
+	{ 6,	TD,	sys_mmap,			"mmap"				}, /*  222 */
+	{ 4,	TD,	sys_fadvise64,			"fadvise64"			}, /*  223 */
+	{ 2,	TF,	sys_swapon,			"swapon"			}, /*  224 */
+	{ 1,	TF,	sys_swapoff,			"swapoff"			}, /*  225 */
+	{ 3,	0,	sys_mprotect,			"mprotect"			}, /*  226 */
+	{ 3,	0,	sys_msync,			"msync"				}, /*  227 */
+	{ 3,	0,	sys_msync,			"msync"				}, /*  228 */
+	{ 2,	0,	sys_munlock,			"munlock"			}, /*  229 */
+	{ 1,	0,	sys_mlockall,			"mlockall"			}, /*  230 */
+	{ 0,	0,	sys_munlockall,			"munlockall"			}, /*  231 */
+	{ 3,	0,	sys_mincore,			"mincore"			}, /*  232 */
+	{ 3,	0,	sys_madvise,			"madvise"			}, /*  233 */
+	{ 5,	0,	sys_remap_file_pages,		"remap_file_pages"		}, /*  234 */
+	{ 6,	0,	sys_mbind,			"mbind"				}, /*  235 */
+	{ 5,	0,	sys_get_mempolicy,		"get_mempolicy"			}, /*  236 */
+	{ 3,	0,	sys_set_mempolicy,		"set_mempolicy"			}, /*  237 */
+	{ 4,	0,	sys_migrate_pages,		"migrate_pages"			}, /*  238 */
+	{ 6,	0,	sys_move_pages,			"move_pages"			}, /*  239 */
+	{ 4,	TP|TS,	sys_rt_tgsigqueueinfo,		"rt_tgsigqueueinfo"		}, /*  240 */
+	{ 5,	TD,	sys_perf_event_open,		"perf_event_open"		}, /*  241 */
+	{ 4,	TN,	sys_accept4,			"accept4"			}, /*  242 */
+	{ 5,	TN,	sys_recvmmsg,			"recvmmsg"			}, /*  243 */
+
+	/* Arch-specific block, not used on AArch64 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  244 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  245 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  246 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  247 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  248 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  249 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  250 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  251 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  252 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  253 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  254 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  255 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  256 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  257 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  258 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  259 */
+
+	{ 4,	TP,	sys_wait4,			"wait4"				}, /*  260 */
+	{ 4,	0,	sys_prlimit64,			"prlimit64"			}, /*  261 */
+	{ 2,	TD,	sys_fanotify_init,		"fanotify_init"			}, /*  262 */
+	{ 5,	TD|TF,	sys_fanotify_mark,		"fanotify_mark"			}, /*  263 */
+	{ 5,	TD|TF,	sys_name_to_handle_at,		"name_to_handle_at"		}, /*  264 */
+	{ 3,	TD,	sys_open_by_handle_at,		"open_by_handle_at"		}, /*  265 */
+	{ 2,	0,	sys_clock_adjtime,		"clock_adjtime"			}, /*  266 */
+	{ 1,	TD,	sys_syncfs,			"syncfs"			}, /*  267 */
+	{ 2,	TD,	sys_setns,			"setns"				}, /*  268 */
+	{ 4,	TN,	sys_sendmmsg,			"sendmmsg"			}, /*  269 */
+	{ 6,	0,	sys_process_vm_readv,		"process_vm_readv"		}, /*  270 */
+	{ 6,	0,	sys_process_vm_writev,		"process_vm_writev"		}, /*  271 */
+
+	/* Blank down to 1023 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  272 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  273 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  274 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  275 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  276 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  277 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  278 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  279 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  280 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  281 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  282 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  283 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  284 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  285 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  286 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  287 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  288 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  289 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  290 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  291 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  292 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  293 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  294 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  295 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  296 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  297 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  298 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  299 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  300 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  301 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  302 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  303 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  304 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  305 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  306 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  307 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  308 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  309 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  310 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  311 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  312 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  313 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  314 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  315 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  316 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  317 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  318 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  319 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  320 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  321 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  322 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  323 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  324 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  325 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  326 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  327 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  328 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  329 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  330 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  331 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  332 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  333 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  334 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  335 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  336 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  337 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  338 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  339 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  340 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  341 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  342 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  343 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  344 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  345 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  346 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  347 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  348 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  349 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  350 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  351 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  352 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  353 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  354 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  355 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  356 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  357 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  358 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  359 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  360 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  361 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  362 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  363 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  364 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  365 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  366 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  367 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  368 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  369 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  370 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  371 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  372 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  373 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  374 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  375 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  376 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  377 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  378 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  379 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  380 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  381 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  382 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  383 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  384 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  385 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  386 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  387 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  388 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  389 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  390 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  391 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  392 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  393 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  394 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  395 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  396 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  397 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  398 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  399 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  400 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  401 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  402 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  403 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  404 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  405 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  406 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  407 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  408 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  409 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  410 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  411 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  412 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  413 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  414 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  415 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  416 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  417 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  418 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  419 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  420 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  421 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  422 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  423 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  424 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  425 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  426 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  427 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  428 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  429 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  430 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  431 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  432 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  433 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  434 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  435 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  436 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  437 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  438 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  439 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  440 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  441 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  442 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  443 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  444 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  445 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  446 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  447 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  448 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  449 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  450 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  451 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  452 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  453 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  454 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  455 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  456 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  457 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  458 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  459 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  460 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  461 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  462 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  463 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  464 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  465 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  466 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  467 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  468 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  469 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  470 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  471 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  472 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  473 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  474 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  475 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  476 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  477 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  478 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  479 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  480 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  481 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  482 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  483 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  484 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  485 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  486 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  487 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  488 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  489 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  490 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  491 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  492 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  493 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  494 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  495 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  496 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  497 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  498 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  499 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  500 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  501 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  502 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  503 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  504 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  505 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  506 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  507 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  508 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  509 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  510 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  511 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  512 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  513 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  514 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  515 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  516 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  517 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  518 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  519 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  520 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  521 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  522 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  523 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  524 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  525 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  526 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  527 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  528 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  529 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  530 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  531 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  532 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  533 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  534 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  535 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  536 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  537 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  538 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  539 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  540 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  541 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  542 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  543 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  544 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  545 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  546 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  547 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  548 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  549 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  550 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  551 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  552 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  553 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  554 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  555 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  556 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  557 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  558 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  559 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  560 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  561 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  562 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  563 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  564 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  565 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  566 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  567 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  568 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  569 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  570 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  571 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  572 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  573 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  574 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  575 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  576 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  577 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  578 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  579 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  580 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  581 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  582 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  583 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  584 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  585 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  586 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  587 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  588 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  589 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  590 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  591 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  592 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  593 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  594 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  595 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  596 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  597 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  598 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  599 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  600 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  601 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  602 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  603 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  604 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  605 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  606 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  607 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  608 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  609 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  610 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  611 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  612 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  613 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  614 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  615 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  616 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  617 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  618 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  619 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  620 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  621 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  622 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  623 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  624 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  625 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  626 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  627 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  628 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  629 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  630 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  631 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  632 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  633 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  634 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  635 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  636 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  637 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  638 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  639 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  640 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  641 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  642 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  643 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  644 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  645 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  646 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  647 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  648 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  649 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  650 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  651 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  652 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  653 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  654 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  655 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  656 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  657 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  658 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  659 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  660 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  661 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  662 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  663 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  664 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  665 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  666 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  667 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  668 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  669 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  670 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  671 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  672 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  673 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  674 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  675 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  676 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  677 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  678 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  679 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  680 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  681 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  682 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  683 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  684 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  685 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  686 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  687 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  688 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  689 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  690 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  691 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  692 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  693 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  694 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  695 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  696 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  697 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  698 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  699 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  700 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  701 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  702 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  703 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  704 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  705 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  706 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  707 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  708 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  709 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  710 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  711 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  712 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  713 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  714 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  715 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  716 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  717 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  718 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  719 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  720 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  721 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  722 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  723 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  724 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  725 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  726 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  727 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  728 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  729 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  730 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  731 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  732 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  733 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  734 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  735 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  736 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  737 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  738 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  739 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  740 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  741 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  742 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  743 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  744 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  745 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  746 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  747 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  748 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  749 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  750 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  751 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  752 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  753 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  754 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  755 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  756 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  757 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  758 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  759 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  760 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  761 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  762 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  763 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  764 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  765 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  766 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  767 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  768 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  769 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  770 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  771 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  772 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  773 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  774 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  775 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  776 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  777 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  778 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  779 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  780 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  781 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  782 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  783 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  784 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  785 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  786 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  787 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  788 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  789 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  790 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  791 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  792 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  793 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  794 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  795 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  796 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  797 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  798 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  799 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  800 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  801 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  802 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  803 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  804 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  805 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  806 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  807 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  808 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  809 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  810 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  811 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  812 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  813 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  814 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  815 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  816 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  817 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  818 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  819 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  820 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  821 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  822 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  823 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  824 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  825 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  826 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  827 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  828 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  829 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  830 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  831 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  832 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  833 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  834 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  835 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  836 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  837 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  838 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  839 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  840 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  841 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  842 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  843 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  844 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  845 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  846 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  847 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  848 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  849 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  850 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  851 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  852 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  853 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  854 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  855 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  856 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  857 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  858 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  859 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  860 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  861 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  862 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  863 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  864 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  865 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  866 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  867 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  868 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  869 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  870 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  871 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  872 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  873 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  874 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  875 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  876 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  877 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  878 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  879 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  880 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  881 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  882 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  883 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  884 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  885 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  886 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  887 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  888 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  889 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  890 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  891 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  892 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  893 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  894 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  895 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  896 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  897 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  898 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  899 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  900 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  901 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  902 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  903 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  904 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  905 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  906 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  907 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  908 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  909 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  910 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  911 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  912 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  913 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  914 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  915 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  916 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  917 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  918 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  919 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  920 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  921 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  922 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  923 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  924 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  925 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  926 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  927 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  928 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  929 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  930 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  931 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  932 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  933 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  934 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  935 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  936 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  937 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  938 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  939 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  940 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  941 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  942 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  943 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  944 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  945 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  946 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  947 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  948 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  949 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  950 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  951 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  952 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  953 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  954 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  955 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  956 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  957 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  958 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  959 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  960 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  961 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  962 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  963 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  964 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  965 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  966 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  967 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  968 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  969 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  970 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  971 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  972 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  973 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  974 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  975 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  976 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  977 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  978 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  979 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  980 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  981 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  982 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  983 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  984 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  985 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  986 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  987 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  988 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  989 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  990 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  991 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  992 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  993 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  994 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  995 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  996 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  997 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  998 */
+	{ MA,	0,	NULL,				"NULL"				}, /*  999 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1000 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1001 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1002 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1003 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1004 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1005 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1006 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1007 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1008 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1009 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1010 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1011 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1012 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1013 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1014 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1015 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1016 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1017 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1018 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1019 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1020 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1021 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1022 */
+	{ MA,	0,	NULL,				"NULL"				}, /* 1023 */
+
+	/* Quote from asm-generic/unistd.h:
+	 *
+	 * All syscalls below here should go away really,
+	 * these are provided for both review and as a porting
+	 * help for the C library version.
+	 *
+	 * Last chance: are any of these important enough to
+	 * enable by default?
+	 */
+
+	{ 3,	TD|TF,	sys_open,			"open"				}, /* 1024 */
+	{ 2,	TF,	sys_link,			"link"				}, /* 1025 */
+	{ 1,	TF,	sys_unlink,			"unlink"			}, /* 1026 */
+	{ 3,	TF,	sys_mknod,			"mknod"				}, /* 1027 */
+	{ 2,	TF,	sys_chmod,			"chmod"				}, /* 1028 */
+	{ 3,	TF,	sys_chown,			"chown"				}, /* 1029 */
+	{ 2,	TF,	sys_mkdir,			"mkdir"				}, /* 1030 */
+	{ 1,	TF,	sys_rmdir,			"rmdir"				}, /* 1031 */
+	{ 3,	TF,	sys_chown,			"lchown"			}, /* 1032 */
+	{ 2,	TF,	sys_access,			"access"			}, /* 1033 */
+	{ 2,	TF,	sys_rename,			"rename"			}, /* 1034 */
+	{ 3,	TF,	sys_readlink,			"readlink"			}, /* 1035 */
+	{ 2,	TF,	sys_symlink,			"symlink"			}, /* 1036 */
+	{ 2,	TF,	sys_utimes,			"utimes"			}, /* 1037 */
+	{ 2,	TF,	sys_stat,			"stat"				}, /* 1038 */
+	{ 2,	TF,	sys_lstat,			"lstat"				}, /* 1039 */
+	{ 1,	TD,	sys_pipe,			"pipe"				}, /* 1040 */
+	{ 2,	TD,	sys_dup2,			"dup2"				}, /* 1041 */
+	{ 1,	TD,	sys_epoll_create,		"epoll_create"			}, /* 1042 */
+	{ 0,	TD,	sys_inotify_init,		"inotify_init"			}, /* 1043 */
+	{ 1,	TD,	sys_eventfd,			"eventfd"			}, /* 1044 */
+	{ 3,	TD|TS,	sys_signalfd,			"signalfd"			}, /* 1045 */
+	{ 4,	TD|TN,	sys_sendfile,			"sendfile"			}, /* 1046 */
+	{ 2,	TD,	sys_ftruncate,			"ftruncate"			}, /* 1047 */
+	{ 2,	TF,	sys_truncate,			"truncate"			}, /* 1048 */
+	{ 2,	TF,	sys_stat,			"stat"				}, /* 1049 */
+	{ 2,	TF,	sys_lstat,			"lstat"				}, /* 1050 */
+	{ 2,	TD,	sys_fstat,			"fstat"				}, /* 1051 */
+	{ 3,	TD,	sys_fcntl,			"fcntl"				}, /* 1052 */
+	{ 4,	TD,	sys_fadvise64,			"fadvise64"			}, /* 1053 */
+	{ 4,	TD|TF,	sys_newfstatat,			"newfstatat"			}, /* 1054 */
+	{ 2,	TD,	sys_fstatfs,			"fstatfs"			}, /* 1055 */
+	{ 2,	TF,	sys_statfs,			"statfs"			}, /* 1056 */
+	{ 3,	TD,	sys_lseek,			"lseek"				}, /* 1057 */
+	{ 6,	TD,	sys_mmap,			"mmap"				}, /* 1058 */
+	{ 1,	0,	sys_alarm,			"alarm"				}, /* 1059 */
+	{ 0,	0,	sys_getpgrp,			"getpgrp"			}, /* 1060 */
+	{ 0,	TS,	sys_pause,			"pause"				}, /* 1061 */
+	{ 1,	0,	sys_time,			"time"				}, /* 1062 */
+	{ 2,	TF,	sys_utime,			"utime"				}, /* 1063 */
+	{ 2,	TD|TF,	sys_creat,			"creat"				}, /* 1064 */
+	{ 3,	TD,	sys_getdents,			"getdents"			}, /* 1065 */
+	{ 3,	TD|TF,	sys_futimesat,			"futimesat"			}, /* 1066 */
+	{ 5,	TD,	sys_select,			"select"			}, /* 1067 */
+	{ 3,	TD,	sys_poll,			"poll"				}, /* 1068 */
+	{ 4,	TD,	sys_epoll_wait,			"epoll_wait"			}, /* 1069 */
+	{ 2,	0,	sys_ustat,			"ustat"				}, /* 1070 */
+	{ 0,	TP,	sys_vfork,			"vfork"				}, /* 1071 */
+	{ 4,	TP,	sys_wait4,			"wait4"				}, /* 1072 */
+	{ 6,	TN,	sys_recv,			"recv"				}, /* 1073 */
+	{ 4,	TD|TN,	sys_send,			"send"				}, /* 1074 */
+	{ 2,	0,	sys_bdflush,			"bdflush"			}, /* 1075 */
+	{ 2,	TF,	sys_umount,			"umount"			}, /* 1076 */
+	{ 1,	TF,	sys_uselib,			"uselib"			}, /* 1077 */
+	{ 1,	0,	sys_sysctl,			"sysctl"			}, /* 1078 */
+	{ 0,	TP,	sys_fork,			"fork"				}, /* 1079 */
diff --git a/process.c b/process.c
index fa304e5..467c096 100644
--- a/process.c
+++ b/process.c
@@ -2119,7 +2119,8 @@ const struct xlat struct_user_offsets[] = {
 
 #if !defined(SPARC) && !defined(HPPA) && !defined(POWERPC) \
 		&& !defined(ALPHA) && !defined(IA64) \
-		&& !defined(CRISV10) && !defined(CRISV32) && !defined(MICROBLAZE)
+		&& !defined(CRISV10) && !defined(CRISV32) && !defined(MICROBLAZE) \
+		&& !defined(AARCH64)
 # if !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SPARC64) && !defined(AVR32) && !defined(BFIN) && !defined(TILE)
 	{ uoff(u_fpvalid),	"offsetof(struct user, u_fpvalid)"	},
 # endif
@@ -2148,7 +2149,7 @@ const struct xlat struct_user_offsets[] = {
 # if !defined(SPARC64)
 	{ uoff(u_ar0),		"offsetof(struct user, u_ar0)"		},
 # endif
-# if !defined(ARM) && !defined(AVR32) && !defined(MIPS) && !defined(S390) && !defined(S390X) && !defined(SPARC64) && !defined(BFIN) && !defined(TILE)
+# if !defined(ARM) && !defined(AARCH64) && !defined(AVR32) && !defined(MIPS) && !defined(S390) && !defined(S390X) && !defined(SPARC64) && !defined(BFIN) && !defined(TILE)
 	{ uoff(u_fpstate),	"offsetof(struct user, u_fpstate)"	},
 # endif
 	{ uoff(magic),		"offsetof(struct user, magic)"		},
@@ -2158,7 +2159,7 @@ const struct xlat struct_user_offsets[] = {
 # endif
 #endif /* !defined(many arches) */
 
-#ifndef HPPA
+#if !defined(HPPA) && !defined(AARCH64)
 	{ sizeof(struct user),	"sizeof(struct user)"			},
 #endif
 	{ 0,			NULL					},
diff --git a/syscall.c b/syscall.c
index c4c5e86..42b4302 100644
--- a/syscall.c
+++ b/syscall.c
@@ -65,6 +65,12 @@
 # include <asm/rse.h>
 #endif
 
+#if defined(AARCH64)
+# include <asm/ptrace.h>
+# include <sys/uio.h>
+# include <elf.h>
+#endif
+
 #ifndef ERESTARTSYS
 # define ERESTARTSYS	512
 #endif
@@ -653,6 +659,8 @@ static long d0;
 static long r0;
 #elif defined(ARM)
 static struct pt_regs regs;
+#elif defined(AARCH64)
+static struct user_pt_regs regs;
 #elif defined(ALPHA)
 static long r0;
 static long a3;
@@ -963,6 +971,15 @@ get_scno(struct tcb *tcp)
 		fprintf(stderr, "pid %d stray syscall entry\n", tcp->pid);
 		tcp->flags |= TCB_INSYSCALL;
 	}
+#elif defined(AARCH64)
+	struct iovec io;
+	io.iov_base = ®s;
+	io.iov_len = sizeof(regs);
+	if (ptrace(PTRACE_GETREGSET, tcp->pid, NT_PRSTATUS, (void *)&io) == -1)
+	{
+		return -1;
+	}
+	scno = regs.regs[8];
 #elif defined(M68K)
 	if (upeek(tcp, 4*PT_ORIG_D0, &scno) < 0)
 		return -1;
@@ -1399,6 +1416,9 @@ get_syscall_args(struct tcb *tcp)
 #elif defined(ARM)
 	for (i = 0; i < nargs; ++i)
 		tcp->u_arg[i] = regs.uregs[i];
+#elif defined(AARCH64)
+	for (i = 0; i < nargs; ++i)
+		tcp->u_arg[i] = regs.regs[i];
 #elif defined(AVR32)
 	(void)i;
 	(void)nargs;
@@ -1637,6 +1657,12 @@ get_syscall_result(struct tcb *tcp)
 	/* Read complete register set in one go. */
 	if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (void *)&regs) == -1)
 		return -1;
+#elif defined(AARCH64)
+	struct iovec io;
+	io.iov_base = ®s;
+	io.iov_len = sizeof(regs);
+	if (ptrace(PTRACE_GETREGSET, tcp->pid, NT_PRSTATUS, (void *)&io) == -1)
+		return -1;
 #elif defined(M68K)
 	if (upeek(tcp, 4*PT_D0, &d0) < 0)
 		return -1;
@@ -1819,6 +1845,14 @@ get_error(struct tcb *tcp)
 	else {
 		tcp->u_rval = regs.ARM_r0;
 	}
+#elif defined(AARCH64)
+	if (check_errno && is_negated_errno(regs.regs[0])) {
+		tcp->u_rval = -1;
+		u_error = -regs.regs[0];
+	}
+	else {
+		tcp->u_rval = regs.regs[0];
+	}
 #elif defined(AVR32)
 	if (check_errno && regs.r12 && (unsigned) -regs.r12 < nerrnos) {
 		tcp->u_rval = -1;
-- 
1.7.10.4



Cheers,
-- 
Steve McIntyre                                steve.mcintyre at linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs





More information about the Strace-devel mailing list