
/*--------------------------------------------------------------------*/
/*--- System call numbers for arm64-linux.                         ---*/
/*---                                     vki-scnums-arm64-linux.h ---*/
/*--------------------------------------------------------------------*/

/*
   This file is part of Valgrind, a dynamic binary instrumentation
   framework.

   Copyright (C) 2013-2013 OpenWorks
      info@open-works.net

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307, USA.

   The GNU General Public License is contained in the file COPYING.
*/

#ifndef __VKI_SCNUMS_ARM64_LINUX_H
#define __VKI_SCNUMS_ARM64_LINUX_H

// From linux-3.10.5/arch/arm64/include/uapi/asm/unistd.h
// is a #include of
//      linux-3.10.5/include/uapi/asm-generic/unistd.h

#define __NR_io_setup 0
#define __NR_io_destroy 1
#define __NR_io_submit 2
#define __NR_io_cancel 3
#define __NR_io_getevents 4
#define __NR_setxattr 5
#define __NR_lsetxattr 6
#define __NR_fsetxattr 7
#define __NR_getxattr 8
#define __NR_lgetxattr 9
#define __NR_fgetxattr 10
#define __NR_listxattr 11
#define __NR_llistxattr 12
#define __NR_flistxattr 13
#define __NR_removexattr 14
#define __NR_lremovexattr 15
#define __NR_fremovexattr 16
#define __NR_getcwd 17
#define __NR_lookup_dcookie 18
#define __NR_eventfd2 19
#define __NR_epoll_create1 20
#define __NR_epoll_ctl 21
#define __NR_epoll_pwait 22
#define __NR_dup 23
#define __NR_dup3 24
#define __NR3264_fcntl 25
#define __NR_inotify_init1 26
#define __NR_inotify_add_watch 27
#define __NR_inotify_rm_watch 28
#define __NR_ioctl 29
#define __NR_ioprio_set 30
#define __NR_ioprio_get 31
#define __NR_flock 32
#define __NR_mknodat 33
#define __NR_mkdirat 34
#define __NR_unlinkat 35
#define __NR_symlinkat 36
#define __NR_linkat 37
#define __NR_renameat 38
#define __NR_umount2 39
#define __NR_mount 40
#define __NR_pivot_root 41
#define __NR_nfsservctl 42
#define __NR3264_statfs 43
#define __NR3264_fstatfs 44
#define __NR3264_truncate 45
#define __NR3264_ftruncate 46
#define __NR_fallocate 47
#define __NR_faccessat 48
#define __NR_chdir 49
#define __NR_fchdir 50
#define __NR_chroot 51
#define __NR_fchmod 52
#define __NR_fchmodat 53
#define __NR_fchownat 54
#define __NR_fchown 55
#define __NR_openat 56
#define __NR_close 57
#define __NR_vhangup 58
#define __NR_pipe2 59
#define __NR_quotactl 60
#define __NR_getdents64 61
#define __NR3264_lseek 62
#define __NR_read 63
#define __NR_write 64
#define __NR_readv 65
#define __NR_writev 66
#define __NR_pread64 67
#define __NR_pwrite64 68
#define __NR_preadv 69
#define __NR_pwritev 70
#define __NR3264_sendfile 71
#define __NR_pselect6 72
#define __NR_ppoll 73
#define __NR_signalfd4 74
#define __NR_vmsplice 75
#define __NR_splice 76
#define __NR_tee 77
#define __NR_readlinkat 78
#define __NR3264_fstatat 79
#define __NR3264_fstat 80
#define __NR_sync 81
#define __NR_fsync 82
#define __NR_fdatasync 83

//#ifdef __ARCH_WANT_SYNC_FILE_RANGE2
//#define __NR_sync_file_range2 84
//#else
#define __NR_sync_file_range 84
//#endif

#define __NR_timerfd_create 85
#define __NR_timerfd_settime 86
#define __NR_timerfd_gettime 87
#define __NR_utimensat 88
#define __NR_acct 89
#define __NR_capget 90
#define __NR_capset 91
#define __NR_personality 92
#define __NR_exit 93
#define __NR_exit_group 94
#define __NR_waitid 95
#define __NR_set_tid_address 96
#define __NR_unshare 97
#define __NR_futex 98
#define __NR_set_robust_list 99
#define __NR_get_robust_list 100
#define __NR_nanosleep 101
#define __NR_getitimer 102
#define __NR_setitimer 103
#define __NR_kexec_load 104
#define __NR_init_module 105
#define __NR_delete_module 106
#define __NR_timer_create 107
#define __NR_timer_gettime 108
#define __NR_timer_getoverrun 109
#define __NR_timer_settime 110
#define __NR_timer_delete 111
#define __NR_clock_settime 112
#define __NR_clock_gettime 113
#define __NR_clock_getres 114
#define __NR_clock_nanosleep 115
#define __NR_syslog 116
#define __NR_ptrace 117
#define __NR_sched_setparam 118
#define __NR_sched_setscheduler 119
#define __NR_sched_getscheduler 120
#define __NR_sched_getparam 121
#define __NR_sched_setaffinity 122
#define __NR_sched_getaffinity 123
#define __NR_sched_yield 124
#define __NR_sched_get_priority_max 125
#define __NR_sched_get_priority_min 126
#define __NR_sched_rr_get_interval 127
#define __NR_restart_syscall 128
#define __NR_kill 129
#define __NR_tkill 130
#define __NR_tgkill 131
#define __NR_sigaltstack 132
#define __NR_rt_sigsuspend 133
#define __NR_rt_sigaction 134
#define __NR_rt_sigprocmask 135
#define __NR_rt_sigpending 136
#define __NR_rt_sigtimedwait 137
#define __NR_rt_sigqueueinfo 138
#define __NR_rt_sigreturn 139
#define __NR_setpriority 140
#define __NR_getpriority 141
#define __NR_reboot 142
#define __NR_setregid 143
#define __NR_setgid 144
#define __NR_setreuid 145
#define __NR_setuid 146
#define __NR_setresuid 147
#define __NR_getresuid 148
#define __NR_setresgid 149
#define __NR_getresgid 150
#define __NR_setfsuid 151
#define __NR_setfsgid 152
#define __NR_times 153
#define __NR_setpgid 154
#define __NR_getpgid 155
#define __NR_getsid 156
#define __NR_setsid 157
#define __NR_getgroups 158
#define __NR_setgroups 159
#define __NR_uname 160
#define __NR_sethostname 161
#define __NR_setdomainname 162
#define __NR_getrlimit 163
#define __NR_setrlimit 164
#define __NR_getrusage 165
#define __NR_umask 166
#define __NR_prctl 167
#define __NR_getcpu 168
#define __NR_gettimeofday 169
#define __NR_settimeofday 170
#define __NR_adjtimex 171
#define __NR_getpid 172
#define __NR_getppid 173
#define __NR_getuid 174
#define __NR_geteuid 175
#define __NR_getgid 176
#define __NR_getegid 177
#define __NR_gettid 178
#define __NR_sysinfo 179
#define __NR_mq_open 180
#define __NR_mq_unlink 181
#define __NR_mq_timedsend 182
#define __NR_mq_timedreceive 183
#define __NR_mq_notify 184
#define __NR_mq_getsetattr 185
#define __NR_msgget 186
#define __NR_msgctl 187
#define __NR_msgrcv 188
#define __NR_msgsnd 189
#define __NR_semget 190
#define __NR_semctl 191
#define __NR_semtimedop 192
#define __NR_semop 193
#define __NR_shmget 194
#define __NR_shmctl 195
#define __NR_shmat 196
#define __NR_shmdt 197
#define __NR_socket 198
#define __NR_socketpair 199
#define __NR_bind 200
#define __NR_listen 201
#define __NR_accept 202
#define __NR_connect 203
#define __NR_getsockname 204
#define __NR_getpeername 205
#define __NR_sendto 206
#define __NR_recvfrom 207
#define __NR_setsockopt 208
#define __NR_getsockopt 209
#define __NR_shutdown 210
#define __NR_sendmsg 211
#define __NR_recvmsg 212
#define __NR_readahead 213
#define __NR_brk 214
#define __NR_munmap 215
#define __NR_mremap 216
#define __NR_add_key 217
#define __NR_request_key 218
#define __NR_keyctl 219
#define __NR_clone 220
#define __NR_execve 221
#define __NR3264_mmap 222
#define __NR3264_fadvise64 223
#define __NR_swapon 224
#define __NR_swapoff 225
#define __NR_mprotect 226
#define __NR_msync 227
#define __NR_mlock 228
#define __NR_munlock 229
#define __NR_mlockall 230
#define __NR_munlockall 231
#define __NR_mincore 232
#define __NR_madvise 233
#define __NR_remap_file_pages 234
#define __NR_mbind 235
#define __NR_get_mempolicy 236
#define __NR_set_mempolicy 237
#define __NR_migrate_pages 238
#define __NR_move_pages 239
#define __NR_rt_tgsigqueueinfo 240
#define __NR_perf_event_open 241
#define __NR_accept4 242
#define __NR_recvmmsg 243

///*
// * Architectures may provide up to 16 syscalls of their own
// * starting with this value.
// */
//#define __NR_arch_specific_syscall 244

#define __NR_wait4 260
#define __NR_prlimit64 261
#define __NR_fanotify_init 262
#define __NR_fanotify_mark 263
#define __NR_name_to_handle_at         264
#define __NR_open_by_handle_at         265
#define __NR_clock_adjtime 266
#define __NR_syncfs 267
#define __NR_setns 268
#define __NR_sendmmsg 269
#define __NR_process_vm_readv 270
#define __NR_process_vm_writev 271
#define __NR_kcmp 272
#define __NR_finit_module 273
#define __NR_sched_setattr 274
#define __NR_sched_getattr 275
#define __NR_renameat2 276
#define __NR_seccomp 277
#define __NR_getrandom 278
#define __NR_memfd_create 279
#define __NR_bpf 280

#undef __NR_syscalls
#define __NR_syscalls 274

///*
// * 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?
// */
//#ifdef __ARCH_WANT_SYSCALL_NO_AT
//ZZZZ#define __NR_open 1024
//#define __NR_link 1025
//__SYSCALL(__NR_link, sys_link)
//#define __NR_unlink 1026
#define __NR_mknod 1027
//#define __NR_chmod 1028
//__SYSCALL(__NR_chmod, sys_chmod)
//#define __NR_chown 1029
//__SYSCALL(__NR_chown, sys_chown)
//#define __NR_mkdir 1030
//__SYSCALL(__NR_mkdir, sys_mkdir)
//#define __NR_rmdir 1031
//__SYSCALL(__NR_rmdir, sys_rmdir)
//#define __NR_lchown 1032
//__SYSCALL(__NR_lchown, sys_lchown)
#define __NR_access 1033
#define __NR_rename 1034
//#define __NR_readlink 1035
//#define __NR_symlink 1036
//__SYSCALL(__NR_symlink, sys_symlink)
//#define __NR_utimes 1037
//__SYSCALL(__NR_utimes, sys_utimes)
//#define __NR3264_stat 1038
//__SC_3264(__NR3264_stat, sys_stat64, sys_newstat)
//#define __NR3264_lstat 1039
//__SC_3264(__NR3264_lstat, sys_lstat64, sys_newlstat)
//
//#undef __NR_syscalls
//#define __NR_syscalls (__NR3264_lstat+1)
//#endif /* __ARCH_WANT_SYSCALL_NO_AT */
//
//#ifdef __ARCH_WANT_SYSCALL_NO_FLAGS
#define __NR_pipe 1040
#define __NR_dup2 1041
//#define __NR_epoll_create 1042
//__SYSCALL(__NR_epoll_create, sys_epoll_create)
//#define __NR_inotify_init 1043
//__SYSCALL(__NR_inotify_init, sys_inotify_init)
//#define __NR_eventfd 1044
//__SYSCALL(__NR_eventfd, sys_eventfd)
//#define __NR_signalfd 1045
//__SYSCALL(__NR_signalfd, sys_signalfd)
//
//#undef __NR_syscalls
//#define __NR_syscalls (__NR_signalfd+1)
//#endif /* __ARCH_WANT_SYSCALL_NO_FLAGS */
//
/* #if (__BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)) &&   \
       defined(__ARCH_WANT_SYSCALL_OFF_T)
*/
//#define __NR_sendfile 1046
//__SYSCALL(__NR_sendfile, sys_sendfile)
//#define __NR_ftruncate 1047
//__SYSCALL(__NR_ftruncate, sys_ftruncate)
//#define __NR_truncate 1048
//__SYSCALL(__NR_truncate, sys_truncate)
#define __NR_stat 1049
//#define __NR_lstat 1050
//__SYSCALL(__NR_lstat, sys_newlstat)
//ZZ#define __NR_fstat 1051
//#define __NR_fcntl 1052
//#define __NR_fadvise64 1053
//#define __ARCH_WANT_SYS_FADVISE64
//__SYSCALL(__NR_fadvise64, sys_fadvise64)
//#define __NR_newfstatat 1054
//#define __ARCH_WANT_SYS_NEWFSTATAT
//__SYSCALL(__NR_newfstatat, sys_newfstatat)
//#define __NR_fstatfs 1055
//__SYSCALL(__NR_fstatfs, sys_fstatfs)
//#define __NR_statfs 1056
//__SYSCALL(__NR_statfs, sys_statfs)
//#define __NR_lseek 1057
#define __NR_mmap 1058
//
//#undef __NR_syscalls
//#define __NR_syscalls (__NR_mmap+1)
//#endif /* 32 bit off_t syscalls */
//
//#ifdef __ARCH_WANT_SYSCALL_DEPRECATED
//#define __NR_alarm 1059
//#define __ARCH_WANT_SYS_ALARM
//__SYSCALL(__NR_alarm, sys_alarm)
#define __NR_getpgrp 1060
//#define __ARCH_WANT_SYS_GETPGRP
//__SYSCALL(__NR_getpgrp, sys_getpgrp)
//#define __NR_pause 1061
//#define __ARCH_WANT_SYS_PAUSE
//__SYSCALL(__NR_pause, sys_pause)
//#define __NR_time 1062
//#define __ARCH_WANT_SYS_TIME
//#define __ARCH_WANT_COMPAT_SYS_TIME
//__SYSCALL(__NR_time, sys_time)
//#define __NR_utime 1063
//#define __ARCH_WANT_SYS_UTIME
//__SYSCALL(__NR_utime, sys_utime)
//
//#define __NR_creat 1064
//__SYSCALL(__NR_creat, sys_creat)
#define __NR_getdents 1065
//#define __NR_futimesat 1066
//__SYSCALL(__NR_futimesat, sys_futimesat)
//#define __NR_select 1067
//#define __ARCH_WANT_SYS_SELECT
//__SYSCALL(__NR_select, sys_select)
#define __NR_poll 1068
//#define __NR_epoll_wait 1069
//__SYSCALL(__NR_epoll_wait, sys_epoll_wait)
//#define __NR_ustat 1070
//__SYSCALL(__NR_ustat, sys_ustat)
//#define __NR_vfork 1071
//__SYSCALL(__NR_vfork, sys_vfork)
//#define __NR_oldwait4 1072
//__SYSCALL(__NR_oldwait4, sys_wait4)
//#define __NR_recv 1073
//__SYSCALL(__NR_recv, sys_recv)
//#define __NR_send 1074
//__SYSCALL(__NR_send, sys_send)
//#define __NR_bdflush 1075
//__SYSCALL(__NR_bdflush, sys_bdflush)
//#define __NR_umount 1076
//__SYSCALL(__NR_umount, sys_oldumount)
//#define __ARCH_WANT_SYS_OLDUMOUNT
//#define __NR_uselib 1077
//__SYSCALL(__NR_uselib, sys_uselib)
//#define __NR__sysctl 1078
//__SYSCALL(__NR__sysctl, sys_sysctl)
//
#define __NR_fork 1079
//#ifdef CONFIG_MMU
//__SYSCALL(__NR_fork, sys_fork)
//#else
//__SYSCALL(__NR_fork, sys_ni_syscall)
//#endif /* CONFIG_MMU */
//
//#undef __NR_syscalls
//#define __NR_syscalls (__NR_fork+1)
//
//#endif /* __ARCH_WANT_SYSCALL_DEPRECATED */
//
///*
// * 32 bit systems traditionally used different
// * syscalls for off_t and loff_t arguments, while
// * 64 bit systems only need the off_t version.
// * For new 32 bit platforms, there is no need to
// * implement the old 32 bit off_t syscalls, so
// * they take different names.
// * Here we map the numbers so that both versions
// * use the same syscall table layout.
// */
//#if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
#define __NR_fcntl __NR3264_fcntl
//#define __NR_statfs __NR3264_statfs
//#define __NR_fstatfs __NR3264_fstatfs
//#define __NR_truncate __NR3264_truncate
//#define __NR_ftruncate __NR3264_ftruncate
#define __NR_lseek __NR3264_lseek
//#define __NR_sendfile __NR3264_sendfile
//#define __NR_newfstatat __NR3264_fstatat
#define __NR_fstat __NR3264_fstat
//#define __NR_mmap __NR3264_mmap
//#define __NR_fadvise64 __NR3264_fadvise64
//#ifdef __NR3264_stat
//#define __NR_stat __NR3264_stat
//#define __NR_lstat __NR3264_lstat
//#endif
//#else
//#define __NR_fcntl64 __NR3264_fcntl
//#define __NR_statfs64 __NR3264_statfs
//#define __NR_fstatfs64 __NR3264_fstatfs
//#define __NR_truncate64 __NR3264_truncate
//#define __NR_ftruncate64 __NR3264_ftruncate
//#define __NR_llseek __NR3264_lseek
//#define __NR_sendfile64 __NR3264_sendfile
//#define __NR_fstatat64 __NR3264_fstatat
//#define __NR_fstat64 __NR3264_fstat
//#define __NR_mmap2 __NR3264_mmap
//#define __NR_fadvise64_64 __NR3264_fadvise64
//#ifdef __NR3264_stat
//#define __NR_stat64 __NR3264_stat
//#define __NR_lstat64 __NR3264_lstat
//#endif
//#endif

#endif /* __VKI_SCNUMS_ARM64_LINUX_H */

/*--------------------------------------------------------------------*/
/*--- end                                 vki-scnums-arm64-linux.h ---*/
/*--------------------------------------------------------------------*/
