diff --git a/configure b/configure
index b5abea89d300..a6a733e09e4d 100755
--- a/configure
+++ b/configure
@@ -1857,7 +1857,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 arm ppc ; do
+for arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x ; 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
@@ -7810,6 +7810,7 @@ case "$target_name" in
     echo "TARGET_ABI32=y" >> $config_target_mak
   ;;
   s390x)
+    TARGET_SYSTBL_ABI=common,64
     mttcg=yes
     gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
   ;;
diff --git a/linux-user/Makefile.objs b/linux-user/Makefile.objs
index 8b00dad687b2..f4e666e74c91 100644
--- a/linux-user/Makefile.objs
+++ b/linux-user/Makefile.objs
@@ -14,5 +14,6 @@ obj-$(TARGET_M68K) += m68k/
 obj-$(TARGET_MICROBLAZE) += microblaze/
 obj-$(TARGET_PPC) += ppc/
 obj-$(TARGET_PPC64) += ppc/
+obj-$(TARGET_S390X) += s390x/
 obj-$(TARGET_SH4) += sh4/
 obj-$(TARGET_XTENSA) += xtensa/
diff --git a/linux-user/s390x/Makefile.objs b/linux-user/s390x/Makefile.objs
new file mode 100644
index 000000000000..f30f1625ccff
--- /dev/null
+++ b/linux-user/s390x/Makefile.objs
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/s390x/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/s390x/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/s390x/syscall.tbl $(syshdr)
+	$(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/s390x/syscall.tbl b/linux-user/s390x/syscall.tbl
new file mode 100644
index 000000000000..3054e9c035a3
--- /dev/null
+++ b/linux-user/s390x/syscall.tbl
@@ -0,0 +1,440 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# System call table for s390
+#
+# Format:
+#
+# <nr> <abi> <syscall> <entry-64bit> <compat-entry>
+#
+# where <abi> can be common, 64, or 32
+
+1    common	exit			sys_exit			sys_exit
+2    common	fork			sys_fork			sys_fork
+3    common	read			sys_read			compat_sys_s390_read
+4    common	write			sys_write			compat_sys_s390_write
+5    common	open			sys_open			compat_sys_open
+6    common	close			sys_close			sys_close
+7    common	restart_syscall		sys_restart_syscall		sys_restart_syscall
+8    common	creat			sys_creat			sys_creat
+9    common	link			sys_link			sys_link
+10   common	unlink			sys_unlink			sys_unlink
+11   common	execve			sys_execve			compat_sys_execve
+12   common	chdir			sys_chdir			sys_chdir
+13   32		time			-				sys_time32
+14   common	mknod			sys_mknod			sys_mknod
+15   common	chmod			sys_chmod			sys_chmod
+16   32		lchown			-				sys_lchown16
+19   common	lseek			sys_lseek			compat_sys_lseek
+20   common	getpid			sys_getpid			sys_getpid
+21   common	mount			sys_mount			compat_sys_mount
+22   common	umount			sys_oldumount			sys_oldumount
+23   32		setuid			-				sys_setuid16
+24   32		getuid			-				sys_getuid16
+25   32		stime			-				sys_stime32
+26   common	ptrace			sys_ptrace			compat_sys_ptrace
+27   common	alarm			sys_alarm			sys_alarm
+29   common	pause			sys_pause			sys_pause
+30   common	utime			sys_utime			sys_utime32
+33   common	access			sys_access			sys_access
+34   common	nice			sys_nice			sys_nice
+36   common	sync			sys_sync			sys_sync
+37   common	kill			sys_kill			sys_kill
+38   common	rename			sys_rename			sys_rename
+39   common	mkdir			sys_mkdir			sys_mkdir
+40   common	rmdir			sys_rmdir			sys_rmdir
+41   common	dup			sys_dup				sys_dup
+42   common	pipe			sys_pipe			sys_pipe
+43   common	times			sys_times			compat_sys_times
+45   common	brk			sys_brk				sys_brk
+46   32		setgid			-				sys_setgid16
+47   32		getgid			-				sys_getgid16
+48   common	signal			sys_signal			sys_signal
+49   32		geteuid			-				sys_geteuid16
+50   32		getegid			-				sys_getegid16
+51   common	acct			sys_acct			sys_acct
+52   common	umount2			sys_umount			sys_umount
+54   common	ioctl			sys_ioctl			compat_sys_ioctl
+55   common	fcntl			sys_fcntl			compat_sys_fcntl
+57   common	setpgid			sys_setpgid			sys_setpgid
+60   common	umask			sys_umask			sys_umask
+61   common	chroot			sys_chroot			sys_chroot
+62   common	ustat			sys_ustat			compat_sys_ustat
+63   common	dup2			sys_dup2			sys_dup2
+64   common	getppid			sys_getppid			sys_getppid
+65   common	getpgrp			sys_getpgrp			sys_getpgrp
+66   common	setsid			sys_setsid			sys_setsid
+67   common	sigaction		sys_sigaction			compat_sys_sigaction
+70   32		setreuid		-				sys_setreuid16
+71   32		setregid		-				sys_setregid16
+72   common	sigsuspend		sys_sigsuspend			sys_sigsuspend
+73   common	sigpending		sys_sigpending			compat_sys_sigpending
+74   common	sethostname		sys_sethostname			sys_sethostname
+75   common	setrlimit		sys_setrlimit			compat_sys_setrlimit
+76   32		getrlimit		-				compat_sys_old_getrlimit
+77   common	getrusage		sys_getrusage			compat_sys_getrusage
+78   common	gettimeofday		sys_gettimeofday		compat_sys_gettimeofday
+79   common	settimeofday		sys_settimeofday		compat_sys_settimeofday
+80   32		getgroups		-				sys_getgroups16
+81   32		setgroups		-				sys_setgroups16
+83   common	symlink			sys_symlink			sys_symlink
+85   common	readlink		sys_readlink			sys_readlink
+86   common	uselib			sys_uselib			sys_uselib
+87   common	swapon			sys_swapon			sys_swapon
+88   common	reboot			sys_reboot			sys_reboot
+89   common	readdir			-				compat_sys_old_readdir
+90   common	mmap			sys_old_mmap			compat_sys_s390_old_mmap
+91   common	munmap			sys_munmap			sys_munmap
+92   common	truncate		sys_truncate			compat_sys_truncate
+93   common	ftruncate		sys_ftruncate			compat_sys_ftruncate
+94   common	fchmod			sys_fchmod			sys_fchmod
+95   32		fchown			-				sys_fchown16
+96   common	getpriority		sys_getpriority			sys_getpriority
+97   common	setpriority		sys_setpriority			sys_setpriority
+99   common	statfs			sys_statfs			compat_sys_statfs
+100  common	fstatfs			sys_fstatfs			compat_sys_fstatfs
+101  32		ioperm			-				-
+102  common	socketcall		sys_socketcall			compat_sys_socketcall
+103  common	syslog			sys_syslog			sys_syslog
+104  common	setitimer		sys_setitimer			compat_sys_setitimer
+105  common	getitimer		sys_getitimer			compat_sys_getitimer
+106  common	stat			sys_newstat			compat_sys_newstat
+107  common	lstat			sys_newlstat			compat_sys_newlstat
+108  common	fstat			sys_newfstat			compat_sys_newfstat
+110  common	lookup_dcookie		sys_lookup_dcookie		compat_sys_lookup_dcookie
+111  common	vhangup			sys_vhangup			sys_vhangup
+112  common	idle			-				-
+114  common	wait4			sys_wait4			compat_sys_wait4
+115  common	swapoff			sys_swapoff			sys_swapoff
+116  common	sysinfo			sys_sysinfo			compat_sys_sysinfo
+117  common	ipc			sys_s390_ipc			compat_sys_s390_ipc
+118  common	fsync			sys_fsync			sys_fsync
+119  common	sigreturn		sys_sigreturn			compat_sys_sigreturn
+120  common	clone			sys_clone			sys_clone
+121  common	setdomainname		sys_setdomainname		sys_setdomainname
+122  common	uname			sys_newuname			sys_newuname
+124  common	adjtimex		sys_adjtimex			sys_adjtimex_time32
+125  common	mprotect		sys_mprotect			sys_mprotect
+126  common	sigprocmask		sys_sigprocmask			compat_sys_sigprocmask
+127  common	create_module		-				-
+128  common	init_module		sys_init_module			sys_init_module
+129  common	delete_module		sys_delete_module		sys_delete_module
+130  common	get_kernel_syms		-				-
+131  common	quotactl		sys_quotactl			sys_quotactl
+132  common	getpgid			sys_getpgid			sys_getpgid
+133  common	fchdir			sys_fchdir			sys_fchdir
+134  common	bdflush			sys_bdflush			sys_bdflush
+135  common	sysfs			sys_sysfs			sys_sysfs
+136  common	personality		sys_s390_personality		sys_s390_personality
+137  common	afs_syscall		-				-
+138  32		setfsuid		-				sys_setfsuid16
+139  32		setfsgid		-				sys_setfsgid16
+140  32		_llseek			-				sys_llseek
+141  common	getdents		sys_getdents			compat_sys_getdents
+142  32		_newselect		-				compat_sys_select
+142  64		select			sys_select			-
+143  common	flock			sys_flock			sys_flock
+144  common	msync			sys_msync			sys_msync
+145  common	readv			sys_readv			compat_sys_readv
+146  common	writev			sys_writev			compat_sys_writev
+147  common	getsid			sys_getsid			sys_getsid
+148  common	fdatasync		sys_fdatasync			sys_fdatasync
+149  common	_sysctl			sys_sysctl			compat_sys_sysctl
+150  common	mlock			sys_mlock			sys_mlock
+151  common	munlock			sys_munlock			sys_munlock
+152  common	mlockall		sys_mlockall			sys_mlockall
+153  common	munlockall		sys_munlockall			sys_munlockall
+154  common	sched_setparam		sys_sched_setparam		sys_sched_setparam
+155  common	sched_getparam		sys_sched_getparam		sys_sched_getparam
+156  common	sched_setscheduler	sys_sched_setscheduler		sys_sched_setscheduler
+157  common	sched_getscheduler	sys_sched_getscheduler		sys_sched_getscheduler
+158  common	sched_yield		sys_sched_yield			sys_sched_yield
+159  common	sched_get_priority_max	sys_sched_get_priority_max	sys_sched_get_priority_max
+160  common	sched_get_priority_min	sys_sched_get_priority_min	sys_sched_get_priority_min
+161  common	sched_rr_get_interval	sys_sched_rr_get_interval	sys_sched_rr_get_interval_time32
+162  common	nanosleep		sys_nanosleep			sys_nanosleep_time32
+163  common	mremap			sys_mremap			sys_mremap
+164  32		setresuid		-				sys_setresuid16
+165  32		getresuid		-				sys_getresuid16
+167  common	query_module		-				-
+168  common	poll			sys_poll			sys_poll
+169  common	nfsservctl		-				-
+170  32		setresgid		-				sys_setresgid16
+171  32		getresgid		-				sys_getresgid16
+172  common	prctl			sys_prctl			sys_prctl
+173  common	rt_sigreturn		sys_rt_sigreturn		compat_sys_rt_sigreturn
+174  common	rt_sigaction		sys_rt_sigaction		compat_sys_rt_sigaction
+175  common	rt_sigprocmask		sys_rt_sigprocmask		compat_sys_rt_sigprocmask
+176  common	rt_sigpending		sys_rt_sigpending		compat_sys_rt_sigpending
+177  common	rt_sigtimedwait		sys_rt_sigtimedwait		compat_sys_rt_sigtimedwait_time32
+178  common	rt_sigqueueinfo		sys_rt_sigqueueinfo		compat_sys_rt_sigqueueinfo
+179  common	rt_sigsuspend		sys_rt_sigsuspend		compat_sys_rt_sigsuspend
+180  common	pread64			sys_pread64			compat_sys_s390_pread64
+181  common	pwrite64		sys_pwrite64			compat_sys_s390_pwrite64
+182  32		chown			-				sys_chown16
+183  common	getcwd			sys_getcwd			sys_getcwd
+184  common	capget			sys_capget			sys_capget
+185  common	capset			sys_capset			sys_capset
+186  common	sigaltstack		sys_sigaltstack			compat_sys_sigaltstack
+187  common	sendfile		sys_sendfile64			compat_sys_sendfile
+188  common	getpmsg			-				-
+189  common	putpmsg			-				-
+190  common	vfork			sys_vfork			sys_vfork
+191  32		ugetrlimit		-				compat_sys_getrlimit
+191  64		getrlimit		sys_getrlimit			-
+192  32		mmap2			-				compat_sys_s390_mmap2
+193  32		truncate64		-				compat_sys_s390_truncate64
+194  32		ftruncate64		-				compat_sys_s390_ftruncate64
+195  32		stat64			-				compat_sys_s390_stat64
+196  32		lstat64			-				compat_sys_s390_lstat64
+197  32		fstat64			-				compat_sys_s390_fstat64
+198  32		lchown32		-				sys_lchown
+198  64		lchown			sys_lchown			-
+199  32		getuid32		-				sys_getuid
+199  64		getuid			sys_getuid			-
+200  32		getgid32		-				sys_getgid
+200  64		getgid			sys_getgid			-
+201  32		geteuid32		-				sys_geteuid
+201  64		geteuid			sys_geteuid			-
+202  32		getegid32		-				sys_getegid
+202  64		getegid			sys_getegid			-
+203  32		setreuid32		-				sys_setreuid
+203  64		setreuid		sys_setreuid			-
+204  32		setregid32		-				sys_setregid
+204  64		setregid		sys_setregid			-
+205  32		getgroups32		-				sys_getgroups
+205  64		getgroups		sys_getgroups			-
+206  32		setgroups32		-				sys_setgroups
+206  64		setgroups		sys_setgroups			-
+207  32		fchown32		-				sys_fchown
+207  64		fchown			sys_fchown			-
+208  32		setresuid32		-				sys_setresuid
+208  64		setresuid		sys_setresuid			-
+209  32		getresuid32		-				sys_getresuid
+209  64		getresuid		sys_getresuid			-
+210  32		setresgid32		-				sys_setresgid
+210  64		setresgid		sys_setresgid			-
+211  32		getresgid32		-				sys_getresgid
+211  64		getresgid		sys_getresgid			-
+212  32		chown32			-				sys_chown
+212  64		chown			sys_chown			-
+213  32		setuid32		-				sys_setuid
+213  64		setuid			sys_setuid			-
+214  32		setgid32		-				sys_setgid
+214  64		setgid			sys_setgid			-
+215  32		setfsuid32		-				sys_setfsuid
+215  64		setfsuid		sys_setfsuid			-
+216  32		setfsgid32		-				sys_setfsgid
+216  64		setfsgid		sys_setfsgid			-
+217  common	pivot_root		sys_pivot_root			sys_pivot_root
+218  common	mincore			sys_mincore			sys_mincore
+219  common	madvise			sys_madvise			sys_madvise
+220  common	getdents64		sys_getdents64			sys_getdents64
+221  32		fcntl64			-				compat_sys_fcntl64
+222  common	readahead		sys_readahead			compat_sys_s390_readahead
+223  32		sendfile64		-				compat_sys_sendfile64
+224  common	setxattr		sys_setxattr			sys_setxattr
+225  common	lsetxattr		sys_lsetxattr			sys_lsetxattr
+226  common	fsetxattr		sys_fsetxattr			sys_fsetxattr
+227  common	getxattr		sys_getxattr			sys_getxattr
+228  common	lgetxattr		sys_lgetxattr			sys_lgetxattr
+229  common	fgetxattr		sys_fgetxattr			sys_fgetxattr
+230  common	listxattr		sys_listxattr			sys_listxattr
+231  common	llistxattr		sys_llistxattr			sys_llistxattr
+232  common	flistxattr		sys_flistxattr			sys_flistxattr
+233  common	removexattr		sys_removexattr			sys_removexattr
+234  common	lremovexattr		sys_lremovexattr		sys_lremovexattr
+235  common	fremovexattr		sys_fremovexattr		sys_fremovexattr
+236  common	gettid			sys_gettid			sys_gettid
+237  common	tkill			sys_tkill			sys_tkill
+238  common	futex			sys_futex			sys_futex_time32
+239  common	sched_setaffinity	sys_sched_setaffinity		compat_sys_sched_setaffinity
+240  common	sched_getaffinity	sys_sched_getaffinity		compat_sys_sched_getaffinity
+241  common	tgkill			sys_tgkill			sys_tgkill
+243  common	io_setup		sys_io_setup			compat_sys_io_setup
+244  common	io_destroy		sys_io_destroy			sys_io_destroy
+245  common	io_getevents		sys_io_getevents		sys_io_getevents_time32
+246  common	io_submit		sys_io_submit			compat_sys_io_submit
+247  common	io_cancel		sys_io_cancel			sys_io_cancel
+248  common	exit_group		sys_exit_group			sys_exit_group
+249  common	epoll_create		sys_epoll_create		sys_epoll_create
+250  common	epoll_ctl		sys_epoll_ctl			sys_epoll_ctl
+251  common	epoll_wait		sys_epoll_wait			sys_epoll_wait
+252  common	set_tid_address		sys_set_tid_address		sys_set_tid_address
+253  common	fadvise64		sys_fadvise64_64		compat_sys_s390_fadvise64
+254  common	timer_create		sys_timer_create		compat_sys_timer_create
+255  common	timer_settime		sys_timer_settime		sys_timer_settime32
+256  common	timer_gettime		sys_timer_gettime		sys_timer_gettime32
+257  common	timer_getoverrun	sys_timer_getoverrun		sys_timer_getoverrun
+258  common	timer_delete		sys_timer_delete		sys_timer_delete
+259  common	clock_settime		sys_clock_settime		sys_clock_settime32
+260  common	clock_gettime		sys_clock_gettime		sys_clock_gettime32
+261  common	clock_getres		sys_clock_getres		sys_clock_getres_time32
+262  common	clock_nanosleep		sys_clock_nanosleep		sys_clock_nanosleep_time32
+264  32		fadvise64_64		-				compat_sys_s390_fadvise64_64
+265  common	statfs64		sys_statfs64			compat_sys_statfs64
+266  common	fstatfs64		sys_fstatfs64			compat_sys_fstatfs64
+267  common	remap_file_pages	sys_remap_file_pages		sys_remap_file_pages
+268  common	mbind			sys_mbind			compat_sys_mbind
+269  common	get_mempolicy		sys_get_mempolicy		compat_sys_get_mempolicy
+270  common	set_mempolicy		sys_set_mempolicy		compat_sys_set_mempolicy
+271  common	mq_open			sys_mq_open			compat_sys_mq_open
+272  common	mq_unlink		sys_mq_unlink			sys_mq_unlink
+273  common	mq_timedsend		sys_mq_timedsend		sys_mq_timedsend_time32
+274  common	mq_timedreceive		sys_mq_timedreceive		sys_mq_timedreceive_time32
+275  common	mq_notify		sys_mq_notify			compat_sys_mq_notify
+276  common	mq_getsetattr		sys_mq_getsetattr		compat_sys_mq_getsetattr
+277  common	kexec_load		sys_kexec_load			compat_sys_kexec_load
+278  common	add_key			sys_add_key			sys_add_key
+279  common	request_key		sys_request_key			sys_request_key
+280  common	keyctl			sys_keyctl			compat_sys_keyctl
+281  common	waitid			sys_waitid			compat_sys_waitid
+282  common	ioprio_set		sys_ioprio_set			sys_ioprio_set
+283  common	ioprio_get		sys_ioprio_get			sys_ioprio_get
+284  common	inotify_init		sys_inotify_init		sys_inotify_init
+285  common	inotify_add_watch	sys_inotify_add_watch		sys_inotify_add_watch
+286  common	inotify_rm_watch	sys_inotify_rm_watch		sys_inotify_rm_watch
+287  common	migrate_pages		sys_migrate_pages		compat_sys_migrate_pages
+288  common	openat			sys_openat			compat_sys_openat
+289  common	mkdirat			sys_mkdirat			sys_mkdirat
+290  common	mknodat			sys_mknodat			sys_mknodat
+291  common	fchownat		sys_fchownat			sys_fchownat
+292  common	futimesat		sys_futimesat			sys_futimesat_time32
+293  32		fstatat64		-				compat_sys_s390_fstatat64
+293  64		newfstatat		sys_newfstatat			-
+294  common	unlinkat		sys_unlinkat			sys_unlinkat
+295  common	renameat		sys_renameat			sys_renameat
+296  common	linkat			sys_linkat			sys_linkat
+297  common	symlinkat		sys_symlinkat			sys_symlinkat
+298  common	readlinkat		sys_readlinkat			sys_readlinkat
+299  common	fchmodat		sys_fchmodat			sys_fchmodat
+300  common	faccessat		sys_faccessat			sys_faccessat
+301  common	pselect6		sys_pselect6			compat_sys_pselect6_time32
+302  common	ppoll			sys_ppoll			compat_sys_ppoll_time32
+303  common	unshare			sys_unshare			sys_unshare
+304  common	set_robust_list		sys_set_robust_list		compat_sys_set_robust_list
+305  common	get_robust_list		sys_get_robust_list		compat_sys_get_robust_list
+306  common	splice			sys_splice			sys_splice
+307  common	sync_file_range		sys_sync_file_range		compat_sys_s390_sync_file_range
+308  common	tee			sys_tee				sys_tee
+309  common	vmsplice		sys_vmsplice			compat_sys_vmsplice
+310  common	move_pages		sys_move_pages			compat_sys_move_pages
+311  common	getcpu			sys_getcpu			sys_getcpu
+312  common	epoll_pwait		sys_epoll_pwait			compat_sys_epoll_pwait
+313  common	utimes			sys_utimes			sys_utimes_time32
+314  common	fallocate		sys_fallocate			compat_sys_s390_fallocate
+315  common	utimensat		sys_utimensat			sys_utimensat_time32
+316  common	signalfd		sys_signalfd			compat_sys_signalfd
+317  common	timerfd			-				-
+318  common	eventfd			sys_eventfd			sys_eventfd
+319  common	timerfd_create		sys_timerfd_create		sys_timerfd_create
+320  common	timerfd_settime		sys_timerfd_settime		sys_timerfd_settime32
+321  common	timerfd_gettime		sys_timerfd_gettime		sys_timerfd_gettime32
+322  common	signalfd4		sys_signalfd4			compat_sys_signalfd4
+323  common	eventfd2		sys_eventfd2			sys_eventfd2
+324  common	inotify_init1		sys_inotify_init1		sys_inotify_init1
+325  common	pipe2			sys_pipe2			sys_pipe2
+326  common	dup3			sys_dup3			sys_dup3
+327  common	epoll_create1		sys_epoll_create1		sys_epoll_create1
+328  common	preadv			sys_preadv			compat_sys_preadv
+329  common	pwritev			sys_pwritev			compat_sys_pwritev
+330  common	rt_tgsigqueueinfo	sys_rt_tgsigqueueinfo		compat_sys_rt_tgsigqueueinfo
+331  common	perf_event_open		sys_perf_event_open		sys_perf_event_open
+332  common	fanotify_init		sys_fanotify_init		sys_fanotify_init
+333  common	fanotify_mark		sys_fanotify_mark		compat_sys_fanotify_mark
+334  common	prlimit64		sys_prlimit64			sys_prlimit64
+335  common	name_to_handle_at	sys_name_to_handle_at		sys_name_to_handle_at
+336  common	open_by_handle_at	sys_open_by_handle_at		compat_sys_open_by_handle_at
+337  common	clock_adjtime		sys_clock_adjtime		sys_clock_adjtime32
+338  common	syncfs			sys_syncfs			sys_syncfs
+339  common	setns			sys_setns			sys_setns
+340  common	process_vm_readv	sys_process_vm_readv		compat_sys_process_vm_readv
+341  common	process_vm_writev	sys_process_vm_writev		compat_sys_process_vm_writev
+342  common	s390_runtime_instr	sys_s390_runtime_instr		sys_s390_runtime_instr
+343  common	kcmp			sys_kcmp			sys_kcmp
+344  common	finit_module		sys_finit_module		sys_finit_module
+345  common	sched_setattr		sys_sched_setattr		sys_sched_setattr
+346  common	sched_getattr		sys_sched_getattr		sys_sched_getattr
+347  common	renameat2		sys_renameat2			sys_renameat2
+348  common	seccomp			sys_seccomp			sys_seccomp
+349  common	getrandom		sys_getrandom			sys_getrandom
+350  common	memfd_create		sys_memfd_create		sys_memfd_create
+351  common	bpf			sys_bpf				sys_bpf
+352  common	s390_pci_mmio_write	sys_s390_pci_mmio_write		sys_s390_pci_mmio_write
+353  common	s390_pci_mmio_read	sys_s390_pci_mmio_read		sys_s390_pci_mmio_read
+354  common	execveat		sys_execveat			compat_sys_execveat
+355  common	userfaultfd		sys_userfaultfd			sys_userfaultfd
+356  common	membarrier		sys_membarrier			sys_membarrier
+357  common	recvmmsg		sys_recvmmsg			compat_sys_recvmmsg_time32
+358  common	sendmmsg		sys_sendmmsg			compat_sys_sendmmsg
+359  common	socket			sys_socket			sys_socket
+360  common	socketpair		sys_socketpair			sys_socketpair
+361  common	bind			sys_bind			sys_bind
+362  common	connect			sys_connect			sys_connect
+363  common	listen			sys_listen			sys_listen
+364  common	accept4			sys_accept4			sys_accept4
+365  common	getsockopt		sys_getsockopt			compat_sys_getsockopt
+366  common	setsockopt		sys_setsockopt			compat_sys_setsockopt
+367  common	getsockname		sys_getsockname			sys_getsockname
+368  common	getpeername		sys_getpeername			sys_getpeername
+369  common	sendto			sys_sendto			sys_sendto
+370  common	sendmsg			sys_sendmsg			compat_sys_sendmsg
+371  common	recvfrom		sys_recvfrom			compat_sys_recvfrom
+372  common	recvmsg			sys_recvmsg			compat_sys_recvmsg
+373  common	shutdown		sys_shutdown			sys_shutdown
+374  common	mlock2			sys_mlock2			sys_mlock2
+375  common	copy_file_range		sys_copy_file_range		sys_copy_file_range
+376  common	preadv2			sys_preadv2			compat_sys_preadv2
+377  common	pwritev2		sys_pwritev2			compat_sys_pwritev2
+378  common	s390_guarded_storage	sys_s390_guarded_storage	sys_s390_guarded_storage
+379  common	statx			sys_statx			sys_statx
+380  common	s390_sthyi		sys_s390_sthyi			sys_s390_sthyi
+381  common	kexec_file_load		sys_kexec_file_load		sys_kexec_file_load
+382  common	io_pgetevents		sys_io_pgetevents		compat_sys_io_pgetevents
+383  common	rseq			sys_rseq			sys_rseq
+384  common	pkey_mprotect		sys_pkey_mprotect		sys_pkey_mprotect
+385  common	pkey_alloc		sys_pkey_alloc			sys_pkey_alloc
+386  common	pkey_free		sys_pkey_free			sys_pkey_free
+# room for arch specific syscalls
+392	64	semtimedop		sys_semtimedop			-
+393  common	semget			sys_semget			sys_semget
+394  common	semctl			sys_semctl			compat_sys_semctl
+395  common	shmget			sys_shmget			sys_shmget
+396  common	shmctl			sys_shmctl			compat_sys_shmctl
+397  common	shmat			sys_shmat			compat_sys_shmat
+398  common	shmdt			sys_shmdt 			sys_shmdt
+399  common	msgget			sys_msgget			sys_msgget
+400  common	msgsnd			sys_msgsnd			compat_sys_msgsnd
+401  common	msgrcv			sys_msgrcv			compat_sys_msgrcv
+402  common	msgctl			sys_msgctl			compat_sys_msgctl
+403	32	clock_gettime64		-				sys_clock_gettime
+404	32	clock_settime64		-				sys_clock_settime
+405	32	clock_adjtime64		-				sys_clock_adjtime
+406	32	clock_getres_time64	-				sys_clock_getres
+407	32	clock_nanosleep_time64	-				sys_clock_nanosleep
+408	32	timer_gettime64		-				sys_timer_gettime
+409	32	timer_settime64		-				sys_timer_settime
+410	32	timerfd_gettime64	-				sys_timerfd_gettime
+411	32	timerfd_settime64	-				sys_timerfd_settime
+412	32	utimensat_time64	-				sys_utimensat
+413	32	pselect6_time64		-				compat_sys_pselect6_time64
+414	32	ppoll_time64		-				compat_sys_ppoll_time64
+416	32	io_pgetevents_time64	-				sys_io_pgetevents
+417	32	recvmmsg_time64		-				compat_sys_recvmmsg_time64
+418	32	mq_timedsend_time64	-				sys_mq_timedsend
+419	32	mq_timedreceive_time64	-				sys_mq_timedreceive
+420	32	semtimedop_time64	-				sys_semtimedop
+421	32	rt_sigtimedwait_time64	-				compat_sys_rt_sigtimedwait_time64
+422	32	futex_time64		-				sys_futex
+423	32	sched_rr_get_interval_time64	-			sys_sched_rr_get_interval
+424  common	pidfd_send_signal	sys_pidfd_send_signal		sys_pidfd_send_signal
+425  common	io_uring_setup		sys_io_uring_setup              sys_io_uring_setup
+426  common	io_uring_enter		sys_io_uring_enter              sys_io_uring_enter
+427  common	io_uring_register	sys_io_uring_register           sys_io_uring_register
+428  common	open_tree		sys_open_tree			sys_open_tree
+429  common	move_mount		sys_move_mount			sys_move_mount
+430  common	fsopen			sys_fsopen			sys_fsopen
+431  common	fsconfig		sys_fsconfig			sys_fsconfig
+432  common	fsmount			sys_fsmount			sys_fsmount
+433  common	fspick			sys_fspick			sys_fspick
+434  common	pidfd_open		sys_pidfd_open			sys_pidfd_open
+435  common	clone3			sys_clone3			sys_clone3
diff --git a/linux-user/s390x/syscall_nr.h b/linux-user/s390x/syscall_nr.h
deleted file mode 100644
index 261da1b0c30e..000000000000
--- a/linux-user/s390x/syscall_nr.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_S390X_SYSCALL_NR_H
-#define LINUX_USER_S390X_SYSCALL_NR_H
-
-#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_restart_syscall         7
-#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_mknod               14
-#define TARGET_NR_chmod               15
-#define TARGET_NR_lseek               19
-#define TARGET_NR_getpid              20
-#define TARGET_NR_mount               21
-#define TARGET_NR_umount              22
-#define TARGET_NR_ptrace              26
-#define TARGET_NR_alarm               27
-#define TARGET_NR_pause               29
-#define TARGET_NR_utime               30
-#define TARGET_NR_access              33
-#define TARGET_NR_nice                34
-#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_brk                 45
-#define TARGET_NR_signal              48
-#define TARGET_NR_acct                51
-#define TARGET_NR_umount2             52
-#define TARGET_NR_ioctl               54
-#define TARGET_NR_fcntl               55
-#define TARGET_NR_setpgid             57
-#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_sigsuspend          72
-#define TARGET_NR_sigpending          73
-#define TARGET_NR_sethostname         74
-#define TARGET_NR_setrlimit           75
-#define TARGET_NR_getrusage           77
-#define TARGET_NR_gettimeofday        78
-#define TARGET_NR_settimeofday        79
-#define TARGET_NR_symlink             83
-#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_getpriority         96
-#define TARGET_NR_setpriority         97
-#define TARGET_NR_statfs              99
-#define TARGET_NR_fstatfs            100
-#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
-#define TARGET_NR_lookup_dcookie     110
-#define TARGET_NR_vhangup            111
-#define TARGET_NR_idle               112
-#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_adjtimex           124
-#define TARGET_NR_mprotect           125
-#define TARGET_NR_sigprocmask        126
-#define TARGET_NR_create_module      127
-#define TARGET_NR_init_module        128
-#define TARGET_NR_delete_module      129
-#define TARGET_NR_get_kernel_syms    130
-#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_getdents           141
-#define TARGET_NR_select                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_query_module       167
-#define TARGET_NR_poll               168
-#define TARGET_NR_nfsservctl         169
-#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_getcwd             183
-#define TARGET_NR_capget             184
-#define TARGET_NR_capset             185
-#define TARGET_NR_sigaltstack        186
-#define TARGET_NR_sendfile           187
-#define TARGET_NR_getpmsg               188
-#define TARGET_NR_putpmsg               189
-#define TARGET_NR_vfork         190
-#define TARGET_NR_getrlimit             191     /* SuS compliant getrlimit */
-#define TARGET_NR_lchown                198
-#define TARGET_NR_getuid                199
-#define TARGET_NR_getgid                200
-#define TARGET_NR_geteuid               201
-#define TARGET_NR_getegid               202
-#define TARGET_NR_setreuid              203
-#define TARGET_NR_setregid              204
-#define TARGET_NR_getgroups     205
-#define TARGET_NR_setgroups     206
-#define TARGET_NR_fchown                207
-#define TARGET_NR_setresuid     208
-#define TARGET_NR_getresuid     209
-#define TARGET_NR_setresgid     210
-#define TARGET_NR_getresgid     211
-#define TARGET_NR_chown                 212
-#define TARGET_NR_setuid                213
-#define TARGET_NR_setgid                214
-#define TARGET_NR_setfsuid              215
-#define TARGET_NR_setfsgid              216
-#define TARGET_NR_pivot_root         217
-#define TARGET_NR_mincore            218
-#define TARGET_NR_madvise            219
-#define TARGET_NR_getdents64            220
-#define TARGET_NR_readahead             222
-#define TARGET_NR_setxattr              224
-#define TARGET_NR_lsetxattr             225
-#define TARGET_NR_fsetxattr             226
-#define TARGET_NR_getxattr              227
-#define TARGET_NR_lgetxattr             228
-#define TARGET_NR_fgetxattr             229
-#define TARGET_NR_listxattr             230
-#define TARGET_NR_llistxattr            231
-#define TARGET_NR_flistxattr            232
-#define TARGET_NR_removexattr   233
-#define TARGET_NR_lremovexattr  234
-#define TARGET_NR_fremovexattr  235
-#define TARGET_NR_gettid                236
-#define TARGET_NR_tkill         237
-#define TARGET_NR_futex         238
-#define TARGET_NR_sched_setaffinity     239
-#define TARGET_NR_sched_getaffinity     240
-#define TARGET_NR_tgkill                241
-/* Number 242 is reserved for tux */
-#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_epoll_create  249
-#define TARGET_NR_epoll_ctl             250
-#define TARGET_NR_epoll_wait            251
-#define TARGET_NR_set_tid_address       252
-#define TARGET_NR_fadvise64             253
-#define TARGET_NR_timer_create  254
-#define TARGET_NR_timer_settime (TARGET_NR_timer_create + 1)
-#define TARGET_NR_timer_gettime (TARGET_NR_timer_create + 2)
-#define TARGET_NR_timer_getoverrun      (TARGET_NR_timer_create + 3)
-#define TARGET_NR_timer_delete  (TARGET_NR_timer_create + 4)
-#define TARGET_NR_clock_settime (TARGET_NR_timer_create + 5)
-#define TARGET_NR_clock_gettime (TARGET_NR_timer_create + 6)
-#define TARGET_NR_clock_getres  (TARGET_NR_timer_create + 7)
-#define TARGET_NR_clock_nanosleep       (TARGET_NR_timer_create + 8)
-/* Number 263 is reserved for vserver */
-#define TARGET_NR_statfs64              265
-#define TARGET_NR_fstatfs64             266
-#define TARGET_NR_remap_file_pages      267
-/* Number 268 is reserved for new sys_mbind */
-/* Number 269 is reserved for new sys_get_mempolicy */
-/* Number 270 is reserved for new sys_set_mempolicy */
-#define TARGET_NR_mq_open               271
-#define TARGET_NR_mq_unlink             272
-#define TARGET_NR_mq_timedsend  273
-#define TARGET_NR_mq_timedreceive       274
-#define TARGET_NR_mq_notify             275
-#define TARGET_NR_mq_getsetattr 276
-#define TARGET_NR_kexec_load            277
-#define TARGET_NR_add_key               278
-#define TARGET_NR_request_key   279
-#define TARGET_NR_keyctl                280
-#define TARGET_NR_waitid                281
-#define TARGET_NR_ioprio_set            282
-#define TARGET_NR_ioprio_get            283
-#define TARGET_NR_inotify_init  284
-#define TARGET_NR_inotify_add_watch     285
-#define TARGET_NR_inotify_rm_watch      286
-/* Number 287 is reserved for new sys_migrate_pages */
-#define TARGET_NR_openat                288
-#define TARGET_NR_mkdirat               289
-#define TARGET_NR_mknodat               290
-#define TARGET_NR_fchownat              291
-#define TARGET_NR_futimesat             292
-#define TARGET_NR_newfstatat            293
-#define TARGET_NR_unlinkat              294
-#define TARGET_NR_renameat              295
-#define TARGET_NR_linkat                296
-#define TARGET_NR_symlinkat             297
-#define TARGET_NR_readlinkat            298
-#define TARGET_NR_fchmodat              299
-#define TARGET_NR_faccessat             300
-#define TARGET_NR_pselect6              301
-#define TARGET_NR_ppoll         302
-#define TARGET_NR_unshare               303
-#define TARGET_NR_set_robust_list       304
-#define TARGET_NR_get_robust_list       305
-#define TARGET_NR_splice                306
-#define TARGET_NR_sync_file_range       307
-#define TARGET_NR_tee           308
-#define TARGET_NR_vmsplice              309
-/* Number 310 is reserved for new sys_move_pages */
-#define TARGET_NR_getcpu                311
-#define TARGET_NR_epoll_pwait   312
-#define TARGET_NR_utimes                313
-#define TARGET_NR_fallocate             314
-#define TARGET_NR_utimensat             315
-#define TARGET_NR_signalfd              316
-#define TARGET_NR_timerfd               317
-#define TARGET_NR_eventfd               318
-#define TARGET_NR_timerfd_create        319
-#define TARGET_NR_timerfd_settime       320
-#define TARGET_NR_timerfd_gettime       321
-#define TARGET_NR_signalfd4             322
-#define TARGET_NR_eventfd2              323
-#define TARGET_NR_inotify_init1 324
-#define TARGET_NR_pipe2         325
-#define TARGET_NR_dup3          326
-#define TARGET_NR_epoll_create1 327
-#define TARGET_NR_preadv                328
-#define TARGET_NR_pwritev               329
-#define TARGET_NR_rt_tgsigqueueinfo     330
-#define TARGET_NR_perf_event_open       331
-#define TARGET_NR_fanotify_init         332
-#define TARGET_NR_fanotify_mark         333
-#define TARGET_NR_prlimit64             334
-#define TARGET_NR_name_to_handle_at     335
-#define TARGET_NR_open_by_handle_at     336
-#define TARGET_NR_clock_adjtime         337
-#define TARGET_NR_syncfs                338
-#define TARGET_NR_setns                 339
-#define TARGET_NR_process_vm_readv      340
-#define TARGET_NR_process_vm_writev     341
-#define TARGET_NR_s390_runtime_instr    342
-#define TARGET_NR_kcmp                  343
-#define TARGET_NR_finit_module          344
-#define TARGET_NR_sched_setattr         345
-#define TARGET_NR_sched_getattr         346
-#define TARGET_NR_renameat2             347
-#define TARGET_NR_seccomp               348
-#define TARGET_NR_getrandom             349
-#define TARGET_NR_memfd_create          350
-#define TARGET_NR_bpf                   351
-#define TARGET_NR_s390_pci_mmio_write   352
-#define TARGET_NR_s390_pci_mmio_read    353
-#define TARGET_NR_execveat              354
-#define TARGET_NR_userfaultfd           355
-#define TARGET_NR_membarrier            356
-#define TARGET_NR_recvmmsg              357
-#define TARGET_NR_sendmmsg              358
-#define TARGET_NR_socket                359
-#define TARGET_NR_socketpair            360
-#define TARGET_NR_bind                  361
-#define TARGET_NR_connect               362
-#define TARGET_NR_listen                363
-#define TARGET_NR_accept4               364
-#define TARGET_NR_getsockopt            365
-#define TARGET_NR_setsockopt            366
-#define TARGET_NR_getsockname           367
-#define TARGET_NR_getpeername           368
-#define TARGET_NR_sendto                369
-#define TARGET_NR_sendmsg               370
-#define TARGET_NR_recvfrom              371
-#define TARGET_NR_recvmsg               372
-#define TARGET_NR_shutdown              373
-#define TARGET_NR_mlock2                374
-
-
-#endif
diff --git a/linux-user/s390x/syscallhdr.sh b/linux-user/s390x/syscallhdr.sh
new file mode 100755
index 000000000000..85a99c48deea
--- /dev/null
+++ b/linux-user/s390x/syscallhdr.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_S390X_`basename "$out" | sed \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+    -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
+grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
+    printf "#ifndef %s\n" "${fileguard}"
+    printf "#define %s\n" "${fileguard}"
+    printf "\n"
+
+    nxt=0
+    while read nr abi name entry ; do
+        if [ -z "$offset" ]; then
+            printf "#define TARGET_NR_%s%s\t%s\n" \
+                "${prefix}" "${name}" "${nr}"
+        else
+            printf "#define TARGET_NR_%s%s\t(%s + %s)\n" \
+                "${prefix}" "${name}" "${offset}" "${nr}"
+        fi
+        nxt=$((nr+1))
+    done
+
+    printf "\n"
+    printf "#endif /* %s */\n" "${fileguard}"
+) > "$out"
