aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Vivier <laurent@vivier.eu>2020-03-10 11:33:50 +0100
committerLaurent Vivier <laurent@vivier.eu>2020-03-20 16:02:00 +0100
commit5bcb4986384e02669418a411cac10377cf48e698 (patch)
tree2102072c8745d6997663d441693332a9a81efcb3
parentddf0c4cdfd3839c5dd3dfcd51770bc4639c1fd37 (diff)
linux-user, arm: add syscall table generation support
Copy syscall.tbl and syscallhdr.sh from linux/arch/arm/tools/syscalls v5.5 Update syscallhdr.sh to generate QEMU syscall_nr.h Update syscall.c to manage TARGET_NR_arm_sync_file_range as it has replaced TARGET_NR_sync_file_range2 Move existing stuff from linux-user/Makefile.objs to linux-user/arm/Makefile.objs Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Taylor Simpson <tsimpson@quicinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200310103403.3284090-9-laurent@vivier.eu> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rwxr-xr-xconfigure3
-rw-r--r--linux-user/Makefile.objs3
-rw-r--r--linux-user/arm/Makefile.objs8
-rw-r--r--linux-user/arm/syscall.tbl451
-rw-r--r--linux-user/arm/syscall_nr.h447
-rw-r--r--linux-user/arm/syscallhdr.sh31
-rw-r--r--linux-user/syscall.c6
7 files changed, 499 insertions, 450 deletions
diff --git a/configure b/configure
index 720bb5a96c..5ed5e37df8 100755
--- a/configure
+++ b/configure
@@ -1889,7 +1889,7 @@ rm -f */config-devices.mak.d
# Remove syscall_nr.h to be sure they will be regenerated in the build
# directory, not in the source directory
-for arch in alpha hppa m68k xtensa sh4 microblaze ; do
+for arch in alpha hppa m68k xtensa sh4 microblaze arm ; do
# remove the file if it has been generated in the source directory
rm -f "${source_path}/linux-user/${arch}/syscall_nr.h"
# remove the dependency files
@@ -7799,6 +7799,7 @@ case "$target_name" in
;;
arm|armeb)
TARGET_ARCH=arm
+ TARGET_SYSTBL_ABI=common,oabi
bflt="yes"
mttcg="yes"
gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
diff --git a/linux-user/Makefile.objs b/linux-user/Makefile.objs
index 5a26281e88..bc12e38291 100644
--- a/linux-user/Makefile.objs
+++ b/linux-user/Makefile.objs
@@ -5,11 +5,10 @@ obj-y = main.o syscall.o strace.o mmap.o signal.o \
obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_I386) += vm86.o
-obj-$(TARGET_ARM) += arm/nwfpe/
-obj-$(TARGET_ARM) += arm/semihost.o
obj-$(TARGET_AARCH64) += arm/semihost.o
obj-$(TARGET_ALPHA) += alpha/
+obj-$(TARGET_ARM) += arm/
obj-$(TARGET_HPPA) += hppa/
obj-$(TARGET_M68K) += m68k/
obj-$(TARGET_MICROBLAZE) += microblaze/
diff --git a/linux-user/arm/Makefile.objs b/linux-user/arm/Makefile.objs
new file mode 100644
index 0000000000..c7eb94dcba
--- /dev/null
+++ b/linux-user/arm/Makefile.objs
@@ -0,0 +1,8 @@
+obj-$(TARGET_ARM) += nwfpe/
+obj-$(TARGET_ARM) += semihost.o
+
+generated-files-y += linux-user/arm/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/arm/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/arm/syscall.tbl $(syshdr)
+ $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/arm/syscall.tbl b/linux-user/arm/syscall.tbl
new file mode 100644
index 0000000000..6da7dc4d79
--- /dev/null
+++ b/linux-user/arm/syscall.tbl
@@ -0,0 +1,451 @@
+#
+# Linux system call numbers and entry vectors
+#
+# The format is:
+# <num> <abi> <name> [<entry point> [<oabi compat entry point>]]
+#
+# Where abi is:
+# common - for system calls shared between oabi and eabi (may have compat)
+# oabi - for oabi-only system calls (may have compat)
+# eabi - for eabi-only system calls
+#
+# For each syscall number, "common" is mutually exclusive with oabi and eabi
+#
+0 common restart_syscall sys_restart_syscall
+1 common exit sys_exit
+2 common fork sys_fork
+3 common read sys_read
+4 common write sys_write
+5 common open sys_open
+6 common close sys_close
+# 7 was sys_waitpid
+8 common creat sys_creat
+9 common link sys_link
+10 common unlink sys_unlink
+11 common execve sys_execve
+12 common chdir sys_chdir
+13 oabi time sys_time32
+14 common mknod sys_mknod
+15 common chmod sys_chmod
+16 common lchown sys_lchown16
+# 17 was sys_break
+# 18 was sys_stat
+19 common lseek sys_lseek
+20 common getpid sys_getpid
+21 common mount sys_mount
+22 oabi umount sys_oldumount
+23 common setuid sys_setuid16
+24 common getuid sys_getuid16
+25 oabi stime sys_stime32
+26 common ptrace sys_ptrace
+27 oabi alarm sys_alarm
+# 28 was sys_fstat
+29 common pause sys_pause
+30 oabi utime sys_utime32
+# 31 was sys_stty
+# 32 was sys_gtty
+33 common access sys_access
+34 common nice sys_nice
+# 35 was sys_ftime
+36 common sync sys_sync
+37 common kill sys_kill
+38 common rename sys_rename
+39 common mkdir sys_mkdir
+40 common rmdir sys_rmdir
+41 common dup sys_dup
+42 common pipe sys_pipe
+43 common times sys_times
+# 44 was sys_prof
+45 common brk sys_brk
+46 common setgid sys_setgid16
+47 common getgid sys_getgid16
+# 48 was sys_signal
+49 common geteuid sys_geteuid16
+50 common getegid sys_getegid16
+51 common acct sys_acct
+52 common umount2 sys_umount
+# 53 was sys_lock
+54 common ioctl sys_ioctl
+55 common fcntl sys_fcntl
+# 56 was sys_mpx
+57 common setpgid sys_setpgid
+# 58 was sys_ulimit
+# 59 was sys_olduname
+60 common umask sys_umask
+61 common chroot sys_chroot
+62 common ustat sys_ustat
+63 common dup2 sys_dup2
+64 common getppid sys_getppid
+65 common getpgrp sys_getpgrp
+66 common setsid sys_setsid
+67 common sigaction sys_sigaction
+# 68 was sys_sgetmask
+# 69 was sys_ssetmask
+70 common setreuid sys_setreuid16
+71 common setregid sys_setregid16
+72 common sigsuspend sys_sigsuspend
+73 common sigpending sys_sigpending
+74 common sethostname sys_sethostname
+75 common setrlimit sys_setrlimit
+# Back compat 2GB limited rlimit
+76 oabi getrlimit sys_old_getrlimit
+77 common getrusage sys_getrusage
+78 common gettimeofday sys_gettimeofday
+79 common settimeofday sys_settimeofday
+80 common getgroups sys_getgroups16
+81 common setgroups sys_setgroups16
+82 oabi select sys_old_select
+83 common symlink sys_symlink
+# 84 was sys_lstat
+85 common readlink sys_readlink
+86 common uselib sys_uselib
+87 common swapon sys_swapon
+88 common reboot sys_reboot
+89 oabi readdir sys_old_readdir
+90 oabi mmap sys_old_mmap
+91 common munmap sys_munmap
+92 common truncate sys_truncate
+93 common ftruncate sys_ftruncate
+94 common fchmod sys_fchmod
+95 common fchown sys_fchown16
+96 common getpriority sys_getpriority
+97 common setpriority sys_setpriority
+# 98 was sys_profil
+99 common statfs sys_statfs
+100 common fstatfs sys_fstatfs
+# 101 was sys_ioperm
+102 oabi socketcall sys_socketcall sys_oabi_socketcall
+103 common syslog sys_syslog
+104 common setitimer sys_setitimer
+105 common getitimer sys_getitimer
+106 common stat sys_newstat
+107 common lstat sys_newlstat
+108 common fstat sys_newfstat
+# 109 was sys_uname
+# 110 was sys_iopl
+111 common vhangup sys_vhangup
+# 112 was sys_idle
+# syscall to call a syscall!
+113 oabi syscall sys_syscall
+114 common wait4 sys_wait4
+115 common swapoff sys_swapoff
+116 common sysinfo sys_sysinfo
+117 oabi ipc sys_ipc sys_oabi_ipc
+118 common fsync sys_fsync
+119 common sigreturn sys_sigreturn_wrapper
+120 common clone sys_clone
+121 common setdomainname sys_setdomainname
+122 common uname sys_newuname
+# 123 was sys_modify_ldt
+124 common adjtimex sys_adjtimex_time32
+125 common mprotect sys_mprotect
+126 common sigprocmask sys_sigprocmask
+# 127 was sys_create_module
+128 common init_module sys_init_module
+129 common delete_module sys_delete_module
+# 130 was sys_get_kernel_syms
+131 common quotactl sys_quotactl
+132 common getpgid sys_getpgid
+133 common fchdir sys_fchdir
+134 common bdflush sys_bdflush
+135 common sysfs sys_sysfs
+136 common personality sys_personality
+# 137 was sys_afs_syscall
+138 common setfsuid sys_setfsuid16
+139 common setfsgid sys_setfsgid16
+140 common _llseek sys_llseek
+141 common getdents sys_getdents
+142 common _newselect sys_select
+143 common flock sys_flock
+144 common msync sys_msync
+145 common readv sys_readv
+146 common writev sys_writev
+147 common getsid sys_getsid
+148 common fdatasync sys_fdatasync
+149 common _sysctl sys_sysctl
+150 common mlock sys_mlock
+151 common munlock sys_munlock
+152 common mlockall sys_mlockall
+153 common munlockall sys_munlockall
+154 common sched_setparam sys_sched_setparam
+155 common sched_getparam sys_sched_getparam
+156 common sched_setscheduler sys_sched_setscheduler
+157 common sched_getscheduler sys_sched_getscheduler
+158 common sched_yield sys_sched_yield
+159 common sched_get_priority_max sys_sched_get_priority_max
+160 common sched_get_priority_min sys_sched_get_priority_min
+161 common sched_rr_get_interval sys_sched_rr_get_interval_time32
+162 common nanosleep sys_nanosleep_time32
+163 common mremap sys_mremap
+164 common setresuid sys_setresuid16
+165 common getresuid sys_getresuid16
+# 166 was sys_vm86
+# 167 was sys_query_module
+168 common poll sys_poll
+169 common nfsservctl
+170 common setresgid sys_setresgid16
+171 common getresgid sys_getresgid16
+172 common prctl sys_prctl
+173 common rt_sigreturn sys_rt_sigreturn_wrapper
+174 common rt_sigaction sys_rt_sigaction
+175 common rt_sigprocmask sys_rt_sigprocmask
+176 common rt_sigpending sys_rt_sigpending
+177 common rt_sigtimedwait sys_rt_sigtimedwait_time32
+178 common rt_sigqueueinfo sys_rt_sigqueueinfo
+179 common rt_sigsuspend sys_rt_sigsuspend
+180 common pread64 sys_pread64 sys_oabi_pread64
+181 common pwrite64 sys_pwrite64 sys_oabi_pwrite64
+182 common chown sys_chown16
+183 common getcwd sys_getcwd
+184 common capget sys_capget
+185 common capset sys_capset
+186 common sigaltstack sys_sigaltstack
+187 common sendfile sys_sendfile
+# 188 reserved
+# 189 reserved
+190 common vfork sys_vfork
+# SuS compliant getrlimit
+191 common ugetrlimit sys_getrlimit
+192 common mmap2 sys_mmap2
+193 common truncate64 sys_truncate64 sys_oabi_truncate64
+194 common ftruncate64 sys_ftruncate64 sys_oabi_ftruncate64
+195 common stat64 sys_stat64 sys_oabi_stat64
+196 common lstat64 sys_lstat64 sys_oabi_lstat64
+197 common fstat64 sys_fstat64 sys_oabi_fstat64
+198 common lchown32 sys_lchown
+199 common getuid32 sys_getuid
+200 common getgid32 sys_getgid
+201 common geteuid32 sys_geteuid
+202 common getegid32 sys_getegid
+203 common setreuid32 sys_setreuid
+204 common setregid32 sys_setregid
+205 common getgroups32 sys_getgroups
+206 common setgroups32 sys_setgroups
+207 common fchown32 sys_fchown
+208 common setresuid32 sys_setresuid
+209 common getresuid32 sys_getresuid
+210 common setresgid32 sys_setresgid
+211 common getresgid32 sys_getresgid
+212 common chown32 sys_chown
+213 common setuid32 sys_setuid
+214 common setgid32 sys_setgid
+215 common setfsuid32 sys_setfsuid
+216 common setfsgid32 sys_setfsgid
+217 common getdents64 sys_getdents64
+218 common pivot_root sys_pivot_root
+219 common mincore sys_mincore
+220 common madvise sys_madvise
+221 common fcntl64 sys_fcntl64 sys_oabi_fcntl64
+# 222 for tux
+# 223 is unused
+224 common gettid sys_gettid
+225 common readahead sys_readahead sys_oabi_readahead
+226 common setxattr sys_setxattr
+227 common lsetxattr sys_lsetxattr
+228 common fsetxattr sys_fsetxattr
+229 common getxattr sys_getxattr
+230 common lgetxattr sys_lgetxattr
+231 common fgetxattr sys_fgetxattr
+232 common listxattr sys_listxattr
+233 common llistxattr sys_llistxattr
+234 common flistxattr sys_flistxattr
+235 common removexattr sys_removexattr
+236 common lremovexattr sys_lremovexattr
+237 common fremovexattr sys_fremovexattr
+238 common tkill sys_tkill
+239 common sendfile64 sys_sendfile64
+240 common futex sys_futex_time32
+241 common sched_setaffinity sys_sched_setaffinity
+242 common sched_getaffinity sys_sched_getaffinity
+243 common io_setup sys_io_setup
+244 common io_destroy sys_io_destroy
+245 common io_getevents sys_io_getevents_time32
+246 common io_submit sys_io_submit
+247 common io_cancel sys_io_cancel
+248 common exit_group sys_exit_group
+249 common lookup_dcookie sys_lookup_dcookie
+250 common epoll_create sys_epoll_create
+251 common epoll_ctl sys_epoll_ctl sys_oabi_epoll_ctl
+252 common epoll_wait sys_epoll_wait sys_oabi_epoll_wait
+253 common remap_file_pages sys_remap_file_pages
+# 254 for set_thread_area
+# 255 for get_thread_area
+256 common set_tid_address sys_set_tid_address
+257 common timer_create sys_timer_create
+258 common timer_settime sys_timer_settime32
+259 common timer_gettime sys_timer_gettime32
+260 common timer_getoverrun sys_timer_getoverrun
+261 common timer_delete sys_timer_delete
+262 common clock_settime sys_clock_settime32
+263 common clock_gettime sys_clock_gettime32
+264 common clock_getres sys_clock_getres_time32
+265 common clock_nanosleep sys_clock_nanosleep_time32
+266 common statfs64 sys_statfs64_wrapper
+267 common fstatfs64 sys_fstatfs64_wrapper
+268 common tgkill sys_tgkill
+269 common utimes sys_utimes_time32
+270 common arm_fadvise64_64 sys_arm_fadvise64_64
+271 common pciconfig_iobase sys_pciconfig_iobase
+272 common pciconfig_read sys_pciconfig_read
+273 common pciconfig_write sys_pciconfig_write
+274 common mq_open sys_mq_open
+275 common mq_unlink sys_mq_unlink
+276 common mq_timedsend sys_mq_timedsend_time32
+277 common mq_timedreceive sys_mq_timedreceive_time32
+278 common mq_notify sys_mq_notify
+279 common mq_getsetattr sys_mq_getsetattr
+280 common waitid sys_waitid
+281 common socket sys_socket
+282 common bind sys_bind sys_oabi_bind
+283 common connect sys_connect sys_oabi_connect
+284 common listen sys_listen
+285 common accept sys_accept
+286 common getsockname sys_getsockname
+287 common getpeername sys_getpeername
+288 common socketpair sys_socketpair
+289 common send sys_send
+290 common sendto sys_sendto sys_oabi_sendto
+291 common recv sys_recv
+292 common recvfrom sys_recvfrom
+293 common shutdown sys_shutdown
+294 common setsockopt sys_setsockopt
+295 common getsockopt sys_getsockopt
+296 common sendmsg sys_sendmsg sys_oabi_sendmsg
+297 common recvmsg sys_recvmsg
+298 common semop sys_semop sys_oabi_semop
+299 common semget sys_semget
+300 common semctl sys_old_semctl
+301 common msgsnd sys_msgsnd
+302 common msgrcv sys_msgrcv
+303 common msgget sys_msgget
+304 common msgctl sys_old_msgctl
+305 common shmat sys_shmat
+306 common shmdt sys_shmdt
+307 common shmget sys_shmget
+308 common shmctl sys_old_shmctl
+309 common add_key sys_add_key
+310 common request_key sys_request_key
+311 common keyctl sys_keyctl
+312 common semtimedop sys_semtimedop_time32 sys_oabi_semtimedop
+313 common vserver
+314 common ioprio_set sys_ioprio_set
+315 common ioprio_get sys_ioprio_get
+316 common inotify_init sys_inotify_init
+317 common inotify_add_watch sys_inotify_add_watch
+318 common inotify_rm_watch sys_inotify_rm_watch
+319 common mbind sys_mbind
+320 common get_mempolicy sys_get_mempolicy
+321 common set_mempolicy sys_set_mempolicy
+322 common openat sys_openat
+323 common mkdirat sys_mkdirat
+324 common mknodat sys_mknodat
+325 common fchownat sys_fchownat
+326 common futimesat sys_futimesat_time32
+327 common fstatat64 sys_fstatat64 sys_oabi_fstatat64
+328 common unlinkat sys_unlinkat
+329 common renameat sys_renameat
+330 common linkat sys_linkat
+331 common symlinkat sys_symlinkat
+332 common readlinkat sys_readlinkat
+333 common fchmodat sys_fchmodat
+334 common faccessat sys_faccessat
+335 common pselect6 sys_pselect6_time32
+336 common ppoll sys_ppoll_time32
+337 common unshare sys_unshare
+338 common set_robust_list sys_set_robust_list
+339 common get_robust_list sys_get_robust_list
+340 common splice sys_splice
+341 common arm_sync_file_range sys_sync_file_range2
+342 common tee sys_tee
+343 common vmsplice sys_vmsplice
+344 common move_pages sys_move_pages
+345 common getcpu sys_getcpu
+346 common epoll_pwait sys_epoll_pwait
+347 common kexec_load sys_kexec_load
+348 common utimensat sys_utimensat_time32
+349 common signalfd sys_signalfd
+350 common timerfd_create sys_timerfd_create
+351 common eventfd sys_eventfd
+352 common fallocate sys_fallocate
+353 common timerfd_settime sys_timerfd_settime32
+354 common timerfd_gettime sys_timerfd_gettime32
+355 common signalfd4 sys_signalfd4
+356 common eventfd2 sys_eventfd2
+357 common epoll_create1 sys_epoll_create1
+358 common dup3 sys_dup3
+359 common pipe2 sys_pipe2
+360 common inotify_init1 sys_inotify_init1
+361 common preadv sys_preadv
+362 common pwritev sys_pwritev
+363 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo
+364 common perf_event_open sys_perf_event_open
+365 common recvmmsg sys_recvmmsg_time32
+366 common accept4 sys_accept4
+367 common fanotify_init sys_fanotify_init
+368 common fanotify_mark sys_fanotify_mark
+369 common prlimit64 sys_prlimit64
+370 common name_to_handle_at sys_name_to_handle_at
+371 common open_by_handle_at sys_open_by_handle_at
+372 common clock_adjtime sys_clock_adjtime32
+373 common syncfs sys_syncfs
+374 common sendmmsg sys_sendmmsg
+375 common setns sys_setns
+376 common process_vm_readv sys_process_vm_readv
+377 common process_vm_writev sys_process_vm_writev
+378 common kcmp sys_kcmp
+379 common finit_module sys_finit_module
+380 common sched_setattr sys_sched_setattr
+381 common sched_getattr sys_sched_getattr
+382 common renameat2 sys_renameat2
+383 common seccomp sys_seccomp
+384 common getrandom sys_getrandom
+385 common memfd_create sys_memfd_create
+386 common bpf sys_bpf
+387 common execveat sys_execveat
+388 common userfaultfd sys_userfaultfd
+389 common membarrier sys_membarrier
+390 common mlock2 sys_mlock2
+391 common copy_file_range sys_copy_file_range
+392 common preadv2 sys_preadv2
+393 common pwritev2 sys_pwritev2
+394 common pkey_mprotect sys_pkey_mprotect
+395 common pkey_alloc sys_pkey_alloc
+396 common pkey_free sys_pkey_free
+397 common statx sys_statx
+398 common rseq sys_rseq
+399 common io_pgetevents sys_io_pgetevents_time32
+400 common migrate_pages sys_migrate_pages
+401 common kexec_file_load sys_kexec_file_load
+# 402 is unused
+403 common clock_gettime64 sys_clock_gettime
+404 common clock_settime64 sys_clock_settime
+405 common clock_adjtime64 sys_clock_adjtime
+406 common clock_getres_time64 sys_clock_getres
+407 common clock_nanosleep_time64 sys_clock_nanosleep
+408 common timer_gettime64 sys_timer_gettime
+409 common timer_settime64 sys_timer_settime
+410 common timerfd_gettime64 sys_timerfd_gettime
+411 common timerfd_settime64 sys_timerfd_settime
+412 common utimensat_time64 sys_utimensat
+413 common pselect6_time64 sys_pselect6
+414 common ppoll_time64 sys_ppoll
+416 common io_pgetevents_time64 sys_io_pgetevents
+417 common recvmmsg_time64 sys_recvmmsg
+418 common mq_timedsend_time64 sys_mq_timedsend
+419 common mq_timedreceive_time64 sys_mq_timedreceive
+420 common semtimedop_time64 sys_semtimedop
+421 common rt_sigtimedwait_time64 sys_rt_sigtimedwait
+422 common futex_time64 sys_futex
+423 common sched_rr_get_interval_time64 sys_sched_rr_get_interval
+424 common pidfd_send_signal sys_pidfd_send_signal
+425 common io_uring_setup sys_io_uring_setup
+426 common io_uring_enter sys_io_uring_enter
+427 common io_uring_register sys_io_uring_register
+428 common open_tree sys_open_tree
+429 common move_mount sys_move_mount
+430 common fsopen sys_fsopen
+431 common fsconfig sys_fsconfig
+432 common fsmount sys_fsmount
+433 common fspick sys_fspick
+434 common pidfd_open sys_pidfd_open
+435 common clone3 sys_clone3
diff --git a/linux-user/arm/syscall_nr.h b/linux-user/arm/syscall_nr.h
deleted file mode 100644
index 6db9235f2b..0000000000
--- a/linux-user/arm/syscall_nr.h
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_ARM_SYSCALL_NR_H
-#define LINUX_USER_ARM_SYSCALL_NR_H
-
-#define TARGET_NR_restart_syscall ( 0)
-#define TARGET_NR_exit ( 1)
-#define TARGET_NR_fork ( 2)
-#define TARGET_NR_read ( 3)
-#define TARGET_NR_write ( 4)
-#define TARGET_NR_open ( 5)
-#define TARGET_NR_close ( 6)
-#define TARGET_NR_waitpid ( 7) /* removed */
-#define TARGET_NR_creat ( 8)
-#define TARGET_NR_link ( 9)
-#define TARGET_NR_unlink ( 10)
-#define TARGET_NR_execve ( 11)
-#define TARGET_NR_chdir ( 12)
-#define TARGET_NR_time ( 13)
-#define TARGET_NR_mknod ( 14)
-#define TARGET_NR_chmod ( 15)
-#define TARGET_NR_lchown ( 16)
-#define TARGET_NR_break ( 17) /* removed */
- /* 18 was sys_stat */
-#define TARGET_NR_lseek ( 19)
-#define TARGET_NR_getpid ( 20)
-#define TARGET_NR_mount ( 21)
-#define TARGET_NR_umount ( 22)
-#define TARGET_NR_setuid ( 23)
-#define TARGET_NR_getuid ( 24)
-#define TARGET_NR_stime ( 25)
-#define TARGET_NR_ptrace ( 26)
-#define TARGET_NR_alarm ( 27)
-
-#define TARGET_NR_pause ( 29)
-#define TARGET_NR_utime ( 30)
-#define TARGET_NR_stty ( 31) /* removed */
-#define TARGET_NR_gtty ( 32) /* removed */
-#define TARGET_NR_access ( 33)
-#define TARGET_NR_nice ( 34)
-#define TARGET_NR_ftime ( 35) /* removed */
-#define TARGET_NR_sync ( 36)
-#define TARGET_NR_kill ( 37)
-#define TARGET_NR_rename ( 38)
-#define TARGET_NR_mkdir ( 39)
-#define TARGET_NR_rmdir ( 40)
-#define TARGET_NR_dup ( 41)
-#define TARGET_NR_pipe ( 42)
-#define TARGET_NR_times ( 43)
-#define TARGET_NR_prof ( 44) /* removed */
-#define TARGET_NR_brk ( 45)
-#define TARGET_NR_setgid ( 46)
-#define TARGET_NR_getgid ( 47)
-#define TARGET_NR_signal ( 48) /* removed */
-#define TARGET_NR_geteuid ( 49)
-#define TARGET_NR_getegid ( 50)
-#define TARGET_NR_acct ( 51)
-#define TARGET_NR_umount2 ( 52)
-#define TARGET_NR_lock ( 53) /* removed */
-#define TARGET_NR_ioctl ( 54)
-#define TARGET_NR_fcntl ( 55)
-#define TARGET_NR_mpx ( 56) /* removed */
-#define TARGET_NR_setpgid ( 57)
-#define TARGET_NR_ulimit ( 58) /* removed */
- /* 59 was sys_olduname */
-#define TARGET_NR_umask ( 60)
-#define TARGET_NR_chroot ( 61)
-#define TARGET_NR_ustat ( 62)
-#define TARGET_NR_dup2 ( 63)
-#define TARGET_NR_getppid ( 64)
-#define TARGET_NR_getpgrp ( 65)
-#define TARGET_NR_setsid ( 66)
-#define TARGET_NR_sigaction ( 67)
-#define TARGET_NR_sgetmask ( 68) /* removed */
-#define TARGET_NR_ssetmask ( 69) /* removed */
-#define TARGET_NR_setreuid ( 70)
-#define TARGET_NR_setregid ( 71)
-#define TARGET_NR_sigsuspend ( 72)
-#define TARGET_NR_sigpending ( 73)
-#define TARGET_NR_sethostname ( 74)
-#define TARGET_NR_setrlimit ( 75)
-#define TARGET_NR_getrlimit ( 76) /* Back compat 2GB limited rlimit */
-#define TARGET_NR_getrusage ( 77)
-#define TARGET_NR_gettimeofday ( 78)
-#define TARGET_NR_settimeofday ( 79)
-#define TARGET_NR_getgroups ( 80)
-#define TARGET_NR_setgroups ( 81)
-#define TARGET_NR_select ( 82)
-#define TARGET_NR_symlink ( 83)
- /* 84 was sys_lstat */
-#define TARGET_NR_readlink ( 85)
-#define TARGET_NR_uselib ( 86)
-#define TARGET_NR_swapon ( 87)
-#define TARGET_NR_reboot ( 88)
-#define TARGET_NR_readdir ( 89)
-#define TARGET_NR_mmap ( 90)
-#define TARGET_NR_munmap ( 91)
-#define TARGET_NR_truncate ( 92)
-#define TARGET_NR_ftruncate ( 93)
-#define TARGET_NR_fchmod ( 94)
-#define TARGET_NR_fchown ( 95)
-#define TARGET_NR_getpriority ( 96)
-#define TARGET_NR_setpriority ( 97)
-#define TARGET_NR_profil ( 98) /* removed */
-#define TARGET_NR_statfs ( 99)
-#define TARGET_NR_fstatfs (100)
-#define TARGET_NR_ioperm (101)
-#define TARGET_NR_socketcall (102)
-#define TARGET_NR_syslog (103)
-#define TARGET_NR_setitimer (104)
-#define TARGET_NR_getitimer (105)
-#define TARGET_NR_stat (106)
-#define TARGET_NR_lstat (107)
-#define TARGET_NR_fstat (108)
- /* 109 was sys_uname */
- /* 110 was sys_iopl */
-#define TARGET_NR_vhangup (111)
-#define TARGET_NR_idle (112)
-#define TARGET_NR_syscall (113) /* syscall to call a syscall! */
-#define TARGET_NR_wait4 (114)
-#define TARGET_NR_swapoff (115)
-#define TARGET_NR_sysinfo (116)
-#define TARGET_NR_ipc (117)
-#define TARGET_NR_fsync (118)
-#define TARGET_NR_sigreturn (119)
-#define TARGET_NR_clone (120)
-#define TARGET_NR_setdomainname (121)
-#define TARGET_NR_uname (122)
-#define TARGET_NR_modify_ldt (123)
-#define TARGET_NR_adjtimex (124)
-#define TARGET_NR_mprotect (125)
-#define TARGET_NR_sigprocmask (126)
-#define TARGET_NR_create_module (127) /* removed */
-#define TARGET_NR_init_module (128)
-#define TARGET_NR_delete_module (129)
-#define TARGET_NR_get_kernel_syms (130) /* removed */
-#define TARGET_NR_quotactl (131)
-#define TARGET_NR_getpgid (132)
-#define TARGET_NR_fchdir (133)
-#define TARGET_NR_bdflush (134)
-#define TARGET_NR_sysfs (135)
-#define TARGET_NR_personality (136)
-#define TARGET_NR_afs_syscall (137) /* Syscall for Andrew File System */
-#define TARGET_NR_setfsuid (138)
-#define TARGET_NR_setfsgid (139)
-#define TARGET_NR__llseek (140)
-#define TARGET_NR_getdents (141)
-#define TARGET_NR__newselect (142)
-#define TARGET_NR_flock (143)
-#define TARGET_NR_msync (144)
-#define TARGET_NR_readv (145)
-#define TARGET_NR_writev (146)
-#define TARGET_NR_getsid (147)
-#define TARGET_NR_fdatasync (148)
-#define TARGET_NR__sysctl (149)
-#define TARGET_NR_mlock (150)
-#define TARGET_NR_munlock (151)
-#define TARGET_NR_mlockall (152)
-#define TARGET_NR_munlockall (153)
-#define TARGET_NR_sched_setparam (154)
-#define TARGET_NR_sched_getparam (155)
-#define TARGET_NR_sched_setscheduler (156)
-#define TARGET_NR_sched_getscheduler (157)
-#define TARGET_NR_sched_yield (158)
-#define TARGET_NR_sched_get_priority_max (159)
-#define TARGET_NR_sched_get_priority_min (160)
-#define TARGET_NR_sched_rr_get_interval (161)
-#define TARGET_NR_nanosleep (162)
-#define TARGET_NR_mremap (163)
-#define TARGET_NR_setresuid (164)
-#define TARGET_NR_getresuid (165)
-#define TARGET_NR_vm86 (166) /* removed */
-#define TARGET_NR_query_module (167) /* removed */
-#define TARGET_NR_poll (168)
-#define TARGET_NR_nfsservctl (169)
-#define TARGET_NR_setresgid (170)
-#define TARGET_NR_getresgid (171)
-#define TARGET_NR_prctl (172)
-#define TARGET_NR_rt_sigreturn (173)
-#define TARGET_NR_rt_sigaction (174)
-#define TARGET_NR_rt_sigprocmask (175)
-#define TARGET_NR_rt_sigpending (176)
-#define TARGET_NR_rt_sigtimedwait (177)
-#define TARGET_NR_rt_sigqueueinfo (178)
-#define TARGET_NR_rt_sigsuspend (179)
-#define TARGET_NR_pread64 (180)
-#define TARGET_NR_pwrite64 (181)
-#define TARGET_NR_chown (182)
-#define TARGET_NR_getcwd (183)
-#define TARGET_NR_capget (184)
-#define TARGET_NR_capset (185)
-#define TARGET_NR_sigaltstack (186)
-#define TARGET_NR_sendfile (187)
- /* 188 reserved */
- /* 189 reserved */
-#define TARGET_NR_vfork (190)
-#define TARGET_NR_ugetrlimit (191) /* SuS compliant getrlimit */
-#define TARGET_NR_mmap2 (192)
-#define TARGET_NR_truncate64 (193)
-#define TARGET_NR_ftruncate64 (194)
-#define TARGET_NR_stat64 (195)
-#define TARGET_NR_lstat64 (196)
-#define TARGET_NR_fstat64 (197)
-#define TARGET_NR_lchown32 (198)
-#define TARGET_NR_getuid32 (199)
-#define TARGET_NR_getgid32 (200)
-#define TARGET_NR_geteuid32 (201)
-#define TARGET_NR_getegid32 (202)
-#define TARGET_NR_setreuid32 (203)
-#define TARGET_NR_setregid32 (204)
-#define TARGET_NR_getgroups32 (205)
-#define TARGET_NR_setgroups32 (206)
-#define TARGET_NR_fchown32 (207)
-#define TARGET_NR_setresuid32 (208)
-#define TARGET_NR_getresuid32 (209)
-#define TARGET_NR_setresgid32 (210)
-#define TARGET_NR_getresgid32 (211)
-#define TARGET_NR_chown32 (212)
-#define TARGET_NR_setuid32 (213)
-#define TARGET_NR_setgid32 (214)
-#define TARGET_NR_setfsuid32 (215)
-#define TARGET_NR_setfsgid32 (216)
-#define TARGET_NR_getdents64 (217)
-#define TARGET_NR_pivot_root (218)
-#define TARGET_NR_mincore (219)
-#define TARGET_NR_madvise (220)
-#define TARGET_NR_fcntl64 (221)
- /* 222 for tux */
- /* 223 is unused */
-#define TARGET_NR_gettid (224)
-#define TARGET_NR_readahead (225)
-#define TARGET_NR_setxattr (226)
-#define TARGET_NR_lsetxattr (227)
-#define TARGET_NR_fsetxattr (228)
-#define TARGET_NR_getxattr (229)
-#define TARGET_NR_lgetxattr (230)
-#define TARGET_NR_fgetxattr (231)
-#define TARGET_NR_listxattr (232)
-#define TARGET_NR_llistxattr (233)
-#define TARGET_NR_flistxattr (234)
-#define TARGET_NR_removexattr (235)
-#define TARGET_NR_lremovexattr (236)
-#define TARGET_NR_fremovexattr (237)
-#define TARGET_NR_tkill (238)
-#define TARGET_NR_sendfile64 (239)
-#define TARGET_NR_futex (240)
-#define TARGET_NR_sched_setaffinity (241)
-#define TARGET_NR_sched_getaffinity (242)
-#define TARGET_NR_io_setup (243)
-#define TARGET_NR_io_destroy (244)
-#define TARGET_NR_io_getevents (245)
-#define TARGET_NR_io_submit (246)
-#define TARGET_NR_io_cancel (247)
-#define TARGET_NR_exit_group (248)
-#define TARGET_NR_lookup_dcookie (249)
-#define TARGET_NR_epoll_create (250)
-#define TARGET_NR_epoll_ctl (251)
-#define TARGET_NR_epoll_wait (252)
-#define TARGET_NR_remap_file_pages (253)
- /* 254 for set_thread_area */
- /* 255 for get_thread_area */
- /* 256 for set_tid_address */
-#define TARGET_NR_set_tid_address 256
-#define TARGET_NR_timer_create 257
-#define TARGET_NR_timer_settime 258
-#define TARGET_NR_timer_gettime 259
-#define TARGET_NR_timer_getoverrun 260
-#define TARGET_NR_timer_delete 261
-#define TARGET_NR_clock_settime 262
-#define TARGET_NR_clock_gettime 263
-#define TARGET_NR_clock_getres 264
-#define TARGET_NR_clock_nanosleep 265
-#define TARGET_NR_statfs64 266
-#define TARGET_NR_fstatfs64 267
-#define TARGET_NR_tgkill 268
-#define TARGET_NR_utimes 269
-#define TARGET_NR_arm_fadvise64_64 270
-#define TARGET_NR_pciconfig_iobase 271
-#define TARGET_NR_pciconfig_read 272
-#define TARGET_NR_pciconfig_write 273
-#define TARGET_NR_mq_open 274
-#define TARGET_NR_mq_unlink 275
-#define TARGET_NR_mq_timedsend 276
-#define TARGET_NR_mq_timedreceive 277
-#define TARGET_NR_mq_notify 278
-#define TARGET_NR_mq_getsetattr 279
-#define TARGET_NR_waitid 280
-#define TARGET_NR_socket 281
-#define TARGET_NR_bind 282
-#define TARGET_NR_connect 283
-#define TARGET_NR_listen 284
-#define TARGET_NR_accept 285
-#define TARGET_NR_getsockname 286
-#define TARGET_NR_getpeername 287
-#define TARGET_NR_socketpair 288
-#define TARGET_NR_send 289
-#define TARGET_NR_sendto 290
-#define TARGET_NR_recv 291
-#define TARGET_NR_recvfrom 292
-#define TARGET_NR_shutdown 293
-#define TARGET_NR_setsockopt 294
-#define TARGET_NR_getsockopt 295
-#define TARGET_NR_sendmsg 296
-#define TARGET_NR_recvmsg 297
-#define TARGET_NR_semop 298
-#define TARGET_NR_semget 299
-#define TARGET_NR_semctl 300
-#define TARGET_NR_msgsnd 301
-#define TARGET_NR_msgrcv 302
-#define TARGET_NR_msgget 303
-#define TARGET_NR_msgctl 304
-#define TARGET_NR_shmat 305
-#define TARGET_NR_shmdt 306
-#define TARGET_NR_shmget 307
-#define TARGET_NR_shmctl 308
-#define TARGET_NR_add_key 309
-#define TARGET_NR_request_key 310
-#define TARGET_NR_keyctl 311
-#define TARGET_NR_semtimedop 312
-#define TARGET_NR_vserver 313
-#define TARGET_NR_ioprio_set 314
-#define TARGET_NR_ioprio_get 315
-#define TARGET_NR_inotify_init 316
-#define TARGET_NR_inotify_add_watch 317
-#define TARGET_NR_inotify_rm_watch 318
-#define TARGET_NR_mbind 319
-#define TARGET_NR_get_mempolicy 320
-#define TARGET_NR_set_mempolicy 321
-#define TARGET_NR_openat (322)
-#define TARGET_NR_mkdirat (323)
-#define TARGET_NR_mknodat (324)
-#define TARGET_NR_fchownat (325)
-#define TARGET_NR_futimesat (326)
-#define TARGET_NR_fstatat64 (327)
-#define TARGET_NR_unlinkat (328)
-#define TARGET_NR_renameat (329)
-#define TARGET_NR_linkat (330)
-#define TARGET_NR_symlinkat (331)
-#define TARGET_NR_readlinkat (332)
-#define TARGET_NR_fchmodat (333)
-#define TARGET_NR_faccessat (334)
-#define TARGET_NR_pselect6 (335)
-#define TARGET_NR_ppoll (336)
-#define TARGET_NR_unshare (337)
-#define TARGET_NR_set_robust_list (338)
-#define TARGET_NR_get_robust_list (339)
-#define TARGET_NR_splice (340)
-#define TARGET_NR_arm_sync_file_range (341)
-#define TARGET_NR_sync_file_range2 TARGET_NR_arm_sync_file_range
-#define TARGET_NR_tee (342)
-#define TARGET_NR_vmsplice (343)
-#define TARGET_NR_move_pages (344)
-#define TARGET_NR_getcpu (345)
-#define TARGET_NR_epoll_pwait (346)
-#define TARGET_NR_kexec_load (347)
-#define TARGET_NR_utimensat (348)
-#define TARGET_NR_signalfd (349)
-#define TARGET_NR_timerfd_create (350)
-#define TARGET_NR_eventfd (351)
-#define TARGET_NR_fallocate (352)
-#define TARGET_NR_timerfd_settime (353)
-#define TARGET_NR_timerfd_gettime (354)
-#define TARGET_NR_signalfd4 (355)
-#define TARGET_NR_eventfd2 (356)
-#define TARGET_NR_epoll_create1 (357)
-#define TARGET_NR_dup3 (358)
-#define TARGET_NR_pipe2 (359)
-#define TARGET_NR_inotify_init1 (360)
-#define TARGET_NR_preadv (361)
-#define TARGET_NR_pwritev (362)
-#define TARGET_NR_rt_tgsigqueueinfo (363)
-#define TARGET_NR_perf_event_open (364)
-#define TARGET_NR_recvmmsg (365)
-#define TARGET_NR_accept4 (366)
-#define TARGET_NR_fanotify_init (367)
-#define TARGET_NR_fanotify_mark (368)
-#define TARGET_NR_prlimit64 (369)
-#define TARGET_NR_name_to_handle_at (370)
-#define TARGET_NR_open_by_handle_at (371)
-#define TARGET_NR_clock_adjtime (372)
-#define TARGET_NR_syncfs (373)
-#define TARGET_NR_sendmmsg (374)
-#define TARGET_NR_setns (375)
-#define TARGET_NR_process_vm_readv (376)
-#define TARGET_NR_process_vm_writev (377)
-#define TARGET_NR_kcmp (378)
-#define TARGET_NR_finit_module (379)
-
-#define TARGET_NR_sched_setattr (380)
-#define TARGET_NR_sched_getattr (381)
-#define TARGET_NR_renameat2 (382)
-#define TARGET_NR_seccomp (383)
-#define TARGET_NR_getrandom (384)
-#define TARGET_NR_memfd_create (385)
-#define TARGET_NR_bpf (386)
-#define TARGET_NR_execveat (387)
-#define TARGET_NR_userfaultfd (388)
-#define TARGET_NR_membarrier (389)
-#define TARGET_NR_mlock2 (390)
-#define TARGET_NR_copy_file_range (391)
-#define TARGET_NR_preadv2 (392)
-#define TARGET_NR_pwritev2 (393)
-#define TARGET_NR_pkey_mprotect (394)
-#define TARGET_NR_pkey_alloc (395)
-#define TARGET_NR_pkey_free (396)
-#define TARGET_NR_statx (397)
-#define TARGET_NR_rseq (398)
-#define TARGET_NR_io_pgetevents (399)
-#define TARGET_NR_migrate_pages (400)
-#define TARGET_NR_kexec_file_load (401)
-/* 402 is unused */
-#define TARGET_NR_clock_gettime64 (403)
-#define TARGET_NR_clock_settime64 (404)
-#define TARGET_NR_clock_adjtime64 (405)
-#define TARGET_NR_clock_getres_time64 (406)
-#define TARGET_NR_clock_nanosleep_time64 (407)
-#define TARGET_NR_timer_gettime64 (408)
-#define TARGET_NR_timer_settime64 (409)
-#define TARGET_NR_timerfd_gettime64 (410)
-#define TARGET_NR_timerfd_settime64 (411)
-#define TARGET_NR_utimensat_time64 (412)
-#define TARGET_NR_pselect6_time64 (413)
-#define TARGET_NR_ppoll_time64 (414)
-#define TARGET_NR_io_pgetevents_time64 (416)
-#define TARGET_NR_recvmmsg_time64 (417)
-#define TARGET_NR_mq_timedsend_time64 (418)
-#define TARGET_NR_mq_timedreceive_time64 (419)
-#define TARGET_NR_semtimedop_time64 (420)
-#define TARGET_NR_rt_sigtimedwait_time64 (421)
-#define TARGET_NR_futex_time64 (422)
-#define TARGET_NR_sched_rr_get_interval_time64 (423)
-#define TARGET_NR_pidfd_send_signal (424)
-#define TARGET_NR_io_uring_setup (425)
-#define TARGET_NR_io_uring_enter (426)
-#define TARGET_NR_io_uring_register (427)
-#define TARGET_NR_open_tree (428)
-#define TARGET_NR_move_mount (429)
-#define TARGET_NR_fsopen (430)
-#define TARGET_NR_fsconfig (431)
-#define TARGET_NR_fsmount (432)
-#define TARGET_NR_fspick (433)
-#define TARGET_NR_pidfd_open (434)
-#define TARGET_NR_clone3 (435)
-
-#endif
diff --git a/linux-user/arm/syscallhdr.sh b/linux-user/arm/syscallhdr.sh
new file mode 100644
index 0000000000..4c952b2cfb
--- /dev/null
+++ b/linux-user/arm/syscallhdr.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_ARM_`basename "$out" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+ -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
+if echo $out | grep -q uapi; then
+ fileguard="_UAPI$fileguard"
+fi
+grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
+ echo "#ifndef ${fileguard}"
+ echo "#define ${fileguard} 1"
+ echo ""
+
+ while read nr abi name entry ; do
+ if [ -z "$offset" ]; then
+ echo "#define TARGET_NR_${prefix}${name} $nr"
+ else
+ echo "#define TARGET_NR_${prefix}${name} ($offset + $nr)"
+ fi
+ done
+
+ echo ""
+ echo "#endif /* ${fileguard} */"
+) > "$out"
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e55a477c34..61078342f7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -11830,8 +11830,14 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
#endif
return ret;
#endif
+#if defined(TARGET_NR_sync_file_range2) || \
+ defined(TARGET_NR_arm_sync_file_range)
#if defined(TARGET_NR_sync_file_range2)
case TARGET_NR_sync_file_range2:
+#endif
+#if defined(TARGET_NR_arm_sync_file_range)
+ case TARGET_NR_arm_sync_file_range:
+#endif
/* This is like sync_file_range but the arguments are reordered */
#if TARGET_ABI_BITS == 32
ret = get_errno(sync_file_range(arg1, target_offset64(arg3, arg4),