]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
Merge remote-tracking branch 'remotes/elmarco/tags/slirp-pull-request' into staging
authorPeter Maydell <peter.maydell@linaro.org>
Sun, 22 Mar 2020 21:00:38 +0000 (21:00 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Sun, 22 Mar 2020 21:00:38 +0000 (21:00 +0000)
# gpg: Signature made Sun 22 Mar 2020 17:07:31 GMT
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "marcandre.lureau@redhat.com"
# gpg: Good signature from "Marc-AndrĂ© Lureau <marcandre.lureau@redhat.com>" [full]
# gpg:                 aka "Marc-AndrĂ© Lureau <marcandre.lureau@gmail.com>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* remotes/elmarco/tags/slirp-pull-request:
  slirp: update submodule to v4.2.0+

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
204 files changed:
.travis.yml
MAINTAINERS
Makefile.target
arch_init.c
block/dirty-bitmap.c
block/qcow2-bitmap.c
configure
default-configs/rx-softmmu.mak [new file with mode: 0644]
device_tree.c
docs/conf.py
gdb-xml/rx-core.xml [new file with mode: 0644]
hw/alpha/dp264.c
hw/core/cpu.c
hw/core/machine.c
hw/hppa/hppa_sys.h
hw/hppa/machine.c
hw/i386/pc.c
hw/i386/pc_piix.c
hw/i386/x86.c
hw/ide/ahci_internal.h
hw/ide/cmd646.c
hw/ide/pci.c
hw/ide/piix.c
hw/ide/via.c
hw/isa/piix4.c
hw/mips/mips_fulong2e.c
hw/mips/mips_malta.c
hw/mips/mips_r4k.c
hw/pci/pci.c
hw/ppc/mac_newworld.c
hw/ppc/mac_oldworld.c
hw/ppc/prep.c
hw/rdma/rdma_backend.c
hw/rdma/rdma_backend.h
hw/rdma/rdma_rm.c
hw/rdma/vmw/pvrdma_dev_ring.c
hw/sparc64/sun4u.c
include/block/dirty-bitmap.h
include/disas/dis-asm.h
include/exec/poison.h
include/hw/boards.h
include/hw/core/cpu.h
include/hw/i386/topology.h
include/hw/i386/x86.h
include/hw/ide.h
include/hw/ide/internal.h
include/hw/ide/pci.h
include/hw/misc/macio/macio.h
include/hw/registerfields.h
include/hw/southbridge/piix.h
include/qemu-common.h
include/qemu/hbitmap.h
include/sysemu/arch_init.h
linux-user/Makefile.objs
linux-user/aarch64/syscall_nr.h
linux-user/alpha/Makefile.objs [new file with mode: 0644]
linux-user/alpha/syscall.tbl [new file with mode: 0644]
linux-user/alpha/syscall_nr.h [deleted file]
linux-user/alpha/syscallhdr.sh [new file with mode: 0644]
linux-user/arm/Makefile.objs [new file with mode: 0644]
linux-user/arm/syscall.tbl [new file with mode: 0644]
linux-user/arm/syscall_nr.h [deleted file]
linux-user/arm/syscallhdr.sh [new file with mode: 0644]
linux-user/elfload.c
linux-user/hppa/Makefile.objs [new file with mode: 0644]
linux-user/hppa/syscall.tbl [new file with mode: 0644]
linux-user/hppa/syscall_nr.h [deleted file]
linux-user/hppa/syscallhdr.sh [new file with mode: 0644]
linux-user/i386/Makefile.objs [new file with mode: 0644]
linux-user/i386/syscall_32.tbl [new file with mode: 0644]
linux-user/i386/syscall_nr.h [deleted file]
linux-user/i386/syscallhdr.sh [new file with mode: 0644]
linux-user/i386/target_cpu.h
linux-user/m68k/Makefile.objs [new file with mode: 0644]
linux-user/m68k/syscall.tbl [new file with mode: 0644]
linux-user/m68k/syscall_nr.h [deleted file]
linux-user/m68k/syscallhdr.sh [new file with mode: 0644]
linux-user/microblaze/Makefile.objs [new file with mode: 0644]
linux-user/microblaze/syscall.tbl [new file with mode: 0644]
linux-user/microblaze/syscall_nr.h [deleted file]
linux-user/microblaze/syscallhdr.sh [new file with mode: 0644]
linux-user/mips/Makefile.objs [new file with mode: 0644]
linux-user/mips/cpu_loop.c
linux-user/mips/syscall-args-o32.c.inc [new file with mode: 0644]
linux-user/mips/syscall_nr.h [deleted file]
linux-user/mips/syscall_o32.tbl [new file with mode: 0644]
linux-user/mips/syscallhdr.sh [new file with mode: 0644]
linux-user/mips64/Makefile.objs [new file with mode: 0644]
linux-user/mips64/syscall_n32.tbl [new file with mode: 0644]
linux-user/mips64/syscall_n64.tbl [new file with mode: 0644]
linux-user/mips64/syscall_nr.h [deleted file]
linux-user/mips64/syscallhdr.sh [new file with mode: 0644]
linux-user/mmap.c
linux-user/nios2/syscall_nr.h
linux-user/openrisc/syscall_nr.h
linux-user/ppc/Makefile.objs [new file with mode: 0644]
linux-user/ppc/signal.c
linux-user/ppc/syscall.tbl [new file with mode: 0644]
linux-user/ppc/syscall_nr.h [deleted file]
linux-user/ppc/syscallhdr.sh [new file with mode: 0644]
linux-user/riscv/syscall32_nr.h [new file with mode: 0644]
linux-user/riscv/syscall64_nr.h [new file with mode: 0644]
linux-user/riscv/syscall_nr.h
linux-user/s390x/Makefile.objs [new file with mode: 0644]
linux-user/s390x/syscall.tbl [new file with mode: 0644]
linux-user/s390x/syscall_nr.h [deleted file]
linux-user/s390x/syscallhdr.sh [new file with mode: 0755]
linux-user/sh4/Makefile.objs [new file with mode: 0644]
linux-user/sh4/syscall.tbl [new file with mode: 0644]
linux-user/sh4/syscall_nr.h [deleted file]
linux-user/sh4/syscallhdr.sh [new file with mode: 0644]
linux-user/sparc/Makefile.objs [new file with mode: 0644]
linux-user/sparc/syscall.tbl [new file with mode: 0644]
linux-user/sparc/syscall_nr.h [deleted file]
linux-user/sparc/syscallhdr.sh [new file with mode: 0644]
linux-user/sparc64/Makefile.objs [new file with mode: 0644]
linux-user/sparc64/syscall.tbl [new file with mode: 0644]
linux-user/sparc64/syscall_nr.h [deleted file]
linux-user/sparc64/syscallhdr.sh [new file with mode: 0644]
linux-user/strace.c
linux-user/syscall.c
linux-user/x86_64/Makefile.objs [new file with mode: 0644]
linux-user/x86_64/syscall_64.tbl [new file with mode: 0644]
linux-user/x86_64/syscall_nr.h [deleted file]
linux-user/x86_64/syscallhdr.sh [new file with mode: 0644]
linux-user/xtensa/Makefile.objs [new file with mode: 0644]
linux-user/xtensa/syscall.tbl [new file with mode: 0644]
linux-user/xtensa/syscall_nr.h [deleted file]
linux-user/xtensa/syscallhdr.sh [new file with mode: 0644]
nbd/server.c
python/qemu/machine.py
python/qemu/qmp.py
qapi/machine.json
scripts/coccinelle/cpu-reset.cocci [new file with mode: 0644]
scripts/gensyscalls.sh [new file with mode: 0755]
scripts/simplebench/bench-example.py [new file with mode: 0644]
scripts/simplebench/bench_block_job.py [new file with mode: 0755]
scripts/simplebench/simplebench.py [new file with mode: 0644]
scripts/update-mips-syscall-args.sh [new file with mode: 0755]
scripts/update-syscalltbl.sh [new file with mode: 0755]
softmmu/vl.c
target/alpha/cpu-qom.h
target/arm/cpu-qom.h
target/arm/cpu.c
target/cris/cpu-qom.h
target/cris/cpu.c
target/hppa/cpu-qom.h
target/i386/cpu-qom.h
target/i386/cpu.c
target/i386/cpu.h
target/lm32/cpu-qom.h
target/lm32/cpu.c
target/m68k/cpu-qom.h
target/m68k/cpu.c
target/microblaze/cpu-qom.h
target/microblaze/cpu.c
target/mips/cpu-qom.h
target/mips/cpu.c
target/moxie/cpu.c
target/moxie/cpu.h
target/nios2/cpu.c
target/nios2/cpu.h
target/openrisc/cpu.c
target/openrisc/cpu.h
target/ppc/cpu-qom.h
target/ppc/translate_init.inc.c
target/riscv/cpu.c
target/riscv/cpu.h
target/rx/Makefile.objs [new file with mode: 0644]
target/rx/cpu-param.h [new file with mode: 0644]
target/rx/cpu-qom.h [new file with mode: 0644]
target/rx/cpu.c [new file with mode: 0644]
target/rx/cpu.h [new file with mode: 0644]
target/rx/disas.c [new file with mode: 0644]
target/rx/gdbstub.c [new file with mode: 0644]
target/rx/helper.c [new file with mode: 0644]
target/rx/helper.h [new file with mode: 0644]
target/rx/insns.decode [new file with mode: 0644]
target/rx/op_helper.c [new file with mode: 0644]
target/rx/translate.c [new file with mode: 0644]
target/s390x/cpu-qom.h
target/s390x/cpu.c
target/sh4/cpu-qom.h
target/sh4/cpu.c
target/sparc/cpu-qom.h
target/sparc/cpu.c
target/tilegx/cpu.c
target/tilegx/cpu.h
target/tricore/cpu-qom.h
target/tricore/cpu.c
target/xtensa/cpu-qom.h
target/xtensa/cpu.c
tests/Makefile.include
tests/acceptance/avocado_qemu/__init__.py
tests/acceptance/boot_linux.py [new file with mode: 0644]
tests/docker/dockerfiles/centos8.docker [new file with mode: 0644]
tests/docker/dockerfiles/debian-win32-cross.docker
tests/qemu-iotests/iotests.py
tests/qtest/hd-geo-test.c
tests/qtest/machine-none-test.c
tests/requirements.txt
tests/test-hbitmap.c
tests/test-x86-cpuid.c
util/hbitmap.c

index ccf68aa9abcd3d7ec3356aaaf38a2a5c90ea4b96..5672d129ec684fa6ecd00b63cf2f8c1e98394d44 100644 (file)
@@ -316,7 +316,7 @@ jobs:
     - name: "GCC check-acceptance"
       dist: bionic
       env:
-        - CONFIG="--target-list=aarch64-softmmu,alpha-softmmu,arm-softmmu,m68k-softmmu,microblaze-softmmu,mips-softmmu,mips64el-softmmu,nios2-softmmu,or1k-softmmu,ppc-softmmu,ppc64-softmmu,s390x-softmmu,sparc-softmmu,x86_64-softmmu,xtensa-softmmu"
+        - CONFIG="--enable-tools --target-list=aarch64-softmmu,alpha-softmmu,arm-softmmu,m68k-softmmu,microblaze-softmmu,mips-softmmu,mips64el-softmmu,nios2-softmmu,or1k-softmmu,ppc-softmmu,ppc64-softmmu,s390x-softmmu,sparc-softmmu,x86_64-softmmu,xtensa-softmmu"
         - TEST_CMD="make check-acceptance"
       after_script:
         - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat
index 7364af0d8b07c86e445cca30f28e9efebff78403..2b46f3c6a8315d9675e76cdcc6f3f0647d4981b3 100644 (file)
@@ -277,6 +277,11 @@ F: include/hw/riscv/
 F: linux-user/host/riscv32/
 F: linux-user/host/riscv64/
 
+RENESAS RX CPUs
+M: Yoshinori Sato <ysato@users.sourceforge.jp>
+S: Maintained
+F: target/rx/
+
 S390 TCG CPUs
 M: Richard Henderson <rth@twiddle.net>
 M: David Hildenbrand <david@redhat.com>
@@ -2142,6 +2147,11 @@ F: python/qemu/*py
 F: scripts/*.py
 F: tests/*.py
 
+Benchmark util
+M: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
+S: Maintained
+F: scripts/simplebench/
+
 QAPI
 M: Markus Armbruster <armbru@redhat.com>
 M: Michael Roth <mdroth@linux.vnet.ibm.com>
@@ -2485,6 +2495,9 @@ S: Maintained
 F: linux-user/
 F: default-configs/*-linux-user.mak
 F: scripts/qemu-binfmt-conf.sh
+F: scripts/update-syscalltbl.sh
+F: scripts/update-mips-syscall-args.sh
+F: scripts/gensyscalls.sh
 
 Tiny Code Generator (TCG)
 -------------------------
index 934a9f7431dc6fb6ef83a9d5587907b24eb33cca..8ed1eba95b9c29ab4e47349cbdb2dbdf174d9106 100644 (file)
@@ -128,7 +128,8 @@ ifdef CONFIG_LINUX_USER
 
 QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
              -I$(SRC_PATH)/linux-user/host/$(ARCH) \
-             -I$(SRC_PATH)/linux-user
+             -I$(SRC_PATH)/linux-user \
+             -Ilinux-user/$(TARGET_ABI_DIR)
 
 obj-y += linux-user/
 obj-y += gdbstub.o thunk.o
index 705d0b94ad012ccd7f6ff0f097bc97a3168af7ed..d9eb0ec1dd0382e03beac6bfaea6b2b69186a0fb 100644 (file)
@@ -77,6 +77,8 @@ int graphic_depth = 32;
 #define QEMU_ARCH QEMU_ARCH_PPC
 #elif defined(TARGET_RISCV)
 #define QEMU_ARCH QEMU_ARCH_RISCV
+#elif defined(TARGET_RX)
+#define QEMU_ARCH QEMU_ARCH_RX
 #elif defined(TARGET_S390X)
 #define QEMU_ARCH QEMU_ARCH_S390X
 #elif defined(TARGET_SH4)
index 7039e8252009bc85a5de111cfb75c3cb92278a3c..063793e3160675ca4ba1bf5b9344646654f4e9c8 100644 (file)
@@ -860,16 +860,24 @@ char *bdrv_dirty_bitmap_sha256(const BdrvDirtyBitmap *bitmap, Error **errp)
     return hbitmap_sha256(bitmap->bitmap, errp);
 }
 
-int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, uint64_t offset,
-                                    uint64_t bytes)
+int64_t bdrv_dirty_bitmap_next_dirty(BdrvDirtyBitmap *bitmap, int64_t offset,
+                                     int64_t bytes)
+{
+    return hbitmap_next_dirty(bitmap->bitmap, offset, bytes);
+}
+
+int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, int64_t offset,
+                                    int64_t bytes)
 {
     return hbitmap_next_zero(bitmap->bitmap, offset, bytes);
 }
 
 bool bdrv_dirty_bitmap_next_dirty_area(BdrvDirtyBitmap *bitmap,
-                                       uint64_t *offset, uint64_t *bytes)
+        int64_t start, int64_t end, int64_t max_dirty_count,
+        int64_t *dirty_start, int64_t *dirty_count)
 {
-    return hbitmap_next_dirty_area(bitmap->bitmap, offset, bytes);
+    return hbitmap_next_dirty_area(bitmap->bitmap, start, end, max_dirty_count,
+                                   dirty_start, dirty_count);
 }
 
 /**
index 8cccc2c9f3633791010740775d9965b777e4db73..cb06954b4a5ab1881c5d5d6f4ec4e3636bb77913 100644 (file)
@@ -1288,7 +1288,6 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs,
     uint64_t bm_size = bdrv_dirty_bitmap_size(bitmap);
     const char *bm_name = bdrv_dirty_bitmap_name(bitmap);
     uint8_t *buf = NULL;
-    BdrvDirtyBitmapIter *dbi;
     uint64_t *tb;
     uint64_t tb_size =
             size_to_clusters(s,
@@ -1307,12 +1306,14 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs,
         return NULL;
     }
 
-    dbi = bdrv_dirty_iter_new(bitmap);
     buf = g_malloc(s->cluster_size);
     limit = bytes_covered_by_bitmap_cluster(s, bitmap);
     assert(DIV_ROUND_UP(bm_size, limit) == tb_size);
 
-    while ((offset = bdrv_dirty_iter_next(dbi)) >= 0) {
+    offset = 0;
+    while ((offset = bdrv_dirty_bitmap_next_dirty(bitmap, offset, INT64_MAX))
+           >= 0)
+    {
         uint64_t cluster = offset / limit;
         uint64_t end, write_size;
         int64_t off;
@@ -1355,23 +1356,17 @@ static uint64_t *store_bitmap_data(BlockDriverState *bs,
             goto fail;
         }
 
-        if (end >= bm_size) {
-            break;
-        }
-
-        bdrv_set_dirty_iter(dbi, end);
+        offset = end;
     }
 
     *bitmap_table_size = tb_size;
     g_free(buf);
-    bdrv_dirty_iter_free(dbi);
 
     return tb;
 
 fail:
     clear_bitmap_table(bs, tb, tb_size);
     g_free(buf);
-    bdrv_dirty_iter_free(dbi);
     g_free(tb);
 
     return NULL;
index 206d22c5153984d78fcf753ed642af72cd82bef0..4f12cd01777ef871bac822825dc356afe2993747 100755 (executable)
--- a/configure
+++ b/configure
@@ -1903,6 +1903,18 @@ fi
 # Remove old dependency files to make sure that they get properly regenerated
 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 s390x sparc sparc64 \
+    i386 x86_64 mips mips64 ; 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
+    find . -name "*.d" \
+           -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \
+           -exec rm {} \;
+done
+
 if test -z "$python"
 then
     error_exit "Python not found. Use --python=/path/to/python"
@@ -3855,6 +3867,26 @@ if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
     fi
 fi
 
+# Silence clang warnings triggered by glib < 2.57.2
+cat > $TMPC << EOF
+#include <glib.h>
+typedef struct Foo {
+    int i;
+} Foo;
+static void foo_free(Foo *f)
+{
+    g_free(f);
+}
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free);
+int main(void) { return 0; }
+EOF
+if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
+    if cc_has_warning_flag "-Wno-unused-function"; then
+        glib_cflags="$glib_cflags -Wno-unused-function"
+        CFLAGS="$CFLAGS -Wno-unused-function"
+    fi
+fi
+
 #########################################
 # zlib check
 
@@ -4207,7 +4239,7 @@ fi
 fdt_required=no
 for target in $target_list; do
   case $target in
-    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
+    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu|rx-softmmu)
       fdt_required=yes
     ;;
   esac
@@ -7793,17 +7825,21 @@ case "$target_name" in
   i386)
     mttcg="yes"
        gdb_xml_files="i386-32bit.xml"
+    TARGET_SYSTBL_ABI=i386
   ;;
   x86_64)
     TARGET_BASE_ARCH=i386
+    TARGET_SYSTBL_ABI=common,64
     mttcg="yes"
        gdb_xml_files="i386-64bit.xml"
   ;;
   alpha)
     mttcg="yes"
+    TARGET_SYSTBL_ABI=common
   ;;
   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"
@@ -7819,15 +7855,18 @@ case "$target_name" in
   ;;
   hppa)
     mttcg="yes"
+    TARGET_SYSTBL_ABI=common,32
   ;;
   lm32)
   ;;
   m68k)
     bflt="yes"
     gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
+    TARGET_SYSTBL_ABI=common
   ;;
   microblaze|microblazeel)
     TARGET_ARCH=microblaze
+    TARGET_SYSTBL_ABI=common
     bflt="yes"
     echo "TARGET_ABI32=y" >> $config_target_mak
   ;;
@@ -7835,6 +7874,7 @@ case "$target_name" in
     mttcg="yes"
     TARGET_ARCH=mips
     echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
+    TARGET_SYSTBL_ABI=o32
   ;;
   mipsn32|mipsn32el)
     mttcg="yes"
@@ -7842,12 +7882,14 @@ case "$target_name" in
     TARGET_BASE_ARCH=mips
     echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
     echo "TARGET_ABI32=y" >> $config_target_mak
+    TARGET_SYSTBL_ABI=n32
   ;;
   mips64|mips64el)
     mttcg="yes"
     TARGET_ARCH=mips64
     TARGET_BASE_ARCH=mips
     echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
+    TARGET_SYSTBL_ABI=n64
   ;;
   moxie)
   ;;
@@ -7859,10 +7901,12 @@ case "$target_name" in
   ;;
   ppc)
     gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
+    TARGET_SYSTBL_ABI=common,nospu,32
   ;;
   ppc64)
     TARGET_BASE_ARCH=ppc
     TARGET_ABI_DIR=ppc
+    TARGET_SYSTBL_ABI=common,nospu,64
     mttcg=yes
     gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
   ;;
@@ -7870,6 +7914,7 @@ case "$target_name" in
     TARGET_ARCH=ppc64
     TARGET_BASE_ARCH=ppc
     TARGET_ABI_DIR=ppc
+    TARGET_SYSTBL_ABI=common,nospu,64
     mttcg=yes
     gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
   ;;
@@ -7877,6 +7922,7 @@ case "$target_name" in
     TARGET_ARCH=ppc64
     TARGET_BASE_ARCH=ppc
     TARGET_ABI_DIR=ppc
+    TARGET_SYSTBL_ABI=common,nospu,32
     echo "TARGET_ABI32=y" >> $config_target_mak
     gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
   ;;
@@ -7892,22 +7938,33 @@ case "$target_name" in
     mttcg=yes
     gdb_xml_files="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml"
   ;;
+  rx)
+    TARGET_ARCH=rx
+    bflt="yes"
+    target_compiler=$cross_cc_rx
+    gdb_xml_files="rx-core.xml"
+  ;;
   sh4|sh4eb)
     TARGET_ARCH=sh4
+    TARGET_SYSTBL_ABI=common
     bflt="yes"
   ;;
   sparc)
+    TARGET_SYSTBL_ABI=common,32
   ;;
   sparc64)
     TARGET_BASE_ARCH=sparc
+    TARGET_SYSTBL_ABI=common,64
   ;;
   sparc32plus)
     TARGET_ARCH=sparc64
     TARGET_BASE_ARCH=sparc
     TARGET_ABI_DIR=sparc
+    TARGET_SYSTBL_ABI=common,32
     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"
   ;;
@@ -7919,6 +7976,7 @@ case "$target_name" in
   ;;
   xtensa|xtensaeb)
     TARGET_ARCH=xtensa
+    TARGET_SYSTBL_ABI=common
     bflt="yes"
     mttcg="yes"
   ;;
@@ -7948,6 +8006,9 @@ echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
 if [ "$HOST_VARIANT_DIR" != "" ]; then
     echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
 fi
+if [ "$TARGET_SYSTBL_ABI" != "" ]; then
+    echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak
+fi
 
 if supported_xen_target $target; then
     echo "CONFIG_XEN=y" >> $config_target_mak
@@ -8073,6 +8134,9 @@ for i in $ARCH $TARGET_BASE_ARCH ; do
   riscv*)
     disas_config "RISCV"
   ;;
+  rx)
+    disas_config "RX"
+  ;;
   s390*)
     disas_config "S390"
   ;;
diff --git a/default-configs/rx-softmmu.mak b/default-configs/rx-softmmu.mak
new file mode 100644 (file)
index 0000000..7c4eb2c
--- /dev/null
@@ -0,0 +1,2 @@
+# Default configuration for rx-softmmu
+
index f8b46b3c7331ae42dcc3be5ee4c5ce3d370d47c6..bba6cc216419e7e87bbb399fd914f425634a663f 100644 (file)
@@ -530,7 +530,12 @@ void qemu_fdt_dumpdtb(void *fdt, int size)
 
     if (dumpdtb) {
         /* Dump the dtb to a file and quit */
-        exit(g_file_set_contents(dumpdtb, fdt, size, NULL) ? 0 : 1);
+        if (g_file_set_contents(dumpdtb, fdt, size, NULL)) {
+            info_report("dtb dumped to %s. Exiting.", dumpdtb);
+            exit(0);
+        }
+        error_report("%s: Failed dumping dtb to %s", __func__, dumpdtb);
+        exit(1);
     }
 }
 
index 960043cb8603f0e911f75a7f6e6ecc47ff61c302..af55f506d5ddd42c107d2c8ed2b9201533322136 100644 (file)
@@ -80,7 +80,7 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'QEMU'
-copyright = u'2019, The QEMU Project Developers'
+copyright = u'2020, The QEMU Project Developers'
 author = u'The QEMU Project Developers'
 
 # The version info for the project you're documenting, acts as replacement for
diff --git a/gdb-xml/rx-core.xml b/gdb-xml/rx-core.xml
new file mode 100644 (file)
index 0000000..b5aa9ac
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2019 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.rx.core">
+  <reg name="r0" bitsize="32" type="data_ptr"/>
+  <reg name="r1" bitsize="32" type="uint32"/>
+  <reg name="r2" bitsize="32" type="uint32"/>
+  <reg name="r3" bitsize="32" type="uint32"/>
+  <reg name="r4" bitsize="32" type="uint32"/>
+  <reg name="r5" bitsize="32" type="uint32"/>
+  <reg name="r6" bitsize="32" type="uint32"/>
+  <reg name="r7" bitsize="32" type="uint32"/>
+  <reg name="r8" bitsize="32" type="uint32"/>
+  <reg name="r9" bitsize="32" type="uint32"/>
+  <reg name="r10" bitsize="32" type="uint32"/>
+  <reg name="r11" bitsize="32" type="uint32"/>
+  <reg name="r12" bitsize="32" type="uint32"/>
+  <reg name="r13" bitsize="32" type="uint32"/>
+  <reg name="r14" bitsize="32" type="uint32"/>
+  <reg name="r15" bitsize="32" type="uint32"/>
+
+  <flags id="psw_flags" size="4">
+    <field name="C" start="0" end="0"/>
+    <field name="Z" start="1" end="1"/>
+    <field name="S" start="2" end="2"/>
+    <field name="O" start="3" end="3"/>
+    <field name="I" start="16" end="16"/>
+    <field name="U" start="17" end="17"/>
+    <field name="PM" start="20" end="20"/>
+    <field name="IPL" start="24" end="27"/>
+  </flags>
+
+  <flags id="fpsw_flags" size="4">
+    <field name="RM" start="0" end="1"/>
+    <field name="CV" start="2" end="2"/>
+    <field name="CO" start="3" end="3"/>
+    <field name="CZ" start="4" end="4"/>
+    <field name="CU" start="5" end="5"/>
+    <field name="CX" start="6" end="6"/>
+    <field name="CE" start="7" end="7"/>
+    <field name="DN" start="8" end="8"/>
+    <field name="EV" start="10" end="10"/>
+    <field name="EO" start="11" end="11"/>
+    <field name="EZ" start="12" end="12"/>
+    <field name="EU" start="13" end="13"/>
+    <field name="EX" start="14" end="14"/>
+    <field name="FV" start="26" end="26"/>
+    <field name="FO" start="27" end="27"/>
+    <field name="FZ" start="28" end="28"/>
+    <field name="FU" start="29" end="29"/>
+    <field name="FX" start="30" end="30"/>
+    <field name="FS" start="31" end="31"/>
+  </flags>
+
+  <reg name="usp" bitsize="32" type="data_ptr"/>
+  <reg name="isp" bitsize="32" type="data_ptr"/>
+  <reg name="psw" bitsize="32" type="psw_flags"/>
+  <reg name="pc" bitsize="32" type="code_ptr"/>
+  <reg name="intb" bitsize="32" type="data_ptr"/>
+  <reg name="bpsw" bitsize="32" type="psw_flags"/>
+  <reg name="bpc" bitsize="32" type="code_ptr"/>
+  <reg name="fintv" bitsize="32" type="code_ptr"/>
+  <reg name="fpsw" bitsize="32" type="fpsw_flags"/>
+  <reg name="acc" bitsize="64" type="uint64"/>
+</feature>
index e5350a287f73dd496371b9b8c97a5413c60a0989..f7751b18f691327396a6c9c7305b0929b5dc8bd4 100644 (file)
@@ -15,7 +15,7 @@
 #include "qemu/error-report.h"
 #include "sysemu/sysemu.h"
 #include "hw/rtc/mc146818rtc.h"
-#include "hw/ide.h"
+#include "hw/ide/pci.h"
 #include "hw/timer/i8254.h"
 #include "hw/isa/superio.h"
 #include "hw/dma/i8257.h"
@@ -57,6 +57,7 @@ static void clipper_init(MachineState *machine)
     const char *initrd_filename = machine->initrd_filename;
     AlphaCPU *cpus[4];
     PCIBus *pci_bus;
+    PCIDevice *pci_dev;
     ISABus *isa_bus;
     qemu_irq rtc_irq;
     long size, i;
@@ -99,12 +100,8 @@ static void clipper_init(MachineState *machine)
     isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
 
     /* IDE disk setup.  */
-    {
-        DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
-        ide_drive_get(hd, ARRAY_SIZE(hd));
-
-        pci_cmd646_ide_init(pci_bus, hd, 0);
-    }
+    pci_dev = pci_create_simple(pci_bus, -1, "cmd646-ide");
+    pci_ide_create_devs(pci_dev);
 
     /* Load PALcode.  Given that this is not "real" cpu palcode,
        but one explicitly written for the emulation, we might as
index 3b2363f0431059cb3468409fd4e29abb053396cf..786a1bec8ae705d82cacdd624d8b7b4d17f270c7 100644 (file)
@@ -239,27 +239,16 @@ void cpu_dump_statistics(CPUState *cpu, int flags)
     }
 }
 
-void cpu_class_set_parent_reset(CPUClass *cc,
-                                void (*child_reset)(CPUState *cpu),
-                                void (**parent_reset)(CPUState *cpu))
-{
-    *parent_reset = cc->reset;
-    cc->reset = child_reset;
-}
-
 void cpu_reset(CPUState *cpu)
 {
-    CPUClass *klass = CPU_GET_CLASS(cpu);
-
-    if (klass->reset != NULL) {
-        (*klass->reset)(cpu);
-    }
+    device_cold_reset(DEVICE(cpu));
 
     trace_guest_cpu_reset(cpu);
 }
 
-static void cpu_common_reset(CPUState *cpu)
+static void cpu_common_reset(DeviceState *dev)
 {
+    CPUState *cpu = CPU(dev);
     CPUClass *cc = CPU_GET_CLASS(cpu);
 
     if (qemu_loglevel_mask(CPU_LOG_RESET)) {
@@ -419,7 +408,6 @@ static void cpu_class_init(ObjectClass *klass, void *data)
     CPUClass *k = CPU_CLASS(klass);
 
     k->parse_features = cpu_common_parse_features;
-    k->reset = cpu_common_reset;
     k->get_arch_id = cpu_common_get_arch_id;
     k->has_work = cpu_common_has_work;
     k->get_paging_enabled = cpu_common_get_paging_enabled;
@@ -440,6 +428,7 @@ static void cpu_class_init(ObjectClass *klass, void *data)
     set_bit(DEVICE_CATEGORY_CPU, dc->categories);
     dc->realize = cpu_common_realizefn;
     dc->unrealize = cpu_common_unrealizefn;
+    dc->reset = cpu_common_reset;
     device_class_set_props(dc, cpu_common_props);
     /*
      * Reason: CPUs still need special care by board code: wiring up
index 9e8c06036faf9c14f203a5f31e4bd42e32523c1d..de0c425605348cfb1d82bf7cb0827612d5efcf03 100644 (file)
@@ -53,7 +53,7 @@ GlobalProperty hw_compat_4_0[] = {
     { "secondary-vga",  "edid", "false" },
     { "bochs-display",  "edid", "false" },
     { "virtio-vga",     "edid", "false" },
-    { "virtio-gpu",     "edid", "false" },
+    { "virtio-gpu-device", "edid", "false" },
     { "virtio-device", "use-started", "false" },
     { "virtio-balloon-device", "qemu-4-0-config-size", "true" },
     { "pl031", "migrate-tick-offset", "false" },
@@ -425,6 +425,14 @@ static void machine_set_memory_encryption(Object *obj, const char *value,
 
     g_free(ms->memory_encryption);
     ms->memory_encryption = g_strdup(value);
+
+    /*
+     * With memory encryption, the host can't see the real contents of RAM,
+     * so there's no point in it trying to merge areas.
+     */
+    if (value) {
+        machine_set_mem_merge(obj, false, errp);
+    }
 }
 
 static bool machine_get_nvdimm(Object *obj, Error **errp)
@@ -749,6 +757,7 @@ static void smp_parse(MachineState *ms, QemuOpts *opts)
         ms->smp.cpus = cpus;
         ms->smp.cores = cores;
         ms->smp.threads = threads;
+        ms->smp.sockets = sockets;
     }
 
     if (ms->smp.cpus > 1) {
index 4d085014648ff37ce207e5e5d74bb60268be51ec..0b18271cc9bf82bbe0329a74dfbf530a6b15e813 100644 (file)
@@ -5,7 +5,6 @@
 
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
-#include "hw/ide.h"
 #include "hw/boards.h"
 #include "hw/intc/i8259.h"
 
index 9175f4b790f5c4354d18431818281373cae4bcdb..00dd9f58d6d4cce52e5245f72a0424096ea59f23 100644 (file)
@@ -13,7 +13,6 @@
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/rtc/mc146818rtc.h"
-#include "hw/ide.h"
 #include "hw/timer/i8254.h"
 #include "hw/char/serial.h"
 #include "hw/net/lasi_82596.h"
index 362eb2a180ff9620d4db49416283dd8c804b2a91..98ee763f68f809c233599d4b481ccd2605f65c57 100644 (file)
@@ -781,6 +781,7 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts)
         ms->smp.cpus = cpus;
         ms->smp.cores = cores;
         ms->smp.threads = threads;
+        ms->smp.sockets = sockets;
         x86ms->smp_dies = dies;
     }
 
@@ -1505,7 +1506,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
     int idx;
     CPUState *cs;
     CPUArchId *cpu_slot;
-    X86CPUTopoInfo topo;
+    X86CPUTopoIDs topo_ids;
     X86CPU *cpu = X86_CPU(dev);
     CPUX86State *env = &cpu->env;
     MachineState *ms = MACHINE(hotplug_dev);
@@ -1513,6 +1514,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
     X86MachineState *x86ms = X86_MACHINE(pcms);
     unsigned int smp_cores = ms->smp.cores;
     unsigned int smp_threads = ms->smp.threads;
+    X86CPUTopoInfo topo_info;
 
     if(!object_dynamic_cast(OBJECT(cpu), ms->cpu_type)) {
         error_setg(errp, "Invalid CPU type, expected cpu type: '%s'",
@@ -1520,7 +1522,10 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
         return;
     }
 
+    init_topo_info(&topo_info, x86ms);
+
     env->nr_dies = x86ms->smp_dies;
+    env->nr_nodes = topo_info.nodes_per_pkg;
 
     /*
      * If APIC ID is not set,
@@ -1571,24 +1576,22 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
             return;
         }
 
-        topo.pkg_id = cpu->socket_id;
-        topo.die_id = cpu->die_id;
-        topo.core_id = cpu->core_id;
-        topo.smt_id = cpu->thread_id;
-        cpu->apic_id = apicid_from_topo_ids(x86ms->smp_dies, smp_cores,
-                                            smp_threads, &topo);
+        topo_ids.pkg_id = cpu->socket_id;
+        topo_ids.die_id = cpu->die_id;
+        topo_ids.core_id = cpu->core_id;
+        topo_ids.smt_id = cpu->thread_id;
+        cpu->apic_id = x86_apicid_from_topo_ids(&topo_info, &topo_ids);
     }
 
     cpu_slot = pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx);
     if (!cpu_slot) {
         MachineState *ms = MACHINE(pcms);
 
-        x86_topo_ids_from_apicid(cpu->apic_id, x86ms->smp_dies,
-                                 smp_cores, smp_threads, &topo);
+        x86_topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
         error_setg(errp,
             "Invalid CPU [socket: %u, die: %u, core: %u, thread: %u] with"
             " APIC ID %" PRIu32 ", valid index range 0:%d",
-            topo.pkg_id, topo.die_id, topo.core_id, topo.smt_id,
+            topo_ids.pkg_id, topo_ids.die_id, topo_ids.core_id, topo_ids.smt_id,
             cpu->apic_id, ms->possible_cpus->len - 1);
         return;
     }
@@ -1605,35 +1608,37 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
     /* TODO: move socket_id/core_id/thread_id checks into x86_cpu_realizefn()
      * once -smp refactoring is complete and there will be CPU private
      * CPUState::nr_cores and CPUState::nr_threads fields instead of globals */
-    x86_topo_ids_from_apicid(cpu->apic_id, x86ms->smp_dies,
-                             smp_cores, smp_threads, &topo);
-    if (cpu->socket_id != -1 && cpu->socket_id != topo.pkg_id) {
+    x86_topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
+    if (cpu->socket_id != -1 && cpu->socket_id != topo_ids.pkg_id) {
         error_setg(errp, "property socket-id: %u doesn't match set apic-id:"
-            " 0x%x (socket-id: %u)", cpu->socket_id, cpu->apic_id, topo.pkg_id);
+            " 0x%x (socket-id: %u)", cpu->socket_id, cpu->apic_id,
+            topo_ids.pkg_id);
         return;
     }
-    cpu->socket_id = topo.pkg_id;
+    cpu->socket_id = topo_ids.pkg_id;
 
-    if (cpu->die_id != -1 && cpu->die_id != topo.die_id) {
+    if (cpu->die_id != -1 && cpu->die_id != topo_ids.die_id) {
         error_setg(errp, "property die-id: %u doesn't match set apic-id:"
-            " 0x%x (die-id: %u)", cpu->die_id, cpu->apic_id, topo.die_id);
+            " 0x%x (die-id: %u)", cpu->die_id, cpu->apic_id, topo_ids.die_id);
         return;
     }
-    cpu->die_id = topo.die_id;
+    cpu->die_id = topo_ids.die_id;
 
-    if (cpu->core_id != -1 && cpu->core_id != topo.core_id) {
+    if (cpu->core_id != -1 && cpu->core_id != topo_ids.core_id) {
         error_setg(errp, "property core-id: %u doesn't match set apic-id:"
-            " 0x%x (core-id: %u)", cpu->core_id, cpu->apic_id, topo.core_id);
+            " 0x%x (core-id: %u)", cpu->core_id, cpu->apic_id,
+            topo_ids.core_id);
         return;
     }
-    cpu->core_id = topo.core_id;
+    cpu->core_id = topo_ids.core_id;
 
-    if (cpu->thread_id != -1 && cpu->thread_id != topo.smt_id) {
+    if (cpu->thread_id != -1 && cpu->thread_id != topo_ids.smt_id) {
         error_setg(errp, "property thread-id: %u doesn't match set apic-id:"
-            " 0x%x (thread-id: %u)", cpu->thread_id, cpu->apic_id, topo.smt_id);
+            " 0x%x (thread-id: %u)", cpu->thread_id, cpu->apic_id,
+            topo_ids.smt_id);
         return;
     }
-    cpu->thread_id = topo.smt_id;
+    cpu->thread_id = topo_ids.smt_id;
 
     if (hyperv_feat_enabled(cpu, HYPERV_FEAT_VPINDEX) &&
         !kvm_hv_vpindex_settable()) {
index e2d98243bc64797062a6e9da7581fb7ef55fd80a..e6756216f9f450d1115fd4a680374c775059fb56 100644 (file)
@@ -38,7 +38,7 @@
 #include "hw/pci/pci_ids.h"
 #include "hw/usb.h"
 #include "net/net.h"
-#include "hw/ide.h"
+#include "hw/ide/pci.h"
 #include "hw/irq.h"
 #include "sysemu/kvm.h"
 #include "hw/kvm/clock.h"
@@ -85,7 +85,6 @@ static void pc_init1(MachineState *machine,
     int piix3_devfn = -1;
     qemu_irq smi_irq;
     GSIState *gsi_state;
-    DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
     BusState *idebus[MAX_IDE_BUS];
     ISADevice *rtc_state;
     MemoryRegion *ram_memory;
@@ -239,21 +238,22 @@ static void pc_init1(MachineState *machine,
 
     pc_nic_init(pcmc, isa_bus, pci_bus);
 
-    ide_drive_get(hd, ARRAY_SIZE(hd));
     if (pcmc->pci_enabled) {
         PCIDevice *dev;
-        if (xen_enabled()) {
-            dev = pci_piix3_xen_ide_init(pci_bus, hd, piix3_devfn + 1);
-        } else {
-            dev = pci_piix3_ide_init(pci_bus, hd, piix3_devfn + 1);
-        }
+
+        dev = pci_create_simple(pci_bus, piix3_devfn + 1,
+                                xen_enabled() ? "piix3-ide-xen" : "piix3-ide");
+        pci_ide_create_devs(dev);
         idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0");
         idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1");
         pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
     }
 #ifdef CONFIG_IDE_ISA
-else {
+    else {
+        DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
         int i;
+
+        ide_drive_get(hd, ARRAY_SIZE(hd));
         for (i = 0; i < MAX_IDE_BUS; i++) {
             ISADevice *dev;
             char busname[] = "ide.0";
index 08246523f221f7a6d1c8f8624a1b4d975e42859b..87b73fe33cd28ed5567f21fd30a5a8d7e1ed1aad 100644 (file)
 /* Physical Address of PVH entry point read from kernel ELF NOTE */
 static size_t pvh_start_addr;
 
+inline void init_topo_info(X86CPUTopoInfo *topo_info,
+                           const X86MachineState *x86ms)
+{
+    MachineState *ms = MACHINE(x86ms);
+
+    topo_info->nodes_per_pkg = ms->numa_state->num_nodes / ms->smp.sockets;
+    topo_info->dies_per_pkg = x86ms->smp_dies;
+    topo_info->cores_per_die = ms->smp.cores;
+    topo_info->threads_per_core = ms->smp.threads;
+}
+
 /*
  * Calculates initial APIC ID for a specific CPU index
  *
@@ -68,13 +79,14 @@ static size_t pvh_start_addr;
 uint32_t x86_cpu_apic_id_from_index(X86MachineState *x86ms,
                                     unsigned int cpu_index)
 {
-    MachineState *ms = MACHINE(x86ms);
     X86MachineClass *x86mc = X86_MACHINE_GET_CLASS(x86ms);
+    X86CPUTopoInfo topo_info;
     uint32_t correct_id;
     static bool warned;
 
-    correct_id = x86_apicid_from_cpu_idx(x86ms->smp_dies, ms->smp.cores,
-                                         ms->smp.threads, cpu_index);
+    init_topo_info(&topo_info, x86ms);
+
+    correct_id = x86_apicid_from_cpu_idx(&topo_info, cpu_index);
     if (x86mc->compat_apic_id_mode) {
         if (cpu_index != correct_id && !warned && !qtest_enabled()) {
             error_report("APIC IDs set in compatibility mode, "
@@ -92,13 +104,9 @@ void x86_cpu_new(X86MachineState *x86ms, int64_t apic_id, Error **errp)
 {
     Object *cpu = NULL;
     Error *local_err = NULL;
-    CPUX86State *env = NULL;
 
     cpu = object_new(MACHINE(x86ms)->cpu_type);
 
-    env = &X86_CPU(cpu)->env;
-    env->nr_dies = x86ms->smp_dies;
-
     object_property_set_uint(cpu, apic_id, "apic-id", &local_err);
     object_property_set_bool(cpu, true, "realized", &local_err);
 
@@ -143,21 +151,24 @@ x86_cpu_index_to_props(MachineState *ms, unsigned cpu_index)
 
 int64_t x86_get_default_cpu_node_id(const MachineState *ms, int idx)
 {
-   X86CPUTopoInfo topo;
+   X86CPUTopoIDs topo_ids;
    X86MachineState *x86ms = X86_MACHINE(ms);
+   X86CPUTopoInfo topo_info;
+
+   init_topo_info(&topo_info, x86ms);
 
    assert(idx < ms->possible_cpus->len);
    x86_topo_ids_from_apicid(ms->possible_cpus->cpus[idx].arch_id,
-                            x86ms->smp_dies, ms->smp.cores,
-                            ms->smp.threads, &topo);
-   return topo.pkg_id % ms->numa_state->num_nodes;
+                            &topo_info, &topo_ids);
+   return topo_ids.pkg_id % ms->numa_state->num_nodes;
 }
 
 const CPUArchIdList *x86_possible_cpu_arch_ids(MachineState *ms)
 {
     X86MachineState *x86ms = X86_MACHINE(ms);
-    int i;
     unsigned int max_cpus = ms->smp.max_cpus;
+    X86CPUTopoInfo topo_info;
+    int i;
 
     if (ms->possible_cpus) {
         /*
@@ -171,26 +182,28 @@ const CPUArchIdList *x86_possible_cpu_arch_ids(MachineState *ms)
     ms->possible_cpus = g_malloc0(sizeof(CPUArchIdList) +
                                   sizeof(CPUArchId) * max_cpus);
     ms->possible_cpus->len = max_cpus;
+
+    init_topo_info(&topo_info, x86ms);
+
     for (i = 0; i < ms->possible_cpus->len; i++) {
-        X86CPUTopoInfo topo;
+        X86CPUTopoIDs topo_ids;
 
         ms->possible_cpus->cpus[i].type = ms->cpu_type;
         ms->possible_cpus->cpus[i].vcpus_count = 1;
         ms->possible_cpus->cpus[i].arch_id =
             x86_cpu_apic_id_from_index(x86ms, i);
         x86_topo_ids_from_apicid(ms->possible_cpus->cpus[i].arch_id,
-                                 x86ms->smp_dies, ms->smp.cores,
-                                 ms->smp.threads, &topo);
+                                 &topo_info, &topo_ids);
         ms->possible_cpus->cpus[i].props.has_socket_id = true;
-        ms->possible_cpus->cpus[i].props.socket_id = topo.pkg_id;
+        ms->possible_cpus->cpus[i].props.socket_id = topo_ids.pkg_id;
         if (x86ms->smp_dies > 1) {
             ms->possible_cpus->cpus[i].props.has_die_id = true;
-            ms->possible_cpus->cpus[i].props.die_id = topo.die_id;
+            ms->possible_cpus->cpus[i].props.die_id = topo_ids.die_id;
         }
         ms->possible_cpus->cpus[i].props.has_core_id = true;
-        ms->possible_cpus->cpus[i].props.core_id = topo.core_id;
+        ms->possible_cpus->cpus[i].props.core_id = topo_ids.core_id;
         ms->possible_cpus->cpus[i].props.has_thread_id = true;
-        ms->possible_cpus->cpus[i].props.thread_id = topo.smt_id;
+        ms->possible_cpus->cpus[i].props.thread_id = topo_ids.smt_id;
     }
     return ms->possible_cpus;
 }
index 73424516daf27f875aba856c52178c4925e476dd..bab0459774ed3392c8ac34721c7e386d89f4c706 100644 (file)
@@ -27,6 +27,7 @@
 #include "hw/ide/ahci.h"
 #include "hw/ide/internal.h"
 #include "hw/sysbus.h"
+#include "hw/pci/pci.h"
 
 #define AHCI_MEM_BAR_SIZE         0x1000
 #define AHCI_MAX_PORTS            32
index 335c060673a58fc3eeeb63de4a9f020642df6177..699f25824db59dabc11638a49c78d2f24d9559fd 100644 (file)
@@ -207,9 +207,9 @@ static void cmd646_set_irq(void *opaque, int channel, int level)
     cmd646_update_irq(pd);
 }
 
-static void cmd646_reset(void *opaque)
+static void cmd646_reset(DeviceState *dev)
 {
-    PCIIDEState *d = opaque;
+    PCIIDEState *d = PCI_IDE(dev);
     unsigned int i;
 
     for (i = 0; i < 2; i++) {
@@ -301,9 +301,6 @@ static void pci_cmd646_ide_realize(PCIDevice *dev, Error **errp)
         ide_register_restart_cb(&d->bus[i]);
     }
     g_free(irq);
-
-    vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_pci, d);
-    qemu_register_reset(cmd646_reset, d);
 }
 
 static void pci_cmd646_ide_exitfn(PCIDevice *dev)
@@ -317,18 +314,6 @@ static void pci_cmd646_ide_exitfn(PCIDevice *dev)
     }
 }
 
-void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table,
-                         int secondary_ide_enabled)
-{
-    PCIDevice *dev;
-
-    dev = pci_create(bus, -1, "cmd646-ide");
-    qdev_prop_set_uint32(&dev->qdev, "secondary", secondary_ide_enabled);
-    qdev_init_nofail(&dev->qdev);
-
-    pci_ide_create_devs(dev, hd_table);
-}
-
 static Property cmd646_ide_properties[] = {
     DEFINE_PROP_UINT32("secondary", PCIIDEState, secondary, 0),
     DEFINE_PROP_END_OF_LIST(),
@@ -339,6 +324,8 @@ static void cmd646_ide_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
+    dc->reset = cmd646_reset;
+    dc->vmsd = &vmstate_ide_pci;
     k->realize = pci_cmd646_ide_realize;
     k->exit = pci_cmd646_ide_exitfn;
     k->vendor_id = PCI_VENDOR_ID_CMD;
index 1a6a287e76c6df3ce14297723daafd96c5a460ec..97347f07f1197e3663e0394118f96d61876cfab4 100644 (file)
@@ -476,17 +476,20 @@ const VMStateDescription vmstate_ide_pci = {
     }
 };
 
-void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table)
+/* hd_table must contain 4 block drivers */
+void pci_ide_create_devs(PCIDevice *dev)
 {
     PCIIDEState *d = PCI_IDE(dev);
+    DriveInfo *hd_table[2 * MAX_IDE_DEVS];
     static const int bus[4]  = { 0, 0, 1, 1 };
     static const int unit[4] = { 0, 1, 0, 1 };
     int i;
 
+    ide_drive_get(hd_table, ARRAY_SIZE(hd_table));
     for (i = 0; i < 4; i++) {
-        if (hd_table[i] == NULL)
-            continue;
-        ide_create_drive(d->bus+bus[i], unit[i], hd_table[i]);
+        if (hd_table[i]) {
+            ide_create_drive(d->bus + bus[i], unit[i], hd_table[i]);
+        }
     }
 }
 
index bc575b4d70490d9f2857012b210ec6e70c038021..3b2de4c312de813d03a7e50add8333fb3abd7230 100644 (file)
@@ -197,15 +197,6 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev, bool aux)
     return 0;
 }
 
-PCIDevice *pci_piix3_xen_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
-{
-    PCIDevice *dev;
-
-    dev = pci_create_simple(bus, devfn, "piix3-ide-xen");
-    pci_ide_create_devs(dev, hd_table);
-    return dev;
-}
-
 static void pci_piix_ide_exitfn(PCIDevice *dev)
 {
     PCIIDEState *d = PCI_IDE(dev);
@@ -217,28 +208,7 @@ static void pci_piix_ide_exitfn(PCIDevice *dev)
     }
 }
 
-/* hd_table must contain 4 block drivers */
 /* NOTE: for the PIIX3, the IRQs and IOports are hardcoded */
-PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
-{
-    PCIDevice *dev;
-
-    dev = pci_create_simple(bus, devfn, "piix3-ide");
-    pci_ide_create_devs(dev, hd_table);
-    return dev;
-}
-
-/* hd_table must contain 4 block drivers */
-/* NOTE: for the PIIX4, the IRQs and IOports are hardcoded */
-PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
-{
-    PCIDevice *dev;
-
-    dev = pci_create_simple(bus, devfn, "piix4-ide");
-    pci_ide_create_devs(dev, hd_table);
-    return dev;
-}
-
 static void piix3_ide_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -266,6 +236,7 @@ static const TypeInfo piix3_ide_xen_info = {
     .class_init    = piix3_ide_class_init,
 };
 
+/* NOTE: for the PIIX4, the IRQs and IOports are hardcoded */
 static void piix4_ide_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
index 096de8dba0c317b6a1e46aeff386fef4b6bbbe70..8de4945cc12141105959d5b24fd9719df5b564d9 100644 (file)
@@ -113,10 +113,7 @@ static void via_ide_set_irq(void *opaque, int n, int level)
     }
 
     level = (d->config[0x70] & 0x80) || (d->config[0x78] & 0x80);
-    n = pci_get_byte(d->config + PCI_INTERRUPT_LINE);
-    if (n) {
-        qemu_set_irq(isa_get_irq(NULL, n), level);
-    }
+    qemu_set_irq(isa_get_irq(NULL, 14 + n), level);
 }
 
 static void via_ide_reset(DeviceState *dev)
@@ -167,9 +164,10 @@ static void via_ide_realize(PCIDevice *dev, Error **errp)
     uint8_t *pci_conf = dev->config;
     int i;
 
-    pci_config_set_prog_interface(pci_conf, 0x8f); /* native PCI ATA mode */
+    pci_config_set_prog_interface(pci_conf, 0x8a); /* legacy mode */
     pci_set_long(pci_conf + PCI_CAPABILITY_LIST, 0x000000c0);
-    dev->wmask[PCI_INTERRUPT_LINE] = 0xf;
+    dev->wmask[PCI_INTERRUPT_LINE] = 0;
+    dev->wmask[PCI_CLASS_PROG] = 5;
 
     memory_region_init_io(&d->data_bar[0], OBJECT(d), &pci_ide_data_le_ops,
                           &d->bus[0], "via-ide0-data", 8);
@@ -190,8 +188,6 @@ static void via_ide_realize(PCIDevice *dev, Error **errp)
     bmdma_setup_bar(d);
     pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar);
 
-    vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_pci, d);
-
     for (i = 0; i < 2; i++) {
         ide_bus_new(&d->bus[i], sizeof(d->bus[i]), DEVICE(d), i, 2);
         ide_init2(&d->bus[i], qemu_allocate_irq(via_ide_set_irq, d, i));
@@ -213,20 +209,13 @@ static void via_ide_exitfn(PCIDevice *dev)
     }
 }
 
-void via_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn)
-{
-    PCIDevice *dev;
-
-    dev = pci_create_simple(bus, devfn, "via-ide");
-    pci_ide_create_devs(dev, hd_table);
-}
-
 static void via_ide_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
     dc->reset = via_ide_reset;
+    dc->vmsd = &vmstate_ide_pci;
     k->realize = via_ide_realize;
     k->exit = via_ide_exitfn;
     k->vendor_id = PCI_VENDOR_ID_VIA;
index 7edec5e149b1096c85298b60b9b8762f4018880b..9a10fb9b3cd62d119012378132a64fec146d8359 100644 (file)
@@ -34,7 +34,7 @@
 #include "hw/dma/i8257.h"
 #include "hw/timer/i8254.h"
 #include "hw/rtc/mc146818rtc.h"
-#include "hw/ide.h"
+#include "hw/ide/pci.h"
 #include "migration/vmstate.h"
 #include "sysemu/reset.h"
 #include "sysemu/runstate.h"
@@ -240,28 +240,25 @@ static void piix4_register_types(void)
 
 type_init(piix4_register_types)
 
-DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
-                          I2CBus **smbus, size_t ide_buses)
+DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus)
 {
-    size_t ide_drives = ide_buses * MAX_IDE_DEVS;
-    DriveInfo **hd;
     PCIDevice *pci;
     DeviceState *dev;
+    int devfn = PCI_DEVFN(10, 0);
 
-    pci = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(10, 0),
-                                          true, TYPE_PIIX4_PCI_DEVICE);
+    pci = pci_create_simple_multifunction(pci_bus, devfn,  true,
+                                          TYPE_PIIX4_PCI_DEVICE);
     dev = DEVICE(pci);
     if (isa_bus) {
         *isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
     }
 
-    hd = g_new(DriveInfo *, ide_drives);
-    ide_drive_get(hd, ide_drives);
-    pci_piix4_ide_init(pci_bus, hd, pci->devfn + 1);
-    g_free(hd);
-    pci_create_simple(pci_bus, pci->devfn + 2, "piix4-usb-uhci");
+    pci = pci_create_simple(pci_bus, devfn + 1, "piix4-ide");
+    pci_ide_create_devs(pci);
+
+    pci_create_simple(pci_bus, devfn + 2, "piix4-usb-uhci");
     if (smbus) {
-        *smbus = piix4_pm_init(pci_bus, pci->devfn + 3, 0x1100,
+        *smbus = piix4_pm_init(pci_bus, devfn + 3, 0x1100,
                                isa_get_irq(NULL, 9), NULL, 0, NULL);
    }
 
index 4727b1d3a468f978b765541f4a243dca2f541d91..5040afd5816aef9c54668b89da21b583d39ccc7c 100644 (file)
@@ -36,7 +36,7 @@
 #include "audio/audio.h"
 #include "qemu/log.h"
 #include "hw/loader.h"
-#include "hw/ide.h"
+#include "hw/ide/pci.h"
 #include "elf.h"
 #include "hw/isa/vt82c686.h"
 #include "hw/rtc/mc146818rtc.h"
@@ -238,7 +238,7 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
 {
     qemu_irq *i8259;
     ISABus *isa_bus;
-    DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
+    PCIDevice *dev;
 
     isa_bus = vt82c686b_isa_init(pci_bus, PCI_DEVFN(slot, 0));
     if (!isa_bus) {
@@ -256,8 +256,8 @@ static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq intc,
     /* Super I/O */
     isa_create_simple(isa_bus, TYPE_VT82C686B_SUPERIO);
 
-    ide_drive_get(hd, ARRAY_SIZE(hd));
-    via_ide_init(pci_bus, hd, PCI_DEVFN(slot, 1));
+    dev = pci_create_simple(pci_bus, PCI_DEVFN(slot, 1), "via-ide");
+    pci_ide_create_devs(dev);
 
     pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
     pci_create_simple(pci_bus, PCI_DEVFN(slot, 3), "vt82c686b-usb-uhci");
index d380f73d7bcc59d33c7ca4b709fa4334cfda215a..e4c4de1b4e2d7bb6f45fc0cb87c36098b9e30e51 100644 (file)
@@ -1403,7 +1403,7 @@ void mips_malta_init(MachineState *machine)
     pci_bus = gt64120_register(s->i8259);
 
     /* Southbridge */
-    dev = piix4_create(pci_bus, &isa_bus, &smbus, MAX_IDE_BUS);
+    dev = piix4_create(pci_bus, &isa_bus, &smbus);
 
     /* Interrupt controller */
     qdev_connect_gpio_out_named(dev, "intr", 0, i8259_irq);
index ad8b75e2860d48187c52f31d592f9351d336ff10..3487013a4a15061a56e1ba3e7a5462d026a5f019 100644 (file)
@@ -26,6 +26,7 @@
 #include "qemu/log.h"
 #include "hw/mips/bios.h"
 #include "hw/ide.h"
+#include "hw/ide/internal.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/rtc/mc146818rtc.h"
index e1ed6677e1a5c11d1d597799690254e06d1f674a..b5bc842fac6ac613dc5e72a70fa44b8563a19e52 100644 (file)
@@ -302,8 +302,11 @@ static void pci_do_device_reset(PCIDevice *dev)
     pci_word_test_and_clear_mask(dev->config + PCI_STATUS,
                                  pci_get_word(dev->wmask + PCI_STATUS) |
                                  pci_get_word(dev->w1cmask + PCI_STATUS));
+    /* Some devices make bits of PCI_INTERRUPT_LINE read only */
+    pci_byte_test_and_clear_mask(dev->config + PCI_INTERRUPT_LINE,
+                              pci_get_word(dev->wmask + PCI_INTERRUPT_LINE) |
+                              pci_get_word(dev->w1cmask + PCI_INTERRUPT_LINE));
     dev->config[PCI_CACHE_LINE_SIZE] = 0x0;
-    dev->config[PCI_INTERRUPT_LINE] = 0x0;
     for (r = 0; r < PCI_NUM_REGIONS; ++r) {
         PCIIORegion *region = &dev->io_regions[r];
         if (!region->size) {
index b2ec372958bd3f300d3ba46a6b187e7596a15a14..428cf63578881ac6af628a3b63a6e08223296852 100644 (file)
@@ -62,7 +62,6 @@
 #include "hw/char/escc.h"
 #include "hw/misc/macio/macio.h"
 #include "hw/ppc/openpic.h"
-#include "hw/ide.h"
 #include "hw/loader.h"
 #include "hw/fw-path-provider.h"
 #include "elf.h"
index faaa165f3f125eb733661cf3289c085a31a47fa4..101bdc5c4d56165159eca83c829aed60b3a63dfa 100644 (file)
@@ -41,7 +41,6 @@
 #include "hw/nvram/fw_cfg.h"
 #include "hw/char/escc.h"
 #include "hw/misc/macio/macio.h"
-#include "hw/ide.h"
 #include "hw/loader.h"
 #include "hw/fw-path-provider.h"
 #include "elf.h"
index 111cc80867898d208852c41f7d1667f37b82877c..44be9d25a2ce693af14ec08063c1aae8e64e7802 100644 (file)
@@ -37,7 +37,6 @@
 #include "hw/boards.h"
 #include "qemu/error-report.h"
 #include "qemu/log.h"
-#include "hw/ide.h"
 #include "hw/irq.h"
 #include "hw/loader.h"
 #include "hw/rtc/mc146818rtc.h"
index c346407cd3645cc0741a5f8e0dd820a0c1a4b81a..3dd39fe1a7f4dd621b8c6749519f8ee304b459d2 100644 (file)
@@ -377,35 +377,42 @@ static void ah_cache_init(void)
                                     destroy_ah_hash_key, destroy_ah_hast_data);
 }
 
+#ifdef LEGACY_RDMA_REG_MR
 static int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
-                                struct ibv_sge *dsge, struct ibv_sge *ssge,
-                                uint8_t num_sge, uint64_t *total_length)
+                                struct ibv_sge *sge, uint8_t num_sge,
+                                uint64_t *total_length)
 {
     RdmaRmMR *mr;
-    int ssge_idx;
+    int idx;
 
-    for (ssge_idx = 0; ssge_idx < num_sge; ssge_idx++) {
-        mr = rdma_rm_get_mr(rdma_dev_res, ssge[ssge_idx].lkey);
+    for (idx = 0; idx < num_sge; idx++) {
+        mr = rdma_rm_get_mr(rdma_dev_res, sge[idx].lkey);
         if (unlikely(!mr)) {
-            rdma_error_report("Invalid lkey 0x%x", ssge[ssge_idx].lkey);
-            return VENDOR_ERR_INVLKEY | ssge[ssge_idx].lkey;
+            rdma_error_report("Invalid lkey 0x%x", sge[idx].lkey);
+            return VENDOR_ERR_INVLKEY | sge[idx].lkey;
         }
 
-#ifdef LEGACY_RDMA_REG_MR
-        dsge->addr = (uintptr_t)mr->virt + ssge[ssge_idx].addr - mr->start;
-#else
-        dsge->addr = ssge[ssge_idx].addr;
-#endif
-        dsge->length = ssge[ssge_idx].length;
-        dsge->lkey = rdma_backend_mr_lkey(&mr->backend_mr);
-
-        *total_length += dsge->length;
+        sge[idx].addr = (uintptr_t)mr->virt + sge[idx].addr - mr->start;
+        sge[idx].lkey = rdma_backend_mr_lkey(&mr->backend_mr);
 
-        dsge++;
+        *total_length += sge[idx].length;
     }
 
     return 0;
 }
+#else
+static inline int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
+                                       struct ibv_sge *sge, uint8_t num_sge,
+                                       uint64_t *total_length)
+{
+    int idx;
+
+    for (idx = 0; idx < num_sge; idx++) {
+        *total_length += sge[idx].length;
+    }
+    return 0;
+}
+#endif
 
 static void trace_mad_message(const char *title, char *buf, int len)
 {
@@ -484,7 +491,6 @@ void rdma_backend_post_send(RdmaBackendDev *backend_dev,
                             void *ctx)
 {
     BackendCtx *bctx;
-    struct ibv_sge new_sge[MAX_SGE];
     uint32_t bctx_id;
     int rc;
     struct ibv_send_wr wr = {}, *bad_wr;
@@ -518,7 +524,7 @@ void rdma_backend_post_send(RdmaBackendDev *backend_dev,
 
     rdma_protected_gslist_append_int32(&qp->cqe_ctx_list, bctx_id);
 
-    rc = build_host_sge_array(backend_dev->rdma_dev_res, new_sge, sge, num_sge,
+    rc = build_host_sge_array(backend_dev->rdma_dev_res, sge, num_sge,
                               &backend_dev->rdma_dev_res->stats.tx_len);
     if (rc) {
         complete_work(IBV_WC_GENERAL_ERR, rc, ctx);
@@ -538,7 +544,7 @@ void rdma_backend_post_send(RdmaBackendDev *backend_dev,
     wr.num_sge = num_sge;
     wr.opcode = IBV_WR_SEND;
     wr.send_flags = IBV_SEND_SIGNALED;
-    wr.sg_list = new_sge;
+    wr.sg_list = sge;
     wr.wr_id = bctx_id;
 
     rc = ibv_post_send(qp->ibqp, &wr, &bad_wr);
@@ -601,7 +607,6 @@ void rdma_backend_post_recv(RdmaBackendDev *backend_dev,
                             struct ibv_sge *sge, uint32_t num_sge, void *ctx)
 {
     BackendCtx *bctx;
-    struct ibv_sge new_sge[MAX_SGE];
     uint32_t bctx_id;
     int rc;
     struct ibv_recv_wr wr = {}, *bad_wr;
@@ -635,7 +640,7 @@ void rdma_backend_post_recv(RdmaBackendDev *backend_dev,
 
     rdma_protected_gslist_append_int32(&qp->cqe_ctx_list, bctx_id);
 
-    rc = build_host_sge_array(backend_dev->rdma_dev_res, new_sge, sge, num_sge,
+    rc = build_host_sge_array(backend_dev->rdma_dev_res, sge, num_sge,
                               &backend_dev->rdma_dev_res->stats.rx_bufs_len);
     if (rc) {
         complete_work(IBV_WC_GENERAL_ERR, rc, ctx);
@@ -643,7 +648,7 @@ void rdma_backend_post_recv(RdmaBackendDev *backend_dev,
     }
 
     wr.num_sge = num_sge;
-    wr.sg_list = new_sge;
+    wr.sg_list = sge;
     wr.wr_id = bctx_id;
     rc = ibv_post_recv(qp->ibqp, &wr, &bad_wr);
     if (rc) {
@@ -671,7 +676,6 @@ void rdma_backend_post_srq_recv(RdmaBackendDev *backend_dev,
                                 uint32_t num_sge, void *ctx)
 {
     BackendCtx *bctx;
-    struct ibv_sge new_sge[MAX_SGE];
     uint32_t bctx_id;
     int rc;
     struct ibv_recv_wr wr = {}, *bad_wr;
@@ -688,7 +692,7 @@ void rdma_backend_post_srq_recv(RdmaBackendDev *backend_dev,
 
     rdma_protected_gslist_append_int32(&srq->cqe_ctx_list, bctx_id);
 
-    rc = build_host_sge_array(backend_dev->rdma_dev_res, new_sge, sge, num_sge,
+    rc = build_host_sge_array(backend_dev->rdma_dev_res, sge, num_sge,
                               &backend_dev->rdma_dev_res->stats.rx_bufs_len);
     if (rc) {
         complete_work(IBV_WC_GENERAL_ERR, rc, ctx);
@@ -696,7 +700,7 @@ void rdma_backend_post_srq_recv(RdmaBackendDev *backend_dev,
     }
 
     wr.num_sge = num_sge;
-    wr.sg_list = new_sge;
+    wr.sg_list = sge;
     wr.wr_id = bctx_id;
     rc = ibv_post_srq_recv(srq->ibsrq, &wr, &bad_wr);
     if (rc) {
@@ -739,13 +743,8 @@ void rdma_backend_destroy_pd(RdmaBackendPD *pd)
     }
 }
 
-#ifdef LEGACY_RDMA_REG_MR
-int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
-                           size_t length, int access)
-#else
 int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
                            size_t length, uint64_t guest_start, int access)
-#endif
 {
 #ifdef LEGACY_RDMA_REG_MR
     mr->ibmr = ibv_reg_mr(pd->ibpd, addr, length, access);
index 127f96e2d535571d6acdbeac61081cb6a644862a..225af481e07f97591f6b91075257216a2c8eec6c 100644 (file)
@@ -78,13 +78,8 @@ int rdma_backend_query_port(RdmaBackendDev *backend_dev,
 int rdma_backend_create_pd(RdmaBackendDev *backend_dev, RdmaBackendPD *pd);
 void rdma_backend_destroy_pd(RdmaBackendPD *pd);
 
-#ifdef LEGACY_RDMA_REG_MR
-int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
-                           size_t length, int access);
-#else
 int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
                            size_t length, uint64_t guest_start, int access);
-#endif
 void rdma_backend_destroy_mr(RdmaBackendMR *mr);
 
 int rdma_backend_create_cq(RdmaBackendDev *backend_dev, RdmaBackendCQ *cq,
index 1524dfaeaa7c7d750004a9a258971e3742c9c35d..7e9ea283c9aff31a9155bf3cc4a289ae3802e521 100644 (file)
@@ -227,21 +227,20 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
         mr->length = guest_length;
         mr->virt += (mr->start & (TARGET_PAGE_SIZE - 1));
 
-#ifdef LEGACY_RDMA_REG_MR
-        ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
-                                     mr->length, access_flags);
-#else
         ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
                                      mr->length, guest_start, access_flags);
-#endif
         if (ret) {
             ret = -EIO;
             goto out_dealloc_mr;
         }
+#ifdef LEGACY_RDMA_REG_MR
+        /* We keep mr_handle in lkey so send and recv get get mr ptr */
+        *lkey = *mr_handle;
+#else
+        *lkey = rdma_backend_mr_lkey(&mr->backend_mr);
+#endif
     }
 
-    /* We keep mr_handle in lkey so send and recv get get mr ptr */
-    *lkey = *mr_handle;
     *rkey = -1;
 
     mr->pd_handle = pd_handle;
index d7bc7f5ccc8afaec536ce59545fe2b23d9348f36..c122fe7035bda328761ec01359eb4f4928fc1aed 100644 (file)
  */
 
 #include "qemu/osdep.h"
+#include "qemu/cutils.h"
 #include "hw/pci/pci.h"
 #include "cpu.h"
+#include "qemu/cutils.h"
 
 #include "trace.h"
 
@@ -30,8 +32,7 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
     int i;
     int rc = 0;
 
-    strncpy(ring->name, name, MAX_RING_NAME_SZ);
-    ring->name[MAX_RING_NAME_SZ - 1] = 0;
+    pstrcpy(ring->name, MAX_RING_NAME_SZ, name);
     ring->dev = dev;
     ring->ring_state = ring_state;
     ring->max_elems = max_elems;
index d33e84f831a05a4e04026aefd8a7b2e0ca4d6a8d..6abfcb30f8ab887a39027f119becf6b78e4c3419 100644 (file)
@@ -50,7 +50,6 @@
 #include "hw/sparc/sparc64.h"
 #include "hw/nvram/fw_cfg.h"
 #include "hw/sysbus.h"
-#include "hw/ide.h"
 #include "hw/ide/pci.h"
 #include "hw/loader.h"
 #include "hw/fw-path-provider.h"
@@ -563,7 +562,6 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
     PCIBus *pci_bus, *pci_busA, *pci_busB;
     PCIDevice *ebus, *pci_dev;
     SysBusDevice *s;
-    DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
     DeviceState *iommu, *dev;
     FWCfgState *fw_cfg;
     NICInfo *nd;
@@ -663,12 +661,10 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
         qemu_macaddr_default_if_unset(&macaddr);
     }
 
-    ide_drive_get(hd, ARRAY_SIZE(hd));
-
     pci_dev = pci_create(pci_busA, PCI_DEVFN(3, 0), "cmd646-ide");
     qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1);
     qdev_init_nofail(&pci_dev->qdev);
-    pci_ide_create_devs(pci_dev, hd);
+    pci_ide_create_devs(pci_dev);
 
     /* Map NVRAM into I/O (ebus) space */
     nvram = m48t59_init(NULL, 0, 0, NVRAM_SIZE, 1968, 59);
index e2b20ecab9a341a1ff1da9b82e0f8cd7c30a091c..8a1002941892263903f5cabec294c51eab0c65c2 100644 (file)
@@ -105,10 +105,13 @@ for (bitmap = bdrv_dirty_bitmap_first(bs); bitmap; \
      bitmap = bdrv_dirty_bitmap_next(bitmap))
 
 char *bdrv_dirty_bitmap_sha256(const BdrvDirtyBitmap *bitmap, Error **errp);
-int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, uint64_t offset,
-                                    uint64_t bytes);
+int64_t bdrv_dirty_bitmap_next_dirty(BdrvDirtyBitmap *bitmap, int64_t offset,
+                                     int64_t bytes);
+int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, int64_t offset,
+                                    int64_t bytes);
 bool bdrv_dirty_bitmap_next_dirty_area(BdrvDirtyBitmap *bitmap,
-                                       uint64_t *offset, uint64_t *bytes);
+        int64_t start, int64_t end, int64_t max_dirty_count,
+        int64_t *dirty_start, int64_t *dirty_count);
 BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap_locked(BdrvDirtyBitmap *bitmap,
                                                   Error **errp);
 
index f87f4688093d2f7eeefa61187c0ac9ac1c75f2c3..c5f9fa08abcd97b490d3d9a680a98034287389ba 100644 (file)
@@ -226,6 +226,10 @@ enum bfd_architecture
 #define bfd_mach_nios2r2        2
   bfd_arch_lm32,       /* Lattice Mico32 */
 #define bfd_mach_lm32 1
+  bfd_arch_rx,       /* Renesas RX */
+#define bfd_mach_rx            0x75
+#define bfd_mach_rx_v2         0x76
+#define bfd_mach_rx_v3         0x77
   bfd_arch_last
   };
 #define bfd_mach_s390_31 31
@@ -436,6 +440,7 @@ int print_insn_little_nios2     (bfd_vma, disassemble_info*);
 int print_insn_xtensa           (bfd_vma, disassemble_info*);
 int print_insn_riscv32          (bfd_vma, disassemble_info*);
 int print_insn_riscv64          (bfd_vma, disassemble_info*);
+int print_insn_rx(bfd_vma, disassemble_info *);
 
 #if 0
 /* Fetch the disassembler for a given BFD, if that support is available.  */
index 955eb863ab79272c603daa0a3046084dc63c96a3..7b9ac361dc9ac3e9672042f2081d15946857727b 100644 (file)
@@ -26,6 +26,7 @@
 #pragma GCC poison TARGET_PPC
 #pragma GCC poison TARGET_PPC64
 #pragma GCC poison TARGET_ABI32
+#pragma GCC poison TARGET_RX
 #pragma GCC poison TARGET_S390X
 #pragma GCC poison TARGET_SH4
 #pragma GCC poison TARGET_SPARC
index c96120d15f6f01c41e0147e910c45b10911204f9..236d239c19e82fe52f8c74de492e794bde18b530 100644 (file)
@@ -236,12 +236,14 @@ typedef struct DeviceMemoryState {
  * @cpus: the number of present logical processors on the machine
  * @cores: the number of cores in one package
  * @threads: the number of threads in one core
+ * @sockets: the number of sockets on the machine
  * @max_cpus: the maximum number of logical processors on the machine
  */
 typedef struct CpuTopology {
     unsigned int cpus;
     unsigned int cores;
     unsigned int threads;
+    unsigned int sockets;
     unsigned int max_cpus;
 } CpuTopology;
 
index e1d6ee00b4077973ef961b2b04bce20fdd1f438b..5bf94d28cfff87ee209a98c51a8701445477064d 100644 (file)
@@ -79,7 +79,6 @@ struct TranslationBlock;
  * @class_by_name: Callback to map -cpu command line model name to an
  * instantiatable CPU type.
  * @parse_features: Callback to parse command line arguments.
- * @reset: Callback to reset the #CPUState to its initial state.
  * @reset_dump_flags: #CPUDumpFlags to use for reset logging.
  * @has_work: Callback for checking if there is work to do.
  * @do_interrupt: Callback for interrupt handling.
@@ -165,7 +164,6 @@ typedef struct CPUClass {
     ObjectClass *(*class_by_name)(const char *cpu_model);
     void (*parse_features)(const char *typename, char *str, Error **errp);
 
-    void (*reset)(CPUState *cpu);
     int reset_dump_flags;
     bool (*has_work)(CPUState *cpu);
     void (*do_interrupt)(CPUState *cpu);
@@ -1135,10 +1133,6 @@ void cpu_exec_unrealizefn(CPUState *cpu);
  */
 bool target_words_bigendian(void);
 
-void cpu_class_set_parent_reset(CPUClass *cc,
-                                void (*child_reset)(CPUState *cpu),
-                                void (**parent_reset)(CPUState *cpu));
-
 #ifdef NEED_CPU_H
 
 #ifdef CONFIG_SOFTMMU
index 4ff5b2da6c3b18208b8812703ad6bf0d4e216618..b9593b9905042c0f190864b652f1374dc167f616 100644 (file)
  */
 typedef uint32_t apic_id_t;
 
-typedef struct X86CPUTopoInfo {
+typedef struct X86CPUTopoIDs {
     unsigned pkg_id;
     unsigned die_id;
     unsigned core_id;
     unsigned smt_id;
+} X86CPUTopoIDs;
+
+typedef struct X86CPUTopoInfo {
+    unsigned nodes_per_pkg;
+    unsigned dies_per_pkg;
+    unsigned cores_per_die;
+    unsigned threads_per_core;
 } X86CPUTopoInfo;
 
 /* Return the bit width needed for 'count' IDs
@@ -63,120 +70,102 @@ static unsigned apicid_bitwidth_for_count(unsigned count)
 
 /* Bit width of the SMT_ID (thread ID) field on the APIC ID
  */
-static inline unsigned apicid_smt_width(unsigned nr_dies,
-                                        unsigned nr_cores,
-                                        unsigned nr_threads)
+static inline unsigned apicid_smt_width(X86CPUTopoInfo *topo_info)
 {
-    return apicid_bitwidth_for_count(nr_threads);
+    return apicid_bitwidth_for_count(topo_info->threads_per_core);
 }
 
 /* Bit width of the Core_ID field
  */
-static inline unsigned apicid_core_width(unsigned nr_dies,
-                                         unsigned nr_cores,
-                                         unsigned nr_threads)
+static inline unsigned apicid_core_width(X86CPUTopoInfo *topo_info)
 {
-    return apicid_bitwidth_for_count(nr_cores);
+    return apicid_bitwidth_for_count(topo_info->cores_per_die);
 }
 
 /* Bit width of the Die_ID field */
-static inline unsigned apicid_die_width(unsigned nr_dies,
-                                        unsigned nr_cores,
-                                        unsigned nr_threads)
+static inline unsigned apicid_die_width(X86CPUTopoInfo *topo_info)
 {
-    return apicid_bitwidth_for_count(nr_dies);
+    return apicid_bitwidth_for_count(topo_info->dies_per_pkg);
 }
 
 /* Bit offset of the Core_ID field
  */
-static inline unsigned apicid_core_offset(unsigned nr_dies,
-                                          unsigned nr_cores,
-                                          unsigned nr_threads)
+static inline unsigned apicid_core_offset(X86CPUTopoInfo *topo_info)
 {
-    return apicid_smt_width(nr_dies, nr_cores, nr_threads);
+    return apicid_smt_width(topo_info);
 }
 
 /* Bit offset of the Die_ID field */
-static inline unsigned apicid_die_offset(unsigned nr_dies,
-                                          unsigned nr_cores,
-                                           unsigned nr_threads)
+static inline unsigned apicid_die_offset(X86CPUTopoInfo *topo_info)
 {
-    return apicid_core_offset(nr_dies, nr_cores, nr_threads) +
-           apicid_core_width(nr_dies, nr_cores, nr_threads);
+    return apicid_core_offset(topo_info) + apicid_core_width(topo_info);
 }
 
 /* Bit offset of the Pkg_ID (socket ID) field
  */
-static inline unsigned apicid_pkg_offset(unsigned nr_dies,
-                                         unsigned nr_cores,
-                                         unsigned nr_threads)
+static inline unsigned apicid_pkg_offset(X86CPUTopoInfo *topo_info)
 {
-    return apicid_die_offset(nr_dies, nr_cores, nr_threads) +
-           apicid_die_width(nr_dies, nr_cores, nr_threads);
+    return apicid_die_offset(topo_info) + apicid_die_width(topo_info);
 }
 
 /* Make APIC ID for the CPU based on Pkg_ID, Core_ID, SMT_ID
  *
  * The caller must make sure core_id < nr_cores and smt_id < nr_threads.
  */
-static inline apic_id_t apicid_from_topo_ids(unsigned nr_dies,
-                                             unsigned nr_cores,
-                                             unsigned nr_threads,
-                                             const X86CPUTopoInfo *topo)
+static inline apic_id_t x86_apicid_from_topo_ids(X86CPUTopoInfo *topo_info,
+                                                 const X86CPUTopoIDs *topo_ids)
 {
-    return (topo->pkg_id  << apicid_pkg_offset(nr_dies, nr_cores, nr_threads)) |
-           (topo->die_id  << apicid_die_offset(nr_dies, nr_cores, nr_threads)) |
-          (topo->core_id << apicid_core_offset(nr_dies, nr_cores, nr_threads)) |
-           topo->smt_id;
+    return (topo_ids->pkg_id  << apicid_pkg_offset(topo_info)) |
+           (topo_ids->die_id  << apicid_die_offset(topo_info)) |
+           (topo_ids->core_id << apicid_core_offset(topo_info)) |
+           topo_ids->smt_id;
 }
 
 /* Calculate thread/core/package IDs for a specific topology,
  * based on (contiguous) CPU index
  */
-static inline void x86_topo_ids_from_idx(unsigned nr_dies,
-                                         unsigned nr_cores,
-                                         unsigned nr_threads,
+static inline void x86_topo_ids_from_idx(X86CPUTopoInfo *topo_info,
                                          unsigned cpu_index,
-                                         X86CPUTopoInfo *topo)
+                                         X86CPUTopoIDs *topo_ids)
 {
-    topo->pkg_id = cpu_index / (nr_dies * nr_cores * nr_threads);
-    topo->die_id = cpu_index / (nr_cores * nr_threads) % nr_dies;
-    topo->core_id = cpu_index / nr_threads % nr_cores;
-    topo->smt_id = cpu_index % nr_threads;
+    unsigned nr_dies = topo_info->dies_per_pkg;
+    unsigned nr_cores = topo_info->cores_per_die;
+    unsigned nr_threads = topo_info->threads_per_core;
+
+    topo_ids->pkg_id = cpu_index / (nr_dies * nr_cores * nr_threads);
+    topo_ids->die_id = cpu_index / (nr_cores * nr_threads) % nr_dies;
+    topo_ids->core_id = cpu_index / nr_threads % nr_cores;
+    topo_ids->smt_id = cpu_index % nr_threads;
 }
 
 /* Calculate thread/core/package IDs for a specific topology,
  * based on APIC ID
  */
 static inline void x86_topo_ids_from_apicid(apic_id_t apicid,
-                                            unsigned nr_dies,
-                                            unsigned nr_cores,
-                                            unsigned nr_threads,
-                                            X86CPUTopoInfo *topo)
+                                            X86CPUTopoInfo *topo_info,
+                                            X86CPUTopoIDs *topo_ids)
 {
-    topo->smt_id = apicid &
-            ~(0xFFFFFFFFUL << apicid_smt_width(nr_dies, nr_cores, nr_threads));
-    topo->core_id =
-            (apicid >> apicid_core_offset(nr_dies, nr_cores, nr_threads)) &
-            ~(0xFFFFFFFFUL << apicid_core_width(nr_dies, nr_cores, nr_threads));
-    topo->die_id =
-            (apicid >> apicid_die_offset(nr_dies, nr_cores, nr_threads)) &
-            ~(0xFFFFFFFFUL << apicid_die_width(nr_dies, nr_cores, nr_threads));
-    topo->pkg_id = apicid >> apicid_pkg_offset(nr_dies, nr_cores, nr_threads);
+    topo_ids->smt_id = apicid &
+            ~(0xFFFFFFFFUL << apicid_smt_width(topo_info));
+    topo_ids->core_id =
+            (apicid >> apicid_core_offset(topo_info)) &
+            ~(0xFFFFFFFFUL << apicid_core_width(topo_info));
+    topo_ids->die_id =
+            (apicid >> apicid_die_offset(topo_info)) &
+            ~(0xFFFFFFFFUL << apicid_die_width(topo_info));
+    topo_ids->pkg_id = apicid >> apicid_pkg_offset(topo_info);
 }
 
 /* Make APIC ID for the CPU 'cpu_index'
  *
  * 'cpu_index' is a sequential, contiguous ID for the CPU.
  */
-static inline apic_id_t x86_apicid_from_cpu_idx(unsigned nr_dies,
-                                                unsigned nr_cores,
-                                                unsigned nr_threads,
+static inline apic_id_t x86_apicid_from_cpu_idx(X86CPUTopoInfo *topo_info,
                                                 unsigned cpu_index)
 {
-    X86CPUTopoInfo topo;
-    x86_topo_ids_from_idx(nr_dies, nr_cores, nr_threads, cpu_index, &topo);
-    return apicid_from_topo_ids(nr_dies, nr_cores, nr_threads, &topo);
+    X86CPUTopoIDs topo_ids;
+    x86_topo_ids_from_idx(topo_info, cpu_index, &topo_ids);
+    return x86_apicid_from_topo_ids(topo_info, &topo_ids);
 }
 
 #endif /* HW_I386_TOPOLOGY_H */
index 41fe37b8a371f6130f9bc9087594550e0a011f3b..22babcb3bb8d0f77d93ce5e3dec73b522a7a5636 100644 (file)
@@ -21,6 +21,7 @@
 #include "exec/hwaddr.h"
 #include "qemu/notify.h"
 
+#include "hw/i386/topology.h"
 #include "hw/boards.h"
 #include "hw/nmi.h"
 #include "hw/isa/isa.h"
@@ -82,6 +83,8 @@ typedef struct {
 #define X86_MACHINE_CLASS(class) \
     OBJECT_CLASS_CHECK(X86MachineClass, class, TYPE_X86_MACHINE)
 
+void init_topo_info(X86CPUTopoInfo *topo_info, const X86MachineState *x86ms);
+
 uint32_t x86_cpu_apic_id_from_index(X86MachineState *pcms,
                                     unsigned int cpu_index);
 
index 28d8a06439fb64d6f7843a4cdbe924425a39162f..c5ce5da4f478d31f61297eb981fc711932aab7ac 100644 (file)
@@ -2,23 +2,14 @@
 #define HW_IDE_H
 
 #include "hw/isa/isa.h"
-#include "hw/pci/pci.h"
 #include "exec/memory.h"
 
-#define MAX_IDE_DEVS   2
-
 /* ide-isa.c */
 ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int isairq,
                         DriveInfo *hd0, DriveInfo *hd1);
 
 /* ide-pci.c */
-void pci_cmd646_ide_init(PCIBus *bus, DriveInfo **hd_table,
-                         int secondary_ide_enabled);
-PCIDevice *pci_piix3_xen_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
-PCIDevice *pci_piix3_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
-PCIDevice *pci_piix4_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
 int pci_piix3_xen_ide_unplug(DeviceState *dev, bool aux);
-void via_ide_init(PCIBus *bus, DriveInfo **hd_table, int devfn);
 
 /* ide-mmio.c */
 void mmio_ide_init_drives(DeviceState *dev, DriveInfo *hd0, DriveInfo *hd1);
index 1bc1fc73e5fa13a05ef062e57882a0e3ea23af3f..55da35d768cf2f6cd56b1672f3291f21fef1d7ee 100644 (file)
@@ -27,6 +27,8 @@ typedef struct IDEDMAOps IDEDMAOps;
 #define TYPE_IDE_BUS "IDE"
 #define IDE_BUS(obj) OBJECT_CHECK(IDEBus, (obj), TYPE_IDE_BUS)
 
+#define MAX_IDE_DEVS 2
+
 /* Bits of HD_STATUS */
 #define ERR_STAT               0x01
 #define INDEX_STAT             0x02
index a9f2c33e68b180d6e34ffa5e1b1e64debd5ed5d9..dd504e5a0b97d3dbca8e9d770aa7b6c6b73201f6 100644 (file)
@@ -2,6 +2,7 @@
 #define HW_IDE_PCI_H
 
 #include "hw/ide/internal.h"
+#include "hw/pci/pci.h"
 
 #define BM_STATUS_DMAING 0x01
 #define BM_STATUS_ERROR  0x02
@@ -62,7 +63,7 @@ static inline IDEState *bmdma_active_if(BMDMAState *bmdma)
 void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
 void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
 extern MemoryRegionOps bmdma_addr_ioport_ops;
-void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
+void pci_ide_create_devs(PCIDevice *dev);
 
 extern const VMStateDescription vmstate_ide_pci;
 extern const MemoryRegionOps pci_ide_cmd_le_ops;
index 070a694eb536a373079f59e2e78f758a4cf8e78b..87335a991c57cd5ef861327871d65c6b6ead5cee 100644 (file)
@@ -27,6 +27,7 @@
 #define MACIO_H
 
 #include "hw/char/escc.h"
+#include "hw/pci/pci.h"
 #include "hw/ide/internal.h"
 #include "hw/intc/heathrow_pic.h"
 #include "hw/misc/macio/cuda.h"
index 2659a587372bbe39395c5301b262d62f86dd3755..0407edb7ecf95fe292313260ad6692d2e345d9ee 100644 (file)
     enum { A_ ## reg = (addr) };                                          \
     enum { R_ ## reg = (addr) / 4 };
 
+#define REG8(reg, addr)                                                   \
+    enum { A_ ## reg = (addr) };                                          \
+    enum { R_ ## reg = (addr) };
+
+#define REG16(reg, addr)                                                  \
+    enum { A_ ## reg = (addr) };                                          \
+    enum { R_ ## reg = (addr) / 2 };
+
 /* Define SHIFT, LENGTH and MASK constants for a field within a register */
 
 /* This macro will define R_FOO_BAR_MASK, R_FOO_BAR_SHIFT and R_FOO_BAR_LENGTH
                                         MAKE_64BIT_MASK(shift, length)};
 
 /* Extract a field from a register */
+#define FIELD_EX8(storage, reg, field)                                    \
+    extract8((storage), R_ ## reg ## _ ## field ## _SHIFT,                \
+              R_ ## reg ## _ ## field ## _LENGTH)
+#define FIELD_EX16(storage, reg, field)                                   \
+    extract16((storage), R_ ## reg ## _ ## field ## _SHIFT,               \
+              R_ ## reg ## _ ## field ## _LENGTH)
 #define FIELD_EX32(storage, reg, field)                                   \
     extract32((storage), R_ ## reg ## _ ## field ## _SHIFT,               \
               R_ ## reg ## _ ## field ## _LENGTH)
  * Assigning values larger then the target field will result in
  * compilation warnings.
  */
+#define FIELD_DP8(storage, reg, field, val) ({                            \
+    struct {                                                              \
+        unsigned int v:R_ ## reg ## _ ## field ## _LENGTH;                \
+    } v = { .v = val };                                                   \
+    uint8_t d;                                                            \
+    d = deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT,           \
+                  R_ ## reg ## _ ## field ## _LENGTH, v.v);               \
+    d; })
+#define FIELD_DP16(storage, reg, field, val) ({                           \
+    struct {                                                              \
+        unsigned int v:R_ ## reg ## _ ## field ## _LENGTH;                \
+    } v = { .v = val };                                                   \
+    uint16_t d;                                                           \
+    d = deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT,           \
+                  R_ ## reg ## _ ## field ## _LENGTH, v.v);               \
+    d; })
 #define FIELD_DP32(storage, reg, field, val) ({                           \
     struct {                                                              \
         unsigned int v:R_ ## reg ## _ ## field ## _LENGTH;                \
index 152628c6d9f84ce647b4b446283069ec6bfba6b5..02bd7412096e03ed9e66706dc26108317f3c99d7 100644 (file)
@@ -68,7 +68,6 @@ extern PCIDevice *piix4_dev;
 
 PIIX3State *piix3_create(PCIBus *pci_bus, ISABus **isa_bus);
 
-DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
-                          I2CBus **smbus, size_t ide_buses);
+DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus, I2CBus **smbus);
 
 #endif
index 082da59e852ffa420fdc99e29eb8adf19f3c90d6..d0142f29ac1a3a3a85d7d88b3dd9c2eaa6e75edd 100644 (file)
@@ -13,7 +13,7 @@
 #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
 
 /* Copyright string for -version arguments, About dialogs, etc */
-#define QEMU_COPYRIGHT "Copyright (c) 2003-2019 " \
+#define QEMU_COPYRIGHT "Copyright (c) 2003-2020 " \
     "Fabrice Bellard and the QEMU Project developers"
 
 /* Bug reporting information for --help arguments, About dialogs, etc */
index 1bf944ca3d135ef107806f093be65d219d52c0bd..5e71b6d6f7404d1881e6cecb264261e0143f5087 100644 (file)
@@ -297,12 +297,18 @@ void hbitmap_free(HBitmap *hb);
  */
 void hbitmap_iter_init(HBitmapIter *hbi, const HBitmap *hb, uint64_t first);
 
-/* hbitmap_iter_skip_words:
- * @hbi: HBitmapIter to operate on.
+/*
+ * hbitmap_next_dirty:
+ *
+ * Find next dirty bit within selected range. If not found, return -1.
  *
- * Internal function used by hbitmap_iter_next and hbitmap_iter_next_word.
+ * @hb: The HBitmap to operate on
+ * @start: The bit to start from.
+ * @count: Number of bits to proceed. If @start+@count > bitmap size, the whole
+ * bitmap is looked through. You can use INT64_MAX as @count to search up to
+ * the bitmap end.
  */
-unsigned long hbitmap_iter_skip_words(HBitmapIter *hbi);
+int64_t hbitmap_next_dirty(const HBitmap *hb, int64_t start, int64_t count);
 
 /* hbitmap_next_zero:
  *
@@ -311,47 +317,28 @@ unsigned long hbitmap_iter_skip_words(HBitmapIter *hbi);
  * @hb: The HBitmap to operate on
  * @start: The bit to start from.
  * @count: Number of bits to proceed. If @start+@count > bitmap size, the whole
- * bitmap is looked through. You can use UINT64_MAX as @count to search up to
+ * bitmap is looked through. You can use INT64_MAX as @count to search up to
  * the bitmap end.
  */
-int64_t hbitmap_next_zero(const HBitmap *hb, uint64_t start, uint64_t count);
+int64_t hbitmap_next_zero(const HBitmap *hb, int64_t start, int64_t count);
 
 /* hbitmap_next_dirty_area:
  * @hb: The HBitmap to operate on
- * @start: in-out parameter.
- *         in: the offset to start from
- *         out: (if area found) start of found area
- * @count: in-out parameter.
- *         in: length of requested region
- *         out: length of found area
- *
- * If dirty area found within [@start, @start + @count), returns true and sets
- * @offset and @bytes appropriately. Otherwise returns false and leaves @offset
- * and @bytes unchanged.
- */
-bool hbitmap_next_dirty_area(const HBitmap *hb, uint64_t *start,
-                             uint64_t *count);
-
-/* hbitmap_create_meta:
- * Create a "meta" hbitmap to track dirtiness of the bits in this HBitmap.
- * The caller owns the created bitmap and must call hbitmap_free_meta(hb) to
- * free it.
- *
- * Currently, we only guarantee that if a bit in the hbitmap is changed it
- * will be reflected in the meta bitmap, but we do not yet guarantee the
- * opposite.
- *
- * @hb: The HBitmap to operate on.
- * @chunk_size: How many bits in @hb does one bit in the meta track.
- */
-HBitmap *hbitmap_create_meta(HBitmap *hb, int chunk_size);
-
-/* hbitmap_free_meta:
- * Free the meta bitmap of @hb.
- *
- * @hb: The HBitmap whose meta bitmap should be freed.
- */
-void hbitmap_free_meta(HBitmap *hb);
+ * @start: the offset to start from
+ * @end: end of requested area
+ * @max_dirty_count: limit for out parameter dirty_count
+ * @dirty_start: on success: start of found area
+ * @dirty_count: on success: length of found area
+ *
+ * If dirty area found within [@start, @end), returns true and sets
+ * @dirty_start and @dirty_count appropriately. @dirty_count will not exceed
+ * @max_dirty_count.
+ * If dirty area was not found, returns false and leaves @dirty_start and
+ * @dirty_count unchanged.
+ */
+bool hbitmap_next_dirty_area(const HBitmap *hb, int64_t start, int64_t end,
+                             int64_t max_dirty_count,
+                             int64_t *dirty_start, int64_t *dirty_count);
 
 /**
  * hbitmap_iter_next:
@@ -362,34 +349,4 @@ void hbitmap_free_meta(HBitmap *hb);
  */
 int64_t hbitmap_iter_next(HBitmapIter *hbi);
 
-/**
- * hbitmap_iter_next_word:
- * @hbi: HBitmapIter to operate on.
- * @p_cur: Location where to store the next non-zero word.
- *
- * Return the index of the next nonzero word that is set in @hbi's
- * associated HBitmap, and set *p_cur to the content of that word
- * (bits before the index that was passed to hbitmap_iter_init are
- * trimmed on the first call).  Return -1, and set *p_cur to zero,
- * if all remaining words are zero.
- */
-static inline size_t hbitmap_iter_next_word(HBitmapIter *hbi, unsigned long *p_cur)
-{
-    unsigned long cur = hbi->cur[HBITMAP_LEVELS - 1];
-
-    if (cur == 0) {
-        cur = hbitmap_iter_skip_words(hbi);
-        if (cur == 0) {
-            *p_cur = 0;
-            return -1;
-        }
-    }
-
-    /* The next call will resume work from the next word.  */
-    hbi->cur[HBITMAP_LEVELS - 1] = 0;
-    *p_cur = cur;
-    return hbi->pos;
-}
-
-
 #endif
index 01392dc945f13be46ea50dd1d790dc6f47a9bb1a..71a7a285ee69b7f23194c34547ed56bdb79dac82 100644 (file)
@@ -24,6 +24,7 @@ enum {
     QEMU_ARCH_NIOS2 = (1 << 17),
     QEMU_ARCH_HPPA = (1 << 18),
     QEMU_ARCH_RISCV = (1 << 19),
+    QEMU_ARCH_RX = (1 << 20),
 
     QEMU_ARCH_NONE = (1 << 31),
 };
index d2f33beb5e52efce6adc7fb85b7f1e11776ee766..1940910a7321c5a44d29c2602f9eb64db4da2c1b 100644 (file)
@@ -5,6 +5,21 @@ 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_I386) += i386/
+obj-$(TARGET_M68K) += m68k/
+obj-$(TARGET_MICROBLAZE) += microblaze/
+obj-$(TARGET_MIPS) += mips/
+obj-$(TARGET_MIPS64) += mips64/
+obj-$(TARGET_PPC) += ppc/
+obj-$(TARGET_PPC64) += ppc/
+obj-$(TARGET_S390X) += s390x/
+obj-$(TARGET_SH4) += sh4/
+obj-$(TARGET_SPARC) += sparc/
+obj-$(TARGET_SPARC64) += $(TARGET_ABI_DIR)/
+obj-$(TARGET_X86_64) += x86_64/
+obj-$(TARGET_XTENSA) += xtensa/
index f00ffd7fb82fb553a2f9951dc6d7b536f4c3fd10..85de000b2490abc609310bef817a07dda7a6bbed 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * This file contains the system call numbers.
+ * Do not modify.
+ * This file is generated by scripts/gensyscalls.sh
  */
-
 #ifndef LINUX_USER_AARCH64_SYSCALL_NR_H
 #define LINUX_USER_AARCH64_SYSCALL_NR_H
 
@@ -84,7 +85,7 @@
 #define TARGET_NR_splice 76
 #define TARGET_NR_tee 77
 #define TARGET_NR_readlinkat 78
-#define TARGET_NR_fstatat64 79
+#define TARGET_NR_newfstatat 79
 #define TARGET_NR_fstat 80
 #define TARGET_NR_sync 81
 #define TARGET_NR_fsync 82
 #define TARGET_NR_prlimit64 261
 #define TARGET_NR_fanotify_init 262
 #define TARGET_NR_fanotify_mark 263
-#define TARGET_NR_name_to_handle_at         264
-#define TARGET_NR_open_by_handle_at         265
+#define TARGET_NR_name_to_handle_at 264
+#define TARGET_NR_open_by_handle_at 265
 #define TARGET_NR_clock_adjtime 266
 #define TARGET_NR_syncfs 267
 #define TARGET_NR_setns 268
 #define TARGET_NR_membarrier 283
 #define TARGET_NR_mlock2 284
 #define TARGET_NR_copy_file_range 285
+#define TARGET_NR_preadv2 286
+#define TARGET_NR_pwritev2 287
+#define TARGET_NR_pkey_mprotect 288
+#define TARGET_NR_pkey_alloc 289
+#define TARGET_NR_pkey_free 290
+#define TARGET_NR_statx 291
+#define TARGET_NR_io_pgetevents 292
+#define TARGET_NR_rseq 293
+#define TARGET_NR_kexec_file_load 294
+#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
+#define TARGET_NR_syscalls 436
+
+#endif /* LINUX_USER_AARCH64_SYSCALL_NR_H */
 
-#endif
diff --git a/linux-user/alpha/Makefile.objs b/linux-user/alpha/Makefile.objs
new file mode 100644 (file)
index 0000000..d6397a7
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/alpha/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/alpha/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/alpha/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/alpha/syscall.tbl b/linux-user/alpha/syscall.tbl
new file mode 100644 (file)
index 0000000..36d42da
--- /dev/null
@@ -0,0 +1,479 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for alpha
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "common" for this file
+#
+0      common  osf_syscall                     alpha_syscall_zero
+1      common  exit                            sys_exit
+2      common  fork                            alpha_fork
+3      common  read                            sys_read
+4      common  write                           sys_write
+5      common  osf_old_open                    sys_ni_syscall
+6      common  close                           sys_close
+7      common  osf_wait4                       sys_osf_wait4
+8      common  osf_old_creat                   sys_ni_syscall
+9      common  link                            sys_link
+10     common  unlink                          sys_unlink
+11     common  osf_execve                      sys_ni_syscall
+12     common  chdir                           sys_chdir
+13     common  fchdir                          sys_fchdir
+14     common  mknod                           sys_mknod
+15     common  chmod                           sys_chmod
+16     common  chown                           sys_chown
+17     common  brk                             sys_osf_brk
+18     common  osf_getfsstat                   sys_ni_syscall
+19     common  lseek                           sys_lseek
+20     common  getxpid                         sys_getxpid
+21     common  osf_mount                       sys_osf_mount
+22     common  umount2                         sys_umount
+23     common  setuid                          sys_setuid
+24     common  getxuid                         sys_getxuid
+25     common  exec_with_loader                sys_ni_syscall
+26     common  ptrace                          sys_ptrace
+27     common  osf_nrecvmsg                    sys_ni_syscall
+28     common  osf_nsendmsg                    sys_ni_syscall
+29     common  osf_nrecvfrom                   sys_ni_syscall
+30     common  osf_naccept                     sys_ni_syscall
+31     common  osf_ngetpeername                sys_ni_syscall
+32     common  osf_ngetsockname                sys_ni_syscall
+33     common  access                          sys_access
+34     common  osf_chflags                     sys_ni_syscall
+35     common  osf_fchflags                    sys_ni_syscall
+36     common  sync                            sys_sync
+37     common  kill                            sys_kill
+38     common  osf_old_stat                    sys_ni_syscall
+39     common  setpgid                         sys_setpgid
+40     common  osf_old_lstat                   sys_ni_syscall
+41     common  dup                             sys_dup
+42     common  pipe                            sys_alpha_pipe
+43     common  osf_set_program_attributes      sys_osf_set_program_attributes
+44     common  osf_profil                      sys_ni_syscall
+45     common  open                            sys_open
+46     common  osf_old_sigaction               sys_ni_syscall
+47     common  getxgid                         sys_getxgid
+48     common  osf_sigprocmask                 sys_osf_sigprocmask
+49     common  osf_getlogin                    sys_ni_syscall
+50     common  osf_setlogin                    sys_ni_syscall
+51     common  acct                            sys_acct
+52     common  sigpending                      sys_sigpending
+54     common  ioctl                           sys_ioctl
+55     common  osf_reboot                      sys_ni_syscall
+56     common  osf_revoke                      sys_ni_syscall
+57     common  symlink                         sys_symlink
+58     common  readlink                        sys_readlink
+59     common  execve                          sys_execve
+60     common  umask                           sys_umask
+61     common  chroot                          sys_chroot
+62     common  osf_old_fstat                   sys_ni_syscall
+63     common  getpgrp                         sys_getpgrp
+64     common  getpagesize                     sys_getpagesize
+65     common  osf_mremap                      sys_ni_syscall
+66     common  vfork                           alpha_vfork
+67     common  stat                            sys_newstat
+68     common  lstat                           sys_newlstat
+69     common  osf_sbrk                        sys_ni_syscall
+70     common  osf_sstk                        sys_ni_syscall
+71     common  mmap                            sys_osf_mmap
+72     common  osf_old_vadvise                 sys_ni_syscall
+73     common  munmap                          sys_munmap
+74     common  mprotect                        sys_mprotect
+75     common  madvise                         sys_madvise
+76     common  vhangup                         sys_vhangup
+77     common  osf_kmodcall                    sys_ni_syscall
+78     common  osf_mincore                     sys_ni_syscall
+79     common  getgroups                       sys_getgroups
+80     common  setgroups                       sys_setgroups
+81     common  osf_old_getpgrp                 sys_ni_syscall
+82     common  setpgrp                         sys_setpgid
+83     common  osf_setitimer                   compat_sys_setitimer
+84     common  osf_old_wait                    sys_ni_syscall
+85     common  osf_table                       sys_ni_syscall
+86     common  osf_getitimer                   compat_sys_getitimer
+87     common  gethostname                     sys_gethostname
+88     common  sethostname                     sys_sethostname
+89     common  getdtablesize                   sys_getdtablesize
+90     common  dup2                            sys_dup2
+91     common  fstat                           sys_newfstat
+92     common  fcntl                           sys_fcntl
+93     common  osf_select                      sys_osf_select
+94     common  poll                            sys_poll
+95     common  fsync                           sys_fsync
+96     common  setpriority                     sys_setpriority
+97     common  socket                          sys_socket
+98     common  connect                         sys_connect
+99     common  accept                          sys_accept
+100    common  getpriority                     sys_osf_getpriority
+101    common  send                            sys_send
+102    common  recv                            sys_recv
+103    common  sigreturn                       sys_sigreturn
+104    common  bind                            sys_bind
+105    common  setsockopt                      sys_setsockopt
+106    common  listen                          sys_listen
+107    common  osf_plock                       sys_ni_syscall
+108    common  osf_old_sigvec                  sys_ni_syscall
+109    common  osf_old_sigblock                sys_ni_syscall
+110    common  osf_old_sigsetmask              sys_ni_syscall
+111    common  sigsuspend                      sys_sigsuspend
+112    common  osf_sigstack                    sys_osf_sigstack
+113    common  recvmsg                         sys_recvmsg
+114    common  sendmsg                         sys_sendmsg
+115    common  osf_old_vtrace                  sys_ni_syscall
+116    common  osf_gettimeofday                sys_osf_gettimeofday
+117    common  osf_getrusage                   sys_osf_getrusage
+118    common  getsockopt                      sys_getsockopt
+120    common  readv                           sys_osf_readv
+121    common  writev                          sys_osf_writev
+122    common  osf_settimeofday                sys_osf_settimeofday
+123    common  fchown                          sys_fchown
+124    common  fchmod                          sys_fchmod
+125    common  recvfrom                        sys_recvfrom
+126    common  setreuid                        sys_setreuid
+127    common  setregid                        sys_setregid
+128    common  rename                          sys_rename
+129    common  truncate                        sys_truncate
+130    common  ftruncate                       sys_ftruncate
+131    common  flock                           sys_flock
+132    common  setgid                          sys_setgid
+133    common  sendto                          sys_sendto
+134    common  shutdown                        sys_shutdown
+135    common  socketpair                      sys_socketpair
+136    common  mkdir                           sys_mkdir
+137    common  rmdir                           sys_rmdir
+138    common  osf_utimes                      sys_osf_utimes
+139    common  osf_old_sigreturn               sys_ni_syscall
+140    common  osf_adjtime                     sys_ni_syscall
+141    common  getpeername                     sys_getpeername
+142    common  osf_gethostid                   sys_ni_syscall
+143    common  osf_sethostid                   sys_ni_syscall
+144    common  getrlimit                       sys_getrlimit
+145    common  setrlimit                       sys_setrlimit
+146    common  osf_old_killpg                  sys_ni_syscall
+147    common  setsid                          sys_setsid
+148    common  quotactl                        sys_quotactl
+149    common  osf_oldquota                    sys_ni_syscall
+150    common  getsockname                     sys_getsockname
+153    common  osf_pid_block                   sys_ni_syscall
+154    common  osf_pid_unblock                 sys_ni_syscall
+156    common  sigaction                       sys_osf_sigaction
+157    common  osf_sigwaitprim                 sys_ni_syscall
+158    common  osf_nfssvc                      sys_ni_syscall
+159    common  osf_getdirentries               sys_osf_getdirentries
+160    common  osf_statfs                      sys_osf_statfs
+161    common  osf_fstatfs                     sys_osf_fstatfs
+163    common  osf_asynch_daemon               sys_ni_syscall
+164    common  osf_getfh                       sys_ni_syscall
+165    common  osf_getdomainname               sys_osf_getdomainname
+166    common  setdomainname                   sys_setdomainname
+169    common  osf_exportfs                    sys_ni_syscall
+181    common  osf_alt_plock                   sys_ni_syscall
+184    common  osf_getmnt                      sys_ni_syscall
+187    common  osf_alt_sigpending              sys_ni_syscall
+188    common  osf_alt_setsid                  sys_ni_syscall
+199    common  osf_swapon                      sys_swapon
+200    common  msgctl                          sys_old_msgctl
+201    common  msgget                          sys_msgget
+202    common  msgrcv                          sys_msgrcv
+203    common  msgsnd                          sys_msgsnd
+204    common  semctl                          sys_old_semctl
+205    common  semget                          sys_semget
+206    common  semop                           sys_semop
+207    common  osf_utsname                     sys_osf_utsname
+208    common  lchown                          sys_lchown
+209    common  shmat                           sys_shmat
+210    common  shmctl                          sys_old_shmctl
+211    common  shmdt                           sys_shmdt
+212    common  shmget                          sys_shmget
+213    common  osf_mvalid                      sys_ni_syscall
+214    common  osf_getaddressconf              sys_ni_syscall
+215    common  osf_msleep                      sys_ni_syscall
+216    common  osf_mwakeup                     sys_ni_syscall
+217    common  msync                           sys_msync
+218    common  osf_signal                      sys_ni_syscall
+219    common  osf_utc_gettime                 sys_ni_syscall
+220    common  osf_utc_adjtime                 sys_ni_syscall
+222    common  osf_security                    sys_ni_syscall
+223    common  osf_kloadcall                   sys_ni_syscall
+224    common  osf_stat                        sys_osf_stat
+225    common  osf_lstat                       sys_osf_lstat
+226    common  osf_fstat                       sys_osf_fstat
+227    common  osf_statfs64                    sys_osf_statfs64
+228    common  osf_fstatfs64                   sys_osf_fstatfs64
+233    common  getpgid                         sys_getpgid
+234    common  getsid                          sys_getsid
+235    common  sigaltstack                     sys_sigaltstack
+236    common  osf_waitid                      sys_ni_syscall
+237    common  osf_priocntlset                 sys_ni_syscall
+238    common  osf_sigsendset                  sys_ni_syscall
+239    common  osf_set_speculative             sys_ni_syscall
+240    common  osf_msfs_syscall                sys_ni_syscall
+241    common  osf_sysinfo                     sys_osf_sysinfo
+242    common  osf_uadmin                      sys_ni_syscall
+243    common  osf_fuser                       sys_ni_syscall
+244    common  osf_proplist_syscall            sys_osf_proplist_syscall
+245    common  osf_ntp_adjtime                 sys_ni_syscall
+246    common  osf_ntp_gettime                 sys_ni_syscall
+247    common  osf_pathconf                    sys_ni_syscall
+248    common  osf_fpathconf                   sys_ni_syscall
+250    common  osf_uswitch                     sys_ni_syscall
+251    common  osf_usleep_thread               sys_osf_usleep_thread
+252    common  osf_audcntl                     sys_ni_syscall
+253    common  osf_audgen                      sys_ni_syscall
+254    common  sysfs                           sys_sysfs
+255    common  osf_subsys_info                 sys_ni_syscall
+256    common  osf_getsysinfo                  sys_osf_getsysinfo
+257    common  osf_setsysinfo                  sys_osf_setsysinfo
+258    common  osf_afs_syscall                 sys_ni_syscall
+259    common  osf_swapctl                     sys_ni_syscall
+260    common  osf_memcntl                     sys_ni_syscall
+261    common  osf_fdatasync                   sys_ni_syscall
+300    common  bdflush                         sys_bdflush
+301    common  sethae                          sys_sethae
+302    common  mount                           sys_mount
+303    common  old_adjtimex                    sys_old_adjtimex
+304    common  swapoff                         sys_swapoff
+305    common  getdents                        sys_getdents
+306    common  create_module                   sys_ni_syscall
+307    common  init_module                     sys_init_module
+308    common  delete_module                   sys_delete_module
+309    common  get_kernel_syms                 sys_ni_syscall
+310    common  syslog                          sys_syslog
+311    common  reboot                          sys_reboot
+312    common  clone                           alpha_clone
+313    common  uselib                          sys_uselib
+314    common  mlock                           sys_mlock
+315    common  munlock                         sys_munlock
+316    common  mlockall                        sys_mlockall
+317    common  munlockall                      sys_munlockall
+318    common  sysinfo                         sys_sysinfo
+319    common  _sysctl                         sys_sysctl
+# 320 was sys_idle
+321    common  oldumount                       sys_oldumount
+322    common  swapon                          sys_swapon
+323    common  times                           sys_times
+324    common  personality                     sys_personality
+325    common  setfsuid                        sys_setfsuid
+326    common  setfsgid                        sys_setfsgid
+327    common  ustat                           sys_ustat
+328    common  statfs                          sys_statfs
+329    common  fstatfs                         sys_fstatfs
+330    common  sched_setparam                  sys_sched_setparam
+331    common  sched_getparam                  sys_sched_getparam
+332    common  sched_setscheduler              sys_sched_setscheduler
+333    common  sched_getscheduler              sys_sched_getscheduler
+334    common  sched_yield                     sys_sched_yield
+335    common  sched_get_priority_max          sys_sched_get_priority_max
+336    common  sched_get_priority_min          sys_sched_get_priority_min
+337    common  sched_rr_get_interval           sys_sched_rr_get_interval
+338    common  afs_syscall                     sys_ni_syscall
+339    common  uname                           sys_newuname
+340    common  nanosleep                       sys_nanosleep
+341    common  mremap                          sys_mremap
+342    common  nfsservctl                      sys_ni_syscall
+343    common  setresuid                       sys_setresuid
+344    common  getresuid                       sys_getresuid
+345    common  pciconfig_read                  sys_pciconfig_read
+346    common  pciconfig_write                 sys_pciconfig_write
+347    common  query_module                    sys_ni_syscall
+348    common  prctl                           sys_prctl
+349    common  pread64                         sys_pread64
+350    common  pwrite64                        sys_pwrite64
+351    common  rt_sigreturn                    sys_rt_sigreturn
+352    common  rt_sigaction                    sys_rt_sigaction
+353    common  rt_sigprocmask                  sys_rt_sigprocmask
+354    common  rt_sigpending                   sys_rt_sigpending
+355    common  rt_sigtimedwait                 sys_rt_sigtimedwait
+356    common  rt_sigqueueinfo                 sys_rt_sigqueueinfo
+357    common  rt_sigsuspend                   sys_rt_sigsuspend
+358    common  select                          sys_select
+359    common  gettimeofday                    sys_gettimeofday
+360    common  settimeofday                    sys_settimeofday
+361    common  getitimer                       sys_getitimer
+362    common  setitimer                       sys_setitimer
+363    common  utimes                          sys_utimes
+364    common  getrusage                       sys_getrusage
+365    common  wait4                           sys_wait4
+366    common  adjtimex                        sys_adjtimex
+367    common  getcwd                          sys_getcwd
+368    common  capget                          sys_capget
+369    common  capset                          sys_capset
+370    common  sendfile                        sys_sendfile64
+371    common  setresgid                       sys_setresgid
+372    common  getresgid                       sys_getresgid
+373    common  dipc                            sys_ni_syscall
+374    common  pivot_root                      sys_pivot_root
+375    common  mincore                         sys_mincore
+376    common  pciconfig_iobase                sys_pciconfig_iobase
+377    common  getdents64                      sys_getdents64
+378    common  gettid                          sys_gettid
+379    common  readahead                       sys_readahead
+# 380 is unused
+381    common  tkill                           sys_tkill
+382    common  setxattr                        sys_setxattr
+383    common  lsetxattr                       sys_lsetxattr
+384    common  fsetxattr                       sys_fsetxattr
+385    common  getxattr                        sys_getxattr
+386    common  lgetxattr                       sys_lgetxattr
+387    common  fgetxattr                       sys_fgetxattr
+388    common  listxattr                       sys_listxattr
+389    common  llistxattr                      sys_llistxattr
+390    common  flistxattr                      sys_flistxattr
+391    common  removexattr                     sys_removexattr
+392    common  lremovexattr                    sys_lremovexattr
+393    common  fremovexattr                    sys_fremovexattr
+394    common  futex                           sys_futex
+395    common  sched_setaffinity               sys_sched_setaffinity
+396    common  sched_getaffinity               sys_sched_getaffinity
+397    common  tuxcall                         sys_ni_syscall
+398    common  io_setup                        sys_io_setup
+399    common  io_destroy                      sys_io_destroy
+400    common  io_getevents                    sys_io_getevents
+401    common  io_submit                       sys_io_submit
+402    common  io_cancel                       sys_io_cancel
+405    common  exit_group                      sys_exit_group
+406    common  lookup_dcookie                  sys_lookup_dcookie
+407    common  epoll_create                    sys_epoll_create
+408    common  epoll_ctl                       sys_epoll_ctl
+409    common  epoll_wait                      sys_epoll_wait
+410    common  remap_file_pages                sys_remap_file_pages
+411    common  set_tid_address                 sys_set_tid_address
+412    common  restart_syscall                 sys_restart_syscall
+413    common  fadvise64                       sys_fadvise64
+414    common  timer_create                    sys_timer_create
+415    common  timer_settime                   sys_timer_settime
+416    common  timer_gettime                   sys_timer_gettime
+417    common  timer_getoverrun                sys_timer_getoverrun
+418    common  timer_delete                    sys_timer_delete
+419    common  clock_settime                   sys_clock_settime
+420    common  clock_gettime                   sys_clock_gettime
+421    common  clock_getres                    sys_clock_getres
+422    common  clock_nanosleep                 sys_clock_nanosleep
+423    common  semtimedop                      sys_semtimedop
+424    common  tgkill                          sys_tgkill
+425    common  stat64                          sys_stat64
+426    common  lstat64                         sys_lstat64
+427    common  fstat64                         sys_fstat64
+428    common  vserver                         sys_ni_syscall
+429    common  mbind                           sys_ni_syscall
+430    common  get_mempolicy                   sys_ni_syscall
+431    common  set_mempolicy                   sys_ni_syscall
+432    common  mq_open                         sys_mq_open
+433    common  mq_unlink                       sys_mq_unlink
+434    common  mq_timedsend                    sys_mq_timedsend
+435    common  mq_timedreceive                 sys_mq_timedreceive
+436    common  mq_notify                       sys_mq_notify
+437    common  mq_getsetattr                   sys_mq_getsetattr
+438    common  waitid                          sys_waitid
+439    common  add_key                         sys_add_key
+440    common  request_key                     sys_request_key
+441    common  keyctl                          sys_keyctl
+442    common  ioprio_set                      sys_ioprio_set
+443    common  ioprio_get                      sys_ioprio_get
+444    common  inotify_init                    sys_inotify_init
+445    common  inotify_add_watch               sys_inotify_add_watch
+446    common  inotify_rm_watch                sys_inotify_rm_watch
+447    common  fdatasync                       sys_fdatasync
+448    common  kexec_load                      sys_kexec_load
+449    common  migrate_pages                   sys_migrate_pages
+450    common  openat                          sys_openat
+451    common  mkdirat                         sys_mkdirat
+452    common  mknodat                         sys_mknodat
+453    common  fchownat                        sys_fchownat
+454    common  futimesat                       sys_futimesat
+455    common  fstatat64                       sys_fstatat64
+456    common  unlinkat                        sys_unlinkat
+457    common  renameat                        sys_renameat
+458    common  linkat                          sys_linkat
+459    common  symlinkat                       sys_symlinkat
+460    common  readlinkat                      sys_readlinkat
+461    common  fchmodat                        sys_fchmodat
+462    common  faccessat                       sys_faccessat
+463    common  pselect6                        sys_pselect6
+464    common  ppoll                           sys_ppoll
+465    common  unshare                         sys_unshare
+466    common  set_robust_list                 sys_set_robust_list
+467    common  get_robust_list                 sys_get_robust_list
+468    common  splice                          sys_splice
+469    common  sync_file_range                 sys_sync_file_range
+470    common  tee                             sys_tee
+471    common  vmsplice                        sys_vmsplice
+472    common  move_pages                      sys_move_pages
+473    common  getcpu                          sys_getcpu
+474    common  epoll_pwait                     sys_epoll_pwait
+475    common  utimensat                       sys_utimensat
+476    common  signalfd                        sys_signalfd
+477    common  timerfd                         sys_ni_syscall
+478    common  eventfd                         sys_eventfd
+479    common  recvmmsg                        sys_recvmmsg
+480    common  fallocate                       sys_fallocate
+481    common  timerfd_create                  sys_timerfd_create
+482    common  timerfd_settime                 sys_timerfd_settime
+483    common  timerfd_gettime                 sys_timerfd_gettime
+484    common  signalfd4                       sys_signalfd4
+485    common  eventfd2                        sys_eventfd2
+486    common  epoll_create1                   sys_epoll_create1
+487    common  dup3                            sys_dup3
+488    common  pipe2                           sys_pipe2
+489    common  inotify_init1                   sys_inotify_init1
+490    common  preadv                          sys_preadv
+491    common  pwritev                         sys_pwritev
+492    common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+493    common  perf_event_open                 sys_perf_event_open
+494    common  fanotify_init                   sys_fanotify_init
+495    common  fanotify_mark                   sys_fanotify_mark
+496    common  prlimit64                       sys_prlimit64
+497    common  name_to_handle_at               sys_name_to_handle_at
+498    common  open_by_handle_at               sys_open_by_handle_at
+499    common  clock_adjtime                   sys_clock_adjtime
+500    common  syncfs                          sys_syncfs
+501    common  setns                           sys_setns
+502    common  accept4                         sys_accept4
+503    common  sendmmsg                        sys_sendmmsg
+504    common  process_vm_readv                sys_process_vm_readv
+505    common  process_vm_writev               sys_process_vm_writev
+506    common  kcmp                            sys_kcmp
+507    common  finit_module                    sys_finit_module
+508    common  sched_setattr                   sys_sched_setattr
+509    common  sched_getattr                   sys_sched_getattr
+510    common  renameat2                       sys_renameat2
+511    common  getrandom                       sys_getrandom
+512    common  memfd_create                    sys_memfd_create
+513    common  execveat                        sys_execveat
+514    common  seccomp                         sys_seccomp
+515    common  bpf                             sys_bpf
+516    common  userfaultfd                     sys_userfaultfd
+517    common  membarrier                      sys_membarrier
+518    common  mlock2                          sys_mlock2
+519    common  copy_file_range                 sys_copy_file_range
+520    common  preadv2                         sys_preadv2
+521    common  pwritev2                        sys_pwritev2
+522    common  statx                           sys_statx
+523    common  io_pgetevents                   sys_io_pgetevents
+524    common  pkey_mprotect                   sys_pkey_mprotect
+525    common  pkey_alloc                      sys_pkey_alloc
+526    common  pkey_free                       sys_pkey_free
+527    common  rseq                            sys_rseq
+528    common  statfs64                        sys_statfs64
+529    common  fstatfs64                       sys_fstatfs64
+530    common  getegid                         sys_getegid
+531    common  geteuid                         sys_geteuid
+532    common  getppid                         sys_getppid
+# all other architectures have common numbers for new syscall, alpha
+# is the exception.
+534    common  pidfd_send_signal               sys_pidfd_send_signal
+535    common  io_uring_setup                  sys_io_uring_setup
+536    common  io_uring_enter                  sys_io_uring_enter
+537    common  io_uring_register               sys_io_uring_register
+538    common  open_tree                       sys_open_tree
+539    common  move_mount                      sys_move_mount
+540    common  fsopen                          sys_fsopen
+541    common  fsconfig                        sys_fsconfig
+542    common  fsmount                         sys_fsmount
+543    common  fspick                          sys_fspick
+544    common  pidfd_open                      sys_pidfd_open
+# 545 reserved for clone3
+547    common  openat2                         sys_openat2
+548    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/alpha/syscall_nr.h b/linux-user/alpha/syscall_nr.h
deleted file mode 100644 (file)
index c29fc17..0000000
+++ /dev/null
@@ -1,492 +0,0 @@
-#ifndef LINUX_USER_ALPHA_SYSCALL_NR_H
-#define LINUX_USER_ALPHA_SYSCALL_NR_H
-
-#define TARGET_NR_osf_syscall    0     /* not implemented */
-#define TARGET_NR_exit           1
-#define TARGET_NR_fork           2
-#define TARGET_NR_read           3
-#define TARGET_NR_write                  4
-#define TARGET_NR_osf_old_open   5     /* not implemented */
-#define TARGET_NR_close                  6
-#define TARGET_NR_osf_wait4              7
-#define TARGET_NR_osf_old_creat          8     /* not implemented */
-#define TARGET_NR_link           9
-#define TARGET_NR_unlink                10
-#define TARGET_NR_osf_execve            11     /* not implemented */
-#define TARGET_NR_chdir                 12
-#define TARGET_NR_fchdir                13
-#define TARGET_NR_mknod                 14
-#define TARGET_NR_chmod                 15
-#define TARGET_NR_chown                 16
-#define TARGET_NR_brk           17
-#define TARGET_NR_osf_getfsstat         18     /* not implemented */
-#define TARGET_NR_lseek                 19
-#define TARGET_NR_getxpid               20
-#define TARGET_NR_osf_mount             21
-#define TARGET_NR_umount2               22
-#define TARGET_NR_setuid                23
-#define TARGET_NR_getxuid               24
-#define TARGET_NR_exec_with_loader      25     /* not implemented */
-#define TARGET_NR_ptrace                26
-#define TARGET_NR_osf_nrecvmsg  27     /* not implemented */
-#define TARGET_NR_osf_nsendmsg  28     /* not implemented */
-#define TARGET_NR_osf_nrecvfrom         29     /* not implemented */
-#define TARGET_NR_osf_naccept   30     /* not implemented */
-#define TARGET_NR_osf_ngetpeername      31     /* not implemented */
-#define TARGET_NR_osf_ngetsockname      32     /* not implemented */
-#define TARGET_NR_access                33
-#define TARGET_NR_osf_chflags   34     /* not implemented */
-#define TARGET_NR_osf_fchflags  35     /* not implemented */
-#define TARGET_NR_sync          36
-#define TARGET_NR_kill          37
-#define TARGET_NR_osf_old_stat  38     /* not implemented */
-#define TARGET_NR_setpgid               39
-#define TARGET_NR_osf_old_lstat         40     /* not implemented */
-#define TARGET_NR_dup           41
-#define TARGET_NR_pipe          42
-#define TARGET_NR_osf_set_program_attributes   43
-#define TARGET_NR_osf_profil            44     /* not implemented */
-#define TARGET_NR_open          45
-#define TARGET_NR_osf_old_sigaction     46     /* not implemented */
-#define TARGET_NR_getxgid               47
-#define TARGET_NR_sigprocmask    48
-#define TARGET_NR_osf_getlogin  49     /* not implemented */
-#define TARGET_NR_osf_setlogin  50     /* not implemented */
-#define TARGET_NR_acct          51
-#define TARGET_NR_sigpending            52
-
-#define TARGET_NR_ioctl                 54
-#define TARGET_NR_osf_reboot            55     /* not implemented */
-#define TARGET_NR_osf_revoke            56     /* not implemented */
-#define TARGET_NR_symlink               57
-#define TARGET_NR_readlink              58
-#define TARGET_NR_execve                59
-#define TARGET_NR_umask                 60
-#define TARGET_NR_chroot                61
-#define TARGET_NR_osf_old_fstat         62     /* not implemented */
-#define TARGET_NR_getpgrp               63
-#define TARGET_NR_getpagesize   64
-#define TARGET_NR_osf_mremap            65     /* not implemented */
-#define TARGET_NR_vfork                 66
-#define TARGET_NR_stat          67
-#define TARGET_NR_lstat                 68
-#define TARGET_NR_osf_sbrk              69     /* not implemented */
-#define TARGET_NR_osf_sstk              70     /* not implemented */
-#define TARGET_NR_mmap          71     /* OSF/1 mmap is superset of Linux */
-#define TARGET_NR_osf_old_vadvise       72     /* not implemented */
-#define TARGET_NR_munmap                73
-#define TARGET_NR_mprotect              74
-#define TARGET_NR_madvise               75
-#define TARGET_NR_vhangup               76
-#define TARGET_NR_osf_kmodcall  77     /* not implemented */
-#define TARGET_NR_osf_mincore   78     /* not implemented */
-#define TARGET_NR_getgroups             79
-#define TARGET_NR_setgroups             80
-#define TARGET_NR_osf_old_getpgrp       81     /* not implemented */
-#define TARGET_NR_setpgrp               82     /* BSD alias for setpgid */
-#define TARGET_NR_osf_setitimer         83
-#define TARGET_NR_osf_old_wait  84     /* not implemented */
-#define TARGET_NR_osf_table             85     /* not implemented */
-#define TARGET_NR_osf_getitimer         86
-#define TARGET_NR_gethostname   87
-#define TARGET_NR_sethostname   88
-#define TARGET_NR_getdtablesize         89
-#define TARGET_NR_dup2          90
-#define TARGET_NR_fstat                 91
-#define TARGET_NR_fcntl                 92
-#define TARGET_NR_osf_select            93
-#define TARGET_NR_poll          94
-#define TARGET_NR_fsync                 95
-#define TARGET_NR_setpriority   96
-#define TARGET_NR_socket                97
-#define TARGET_NR_connect               98
-#define TARGET_NR_accept                99
-#define TARGET_NR_getpriority  100
-#define TARGET_NR_send         101
-#define TARGET_NR_recv         102
-#define TARGET_NR_sigreturn            103
-#define TARGET_NR_bind         104
-#define TARGET_NR_setsockopt           105
-#define TARGET_NR_listen               106
-#define TARGET_NR_osf_plock            107     /* not implemented */
-#define TARGET_NR_osf_old_sigvec       108     /* not implemented */
-#define TARGET_NR_osf_old_sigblock     109     /* not implemented */
-#define TARGET_NR_osf_old_sigsetmask   110     /* not implemented */
-#define TARGET_NR_sigsuspend           111
-#define TARGET_NR_osf_sigstack 112
-#define TARGET_NR_recvmsg              113
-#define TARGET_NR_sendmsg              114
-#define TARGET_NR_osf_old_vtrace       115     /* not implemented */
-#define TARGET_NR_osf_gettimeofday     116
-#define TARGET_NR_osf_getrusage        117
-#define TARGET_NR_getsockopt           118
-
-#define TARGET_NR_readv                120
-#define TARGET_NR_writev               121
-#define TARGET_NR_osf_settimeofday     122
-#define TARGET_NR_fchown               123
-#define TARGET_NR_fchmod               124
-#define TARGET_NR_recvfrom             125
-#define TARGET_NR_setreuid             126
-#define TARGET_NR_setregid             127
-#define TARGET_NR_rename               128
-#define TARGET_NR_truncate             129
-#define TARGET_NR_ftruncate            130
-#define TARGET_NR_flock                131
-#define TARGET_NR_setgid               132
-#define TARGET_NR_sendto               133
-#define TARGET_NR_shutdown             134
-#define TARGET_NR_socketpair           135
-#define TARGET_NR_mkdir                136
-#define TARGET_NR_rmdir                137
-#define TARGET_NR_osf_utimes           138
-#define TARGET_NR_osf_old_sigreturn    139     /* not implemented */
-#define TARGET_NR_osf_adjtime  140     /* not implemented */
-#define TARGET_NR_getpeername  141
-#define TARGET_NR_osf_gethostid        142     /* not implemented */
-#define TARGET_NR_osf_sethostid        143     /* not implemented */
-#define TARGET_NR_getrlimit            144
-#define TARGET_NR_setrlimit            145
-#define TARGET_NR_osf_old_killpg       146     /* not implemented */
-#define TARGET_NR_setsid               147
-#define TARGET_NR_quotactl             148
-#define TARGET_NR_osf_oldquota 149     /* not implemented */
-#define TARGET_NR_getsockname  150
-
-#define TARGET_NR_osf_pid_block        153     /* not implemented */
-#define TARGET_NR_osf_pid_unblock      154     /* not implemented */
-
-#define TARGET_NR_sigaction            156
-#define TARGET_NR_osf_sigwaitprim      157     /* not implemented */
-#define TARGET_NR_osf_nfssvc           158     /* not implemented */
-#define TARGET_NR_osf_getdirentries    159
-#define TARGET_NR_osf_statfs           160
-#define TARGET_NR_osf_fstatfs  161
-
-#define TARGET_NR_osf_asynch_daemon    163     /* not implemented */
-#define TARGET_NR_osf_getfh            164     /* not implemented */
-#define TARGET_NR_osf_getdomainname    165
-#define TARGET_NR_setdomainname        166
-
-#define TARGET_NR_osf_exportfs 169     /* not implemented */
-
-#define TARGET_NR_osf_alt_plock        181     /* not implemented */
-
-#define TARGET_NR_osf_getmnt           184     /* not implemented */
-
-#define TARGET_NR_osf_alt_sigpending   187     /* not implemented */
-#define TARGET_NR_osf_alt_setsid       188     /* not implemented */
-
-#define TARGET_NR_osf_swapon           199
-#define TARGET_NR_msgctl               200
-#define TARGET_NR_msgget               201
-#define TARGET_NR_msgrcv               202
-#define TARGET_NR_msgsnd               203
-#define TARGET_NR_semctl               204
-#define TARGET_NR_semget               205
-#define TARGET_NR_semop                206
-#define TARGET_NR_osf_utsname  207
-#define TARGET_NR_lchown               208
-#define TARGET_NR_osf_shmat            209
-/* this has the usual shmat semantics so give it the name syscall.c expects
- * so that our support for it is enabled.
- */
-#define TARGET_NR_shmat TARGET_NR_osf_shmat
-#define TARGET_NR_shmctl               210
-#define TARGET_NR_shmdt                211
-#define TARGET_NR_shmget               212
-#define TARGET_NR_osf_mvalid           213     /* not implemented */
-#define TARGET_NR_osf_getaddressconf   214     /* not implemented */
-#define TARGET_NR_osf_msleep           215     /* not implemented */
-#define TARGET_NR_osf_mwakeup  216     /* not implemented */
-#define TARGET_NR_msync                217
-#define TARGET_NR_osf_signal           218     /* not implemented */
-#define TARGET_NR_osf_utc_gettime      219     /* not implemented */
-#define TARGET_NR_osf_utc_adjtime      220     /* not implemented */
-
-#define TARGET_NR_osf_security 222     /* not implemented */
-#define TARGET_NR_osf_kloadcall        223     /* not implemented */
-
-#define TARGET_NR_getpgid              233
-#define TARGET_NR_getsid               234
-#define TARGET_NR_sigaltstack  235
-#define TARGET_NR_osf_waitid           236     /* not implemented */
-#define TARGET_NR_osf_priocntlset      237     /* not implemented */
-#define TARGET_NR_osf_sigsendset       238     /* not implemented */
-#define TARGET_NR_osf_set_speculative  239     /* not implemented */
-#define TARGET_NR_osf_msfs_syscall     240     /* not implemented */
-#define TARGET_NR_osf_sysinfo  241
-#define TARGET_NR_osf_uadmin           242     /* not implemented */
-#define TARGET_NR_osf_fuser            243     /* not implemented */
-#define TARGET_NR_osf_proplist_syscall    244
-#define TARGET_NR_osf_ntp_adjtime      245     /* not implemented */
-#define TARGET_NR_osf_ntp_gettime      246     /* not implemented */
-#define TARGET_NR_osf_pathconf 247     /* not implemented */
-#define TARGET_NR_osf_fpathconf        248     /* not implemented */
-
-#define TARGET_NR_osf_uswitch  250     /* not implemented */
-#define TARGET_NR_osf_usleep_thread    251
-#define TARGET_NR_osf_audcntl  252     /* not implemented */
-#define TARGET_NR_osf_audgen           253     /* not implemented */
-#define TARGET_NR_sysfs                254
-#define TARGET_NR_osf_subsys_info      255     /* not implemented */
-#define TARGET_NR_osf_getsysinfo       256
-#define TARGET_NR_osf_setsysinfo       257
-#define TARGET_NR_osf_afs_syscall      258     /* not implemented */
-#define TARGET_NR_osf_swapctl  259     /* not implemented */
-#define TARGET_NR_osf_memcntl  260     /* not implemented */
-#define TARGET_NR_osf_fdatasync        261     /* not implemented */
-
-
-/*
- * Linux-specific system calls begin at 300
- */
-#define TARGET_NR_bdflush              300
-#define TARGET_NR_sethae               301
-#define TARGET_NR_mount                302
-#define TARGET_NR_old_adjtimex 303
-#define TARGET_NR_swapoff              304
-#define TARGET_NR_getdents             305
-#define TARGET_NR_create_module        306
-#define TARGET_NR_init_module  307
-#define TARGET_NR_delete_module        308
-#define TARGET_NR_get_kernel_syms      309
-#define TARGET_NR_syslog               310
-#define TARGET_NR_reboot               311
-#define TARGET_NR_clone                312
-#define TARGET_NR_uselib               313
-#define TARGET_NR_mlock                314
-#define TARGET_NR_munlock              315
-#define TARGET_NR_mlockall             316
-#define TARGET_NR_munlockall           317
-#define TARGET_NR_sysinfo              318
-#define TARGET_NR__sysctl              319
-/* 320 was sys_idle.  */
-#define TARGET_NR_umount               321
-#define TARGET_NR_swapon               322
-#define TARGET_NR_times                323
-#define TARGET_NR_personality  324
-#define TARGET_NR_setfsuid             325
-#define TARGET_NR_setfsgid             326
-#define TARGET_NR_ustat                327
-#define TARGET_NR_statfs               328
-#define TARGET_NR_fstatfs              329
-#define TARGET_NR_sched_setparam               330
-#define TARGET_NR_sched_getparam               331
-#define TARGET_NR_sched_setscheduler           332
-#define TARGET_NR_sched_getscheduler           333
-#define TARGET_NR_sched_yield          334
-#define TARGET_NR_sched_get_priority_max       335
-#define TARGET_NR_sched_get_priority_min       336
-#define TARGET_NR_sched_rr_get_interval        337
-#define TARGET_NR_afs_syscall          338
-#define TARGET_NR_uname                        339
-#define TARGET_NR_nanosleep                    340
-#define TARGET_NR_mremap                       341
-#define TARGET_NR_nfsservctl                   342
-#define TARGET_NR_setresuid                    343
-#define TARGET_NR_getresuid                    344
-#define TARGET_NR_pciconfig_read               345
-#define TARGET_NR_pciconfig_write              346
-#define TARGET_NR_query_module         347
-#define TARGET_NR_prctl                        348
-#define TARGET_NR_pread64                      349
-#define TARGET_NR_pwrite64                     350
-#define TARGET_NR_rt_sigreturn         351
-#define TARGET_NR_rt_sigaction         352
-#define TARGET_NR_rt_sigprocmask               353
-#define TARGET_NR_rt_sigpending                354
-#define TARGET_NR_rt_sigtimedwait              355
-#define TARGET_NR_rt_sigqueueinfo              356
-#define TARGET_NR_rt_sigsuspend                357
-#define TARGET_NR_select                       358
-#define TARGET_NR_gettimeofday         359
-#define TARGET_NR_settimeofday         360
-#define TARGET_NR_getitimer                    361
-#define TARGET_NR_setitimer                    362
-#define TARGET_NR_utimes                       363
-#define TARGET_NR_getrusage                    364
-#define TARGET_NR_wait4                        365
-#define TARGET_NR_adjtimex                     366
-#define TARGET_NR_getcwd                       367
-#define TARGET_NR_capget                       368
-#define TARGET_NR_capset                       369
-#define TARGET_NR_sendfile                     370
-#define TARGET_NR_setresgid                    371
-#define TARGET_NR_getresgid                    372
-#define TARGET_NR_dipc                 373
-#define TARGET_NR_pivot_root                   374
-#define TARGET_NR_mincore                      375
-#define TARGET_NR_pciconfig_iobase             376
-#define TARGET_NR_getdents64                   377
-#define TARGET_NR_gettid                       378
-#define TARGET_NR_readahead                    379
-/* 380 is unused */
-#define TARGET_NR_tkill                        381
-#define TARGET_NR_setxattr                     382
-#define TARGET_NR_lsetxattr                    383
-#define TARGET_NR_fsetxattr                    384
-#define TARGET_NR_getxattr                     385
-#define TARGET_NR_lgetxattr                    386
-#define TARGET_NR_fgetxattr                    387
-#define TARGET_NR_listxattr                    388
-#define TARGET_NR_llistxattr                   389
-#define TARGET_NR_flistxattr                   390
-#define TARGET_NR_removexattr          391
-#define TARGET_NR_lremovexattr         392
-#define TARGET_NR_fremovexattr         393
-#define TARGET_NR_futex                        394
-#define TARGET_NR_sched_setaffinity            395
-#define TARGET_NR_sched_getaffinity            396
-#define TARGET_NR_tuxcall                      397
-#define TARGET_NR_io_setup                     398
-#define TARGET_NR_io_destroy                   399
-#define TARGET_NR_io_getevents         400
-#define TARGET_NR_io_submit                    401
-#define TARGET_NR_io_cancel                    402
-#define TARGET_NR_exit_group                   405
-#define TARGET_NR_lookup_dcookie               406
-#define TARGET_NR_epoll_create          407
-#define TARGET_NR_epoll_ctl             408
-#define TARGET_NR_epoll_wait            409
-#define TARGET_NR_remap_file_pages             410
-#define TARGET_NR_set_tid_address              411
-#define TARGET_NR_restart_syscall              412
-#define TARGET_NR_fadvise64                    413
-#define TARGET_NR_timer_create         414
-#define TARGET_NR_timer_settime                415
-#define TARGET_NR_timer_gettime                416
-#define TARGET_NR_timer_getoverrun             417
-#define TARGET_NR_timer_delete         418
-#define TARGET_NR_clock_settime                419
-#define TARGET_NR_clock_gettime                420
-#define TARGET_NR_clock_getres         421
-#define TARGET_NR_clock_nanosleep              422
-#define TARGET_NR_semtimedop                   423
-#define TARGET_NR_tgkill                       424
-#define TARGET_NR_stat64                       425
-#define TARGET_NR_lstat64                      426
-#define TARGET_NR_fstat64                      427
-#define TARGET_NR_vserver                      428
-#define TARGET_NR_mbind                        429
-#define TARGET_NR_get_mempolicy                430
-#define TARGET_NR_set_mempolicy                431
-#define TARGET_NR_mq_open                      432
-#define TARGET_NR_mq_unlink                    433
-#define TARGET_NR_mq_timedsend         434
-#define TARGET_NR_mq_timedreceive              435
-#define TARGET_NR_mq_notify                    436
-#define TARGET_NR_mq_getsetattr                437
-#define TARGET_NR_waitid                       438
-#define TARGET_NR_add_key                      439
-#define TARGET_NR_request_key          440
-#define TARGET_NR_keyctl                       441
-#define TARGET_NR_ioprio_set                   442
-#define TARGET_NR_ioprio_get                   443
-#define TARGET_NR_inotify_init         444
-#define TARGET_NR_inotify_add_watch            445
-#define TARGET_NR_inotify_rm_watch             446
-#define TARGET_NR_fdatasync                    447
-#define TARGET_NR_kexec_load                   448
-#define TARGET_NR_migrate_pages                449
-#define TARGET_NR_openat                       450
-#define TARGET_NR_mkdirat                      451
-#define TARGET_NR_mknodat                      452
-#define TARGET_NR_fchownat                     453
-#define TARGET_NR_futimesat                    454
-#define TARGET_NR_fstatat64                    455
-#define TARGET_NR_unlinkat                     456
-#define TARGET_NR_renameat                     457
-#define TARGET_NR_linkat                       458
-#define TARGET_NR_symlinkat                    459
-#define TARGET_NR_readlinkat                   460
-#define TARGET_NR_fchmodat                     461
-#define TARGET_NR_faccessat                    462
-#define TARGET_NR_pselect6                     463
-#define TARGET_NR_ppoll                        464
-#define TARGET_NR_unshare                      465
-#define TARGET_NR_set_robust_list              466
-#define TARGET_NR_get_robust_list              467
-#define TARGET_NR_splice                       468
-#define TARGET_NR_sync_file_range              469
-#define TARGET_NR_tee                  470
-#define TARGET_NR_vmsplice                     471
-#define TARGET_NR_move_pages                   472
-#define TARGET_NR_getcpu                       473
-#define TARGET_NR_epoll_pwait          474
-#define TARGET_NR_utimensat                    475
-#define TARGET_NR_signalfd                     476
-#define TARGET_NR_timerfd                      477
-#define TARGET_NR_eventfd                      478
-#define TARGET_NR_recvmmsg                      479
-#define TARGET_NR_fallocate                     480
-#define TARGET_NR_timerfd_create                481
-#define TARGET_NR_timerfd_settime               482
-#define TARGET_NR_timerfd_gettime               483
-#define TARGET_NR_signalfd4                     484
-#define TARGET_NR_eventfd2                      485
-#define TARGET_NR_epoll_create1                 486
-#define TARGET_NR_dup3                          487
-#define TARGET_NR_pipe2                         488
-#define TARGET_NR_inotify_init1                 489
-#define TARGET_NR_preadv                        490
-#define TARGET_NR_pwritev                       491
-#define TARGET_NR_rt_tgsigqueueinfo             492
-#define TARGET_NR_perf_event_open               493
-#define TARGET_NR_fanotify_init                 494
-#define TARGET_NR_fanotify_mark                 495
-#define TARGET_NR_prlimit64                     496
-#define TARGET_NR_name_to_handle_at             497
-#define TARGET_NR_open_by_handle_at             498
-#define TARGET_NR_clock_adjtime                 499
-#define TARGET_NR_syncfs                        500
-#define TARGET_NR_setns                         501
-#define TARGET_NR_accept4                       502
-#define TARGET_NR_sendmmsg                      503
-#define TARGET_NR_process_vm_readv              504
-#define TARGET_NR_process_vm_writev             505
-#define TARGET_NR_kcmp                          506
-#define TARGET_NR_finit_module                  507
-#define TARGET_NR_sched_setattr                 508
-#define TARGET_NR_sched_getattr                 509
-#define TARGET_NR_renameat2                     510
-#define TARGET_NR_getrandom                     511
-#define TARGET_NR_memfd_create                  512
-#define TARGET_NR_execveat                      513
-#define TARGET_NR_seccomp                       514
-#define TARGET_NR_bpf                           515
-#define TARGET_NR_userfaultfd                   516
-#define TARGET_NR_membarrier                    517
-#define TARGET_NR_mlock2                        518
-#define TARGET_NR_copy_file_range               519
-#define TARGET_NR_preadv2                       520
-#define TARGET_NR_pwritev2                      521
-#define TARGET_NR_statx                         522
-#define TARGET_NR_io_pgetevents                 523
-#define TARGET_NR_pkey_mprotect                 524
-#define TARGET_NR_pkey_alloc                    525
-#define TARGET_NR_pkey_free                     526
-#define TARGET_NR_rseq                          527
-#define TARGET_NR_statfs64                      528
-#define TARGET_NR_fstatfs64                     529
-#define TARGET_NR_getegid                       530
-#define TARGET_NR_geteuid                       531
-#define TARGET_NR_getppid                       532
-/*
- * all other architectures have common numbers for new syscall, alpha
- * is the exception.
- */
-#define TARGET_NR_pidfd_send_signal             534
-#define TARGET_NR_io_uring_setup                535
-#define TARGET_NR_io_uring_enter                536
-#define TARGET_NR_io_uring_register             537
-#define TARGET_NR_open_tree                     538
-#define TARGET_NR_move_mount                    539
-#define TARGET_NR_fsopen                        540
-#define TARGET_NR_fsconfig                      541
-#define TARGET_NR_fsmount                       542
-#define TARGET_NR_fspick                        543
-#define TARGET_NR_pidfd_open                    544
-/* 545 reserved for clone3 */
-
-#endif
diff --git a/linux-user/alpha/syscallhdr.sh b/linux-user/alpha/syscallhdr.sh
new file mode 100644 (file)
index 0000000..55cafe6
--- /dev/null
@@ -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_ALPHA_`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 */" "${fileguard}"
+) > "$out"
diff --git a/linux-user/arm/Makefile.objs b/linux-user/arm/Makefile.objs
new file mode 100644 (file)
index 0000000..c7eb94d
--- /dev/null
@@ -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 (file)
index 0000000..4d1cf74
--- /dev/null
@@ -0,0 +1,453 @@
+#
+# 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
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/arm/syscall_nr.h b/linux-user/arm/syscall_nr.h
deleted file mode 100644 (file)
index 6db9235..0000000
+++ /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 (file)
index 0000000..4c952b2
--- /dev/null
@@ -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"
index db748c58775f923a1aba95ade3266138dac4d6f5..8198be04460435bad35e69b1f99f01150751bc79 100644 (file)
@@ -1573,7 +1573,7 @@ struct exec
                                  ~(abi_ulong)(TARGET_ELF_EXEC_PAGESIZE-1))
 #define TARGET_ELF_PAGEOFFSET(_v) ((_v) & (TARGET_ELF_EXEC_PAGESIZE-1))
 
-#define DLINFO_ITEMS 15
+#define DLINFO_ITEMS 16
 
 static inline void memcpy_fromfs(void * to, const void * from, unsigned long n)
 {
@@ -2037,6 +2037,7 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc,
     NEW_AUX_ENT(AT_CLKTCK, (abi_ulong) sysconf(_SC_CLK_TCK));
     NEW_AUX_ENT(AT_RANDOM, (abi_ulong) u_rand_bytes);
     NEW_AUX_ENT(AT_SECURE, (abi_ulong) qemu_getauxval(AT_SECURE));
+    NEW_AUX_ENT(AT_EXECFN, info->file_string);
 
 #ifdef ELF_HWCAP2
     NEW_AUX_ENT(AT_HWCAP2, (abi_ulong) ELF_HWCAP2);
diff --git a/linux-user/hppa/Makefile.objs b/linux-user/hppa/Makefile.objs
new file mode 100644 (file)
index 0000000..f8368be
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/hppa/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/hppa/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/hppa/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/hppa/syscall.tbl b/linux-user/hppa/syscall.tbl
new file mode 100644 (file)
index 0000000..52a15f5
--- /dev/null
@@ -0,0 +1,437 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for parisc
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> can be common, 64, or 32 for this file.
+#
+0      common  restart_syscall         sys_restart_syscall
+1      common  exit                    sys_exit
+2      common  fork                    sys_fork_wrapper
+3      common  read                    sys_read
+4      common  write                   sys_write
+5      common  open                    sys_open                        compat_sys_open
+6      common  close                   sys_close
+7      common  waitpid                 sys_waitpid
+8      common  creat                   sys_creat
+9      common  link                    sys_link
+10     common  unlink                  sys_unlink
+11     common  execve                  sys_execve                      compat_sys_execve
+12     common  chdir                   sys_chdir
+13     32      time                    sys_time32
+13     64      time                    sys_time
+14     common  mknod                   sys_mknod
+15     common  chmod                   sys_chmod
+16     common  lchown                  sys_lchown
+17     common  socket                  sys_socket
+18     common  stat                    sys_newstat                     compat_sys_newstat
+19     common  lseek                   sys_lseek                       compat_sys_lseek
+20     common  getpid                  sys_getpid
+21     common  mount                   sys_mount                       compat_sys_mount
+22     common  bind                    sys_bind
+23     common  setuid                  sys_setuid
+24     common  getuid                  sys_getuid
+25     32      stime                   sys_stime32
+25     64      stime                   sys_stime
+26     common  ptrace                  sys_ptrace                      compat_sys_ptrace
+27     common  alarm                   sys_alarm
+28     common  fstat                   sys_newfstat                    compat_sys_newfstat
+29     common  pause                   sys_pause
+30     32      utime                   sys_utime32
+30     64      utime                   sys_utime
+31     common  connect                 sys_connect
+32     common  listen                  sys_listen
+33     common  access                  sys_access
+34     common  nice                    sys_nice
+35     common  accept                  sys_accept
+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                       compat_sys_times
+44     common  getsockname             sys_getsockname
+45     common  brk                     sys_brk
+46     common  setgid                  sys_setgid
+47     common  getgid                  sys_getgid
+48     common  signal                  sys_signal
+49     common  geteuid                 sys_geteuid
+50     common  getegid                 sys_getegid
+51     common  acct                    sys_acct
+52     common  umount2                 sys_umount
+53     common  getpeername             sys_getpeername
+54     common  ioctl                   sys_ioctl                       compat_sys_ioctl
+55     common  fcntl                   sys_fcntl                       compat_sys_fcntl
+56     common  socketpair              sys_socketpair
+57     common  setpgid                 sys_setpgid
+58     common  send                    sys_send
+59     common  uname                   sys_newuname
+60     common  umask                   sys_umask
+61     common  chroot                  sys_chroot
+62     common  ustat                   sys_ustat                       compat_sys_ustat
+63     common  dup2                    sys_dup2
+64     common  getppid                 sys_getppid
+65     common  getpgrp                 sys_getpgrp
+66     common  setsid                  sys_setsid
+67     common  pivot_root              sys_pivot_root
+68     common  sgetmask                sys_sgetmask                    sys32_unimplemented
+69     common  ssetmask                sys_ssetmask                    sys32_unimplemented
+70     common  setreuid                sys_setreuid
+71     common  setregid                sys_setregid
+72     common  mincore                 sys_mincore
+73     common  sigpending              sys_sigpending                  compat_sys_sigpending
+74     common  sethostname             sys_sethostname
+75     common  setrlimit               sys_setrlimit                   compat_sys_setrlimit
+76     common  getrlimit               sys_getrlimit                   compat_sys_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     common  getgroups               sys_getgroups
+81     common  setgroups               sys_setgroups
+82     common  sendto                  sys_sendto
+83     common  symlink                 sys_symlink
+84     common  lstat                   sys_newlstat                    compat_sys_newlstat
+85     common  readlink                sys_readlink
+86     common  uselib                  sys_ni_syscall
+87     common  swapon                  sys_swapon
+88     common  reboot                  sys_reboot
+89     common  mmap2                   sys_mmap2
+90     common  mmap                    sys_mmap
+91     common  munmap                  sys_munmap
+92     common  truncate                sys_truncate                    compat_sys_truncate
+93     common  ftruncate               sys_ftruncate                   compat_sys_ftruncate
+94     common  fchmod                  sys_fchmod
+95     common  fchown                  sys_fchown
+96     common  getpriority             sys_getpriority
+97     common  setpriority             sys_setpriority
+98     common  recv                    sys_recv
+99     common  statfs                  sys_statfs                      compat_sys_statfs
+100    common  fstatfs                 sys_fstatfs                     compat_sys_fstatfs
+101    common  stat64                  sys_stat64
+# 102 was socketcall
+103    common  syslog                  sys_syslog
+104    common  setitimer               sys_setitimer                   compat_sys_setitimer
+105    common  getitimer               sys_getitimer                   compat_sys_getitimer
+106    common  capget                  sys_capget
+107    common  capset                  sys_capset
+108    32      pread64                 parisc_pread64
+108    64      pread64                 sys_pread64
+109    32      pwrite64                parisc_pwrite64
+109    64      pwrite64                sys_pwrite64
+110    common  getcwd                  sys_getcwd
+111    common  vhangup                 sys_vhangup
+112    common  fstat64                 sys_fstat64
+113    common  vfork                   sys_vfork_wrapper
+114    common  wait4                   sys_wait4                       compat_sys_wait4
+115    common  swapoff                 sys_swapoff
+116    common  sysinfo                 sys_sysinfo                     compat_sys_sysinfo
+117    common  shutdown                sys_shutdown
+118    common  fsync                   sys_fsync
+119    common  madvise                 sys_madvise
+120    common  clone                   sys_clone_wrapper
+121    common  setdomainname           sys_setdomainname
+122    common  sendfile                sys_sendfile                    compat_sys_sendfile
+123    common  recvfrom                sys_recvfrom
+124    32      adjtimex                sys_adjtimex_time32
+124    64      adjtimex                sys_adjtimex
+125    common  mprotect                sys_mprotect
+126    common  sigprocmask             sys_sigprocmask                 compat_sys_sigprocmask
+# 127 was create_module
+128    common  init_module             sys_init_module
+129    common  delete_module           sys_delete_module
+# 130 was 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    32      personality             parisc_personality
+136    64      personality             sys_personality
+# 137 was afs_syscall
+138    common  setfsuid                sys_setfsuid
+139    common  setfsgid                sys_setfsgid
+140    common  _llseek                 sys_llseek
+141    common  getdents                sys_getdents                    compat_sys_getdents
+142    common  _newselect              sys_select                      compat_sys_select
+143    common  flock                   sys_flock
+144    common  msync                   sys_msync
+145    common  readv                   sys_readv                       compat_sys_readv
+146    common  writev                  sys_writev                      compat_sys_writev
+147    common  getsid                  sys_getsid
+148    common  fdatasync               sys_fdatasync
+149    common  _sysctl                 sys_sysctl                      compat_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    32      sched_rr_get_interval   sys_sched_rr_get_interval_time32
+161    64      sched_rr_get_interval   sys_sched_rr_get_interval
+162    32      nanosleep               sys_nanosleep_time32
+162    64      nanosleep               sys_nanosleep
+163    common  mremap                  sys_mremap
+164    common  setresuid               sys_setresuid
+165    common  getresuid               sys_getresuid
+166    common  sigaltstack             sys_sigaltstack                 compat_sys_sigaltstack
+# 167 was query_module
+168    common  poll                    sys_poll
+# 169 was nfsservctl
+170    common  setresgid               sys_setresgid
+171    common  getresgid               sys_getresgid
+172    common  prctl                   sys_prctl
+173    common  rt_sigreturn            sys_rt_sigreturn_wrapper
+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    32      rt_sigtimedwait         sys_rt_sigtimedwait_time32      compat_sys_rt_sigtimedwait_time32
+177    64      rt_sigtimedwait         sys_rt_sigtimedwait
+178    common  rt_sigqueueinfo         sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+179    common  rt_sigsuspend           sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+180    common  chown                   sys_chown
+181    common  setsockopt              sys_setsockopt                  compat_sys_setsockopt
+182    common  getsockopt              sys_getsockopt                  compat_sys_getsockopt
+183    common  sendmsg                 sys_sendmsg                     compat_sys_sendmsg
+184    common  recvmsg                 sys_recvmsg                     compat_sys_recvmsg
+185    common  semop                   sys_semop
+186    common  semget                  sys_semget
+187    common  semctl                  sys_semctl                      compat_sys_semctl
+188    common  msgsnd                  sys_msgsnd                      compat_sys_msgsnd
+189    common  msgrcv                  sys_msgrcv                      compat_sys_msgrcv
+190    common  msgget                  sys_msgget
+191    common  msgctl                  sys_msgctl                      compat_sys_msgctl
+192    common  shmat                   sys_shmat                       compat_sys_shmat
+193    common  shmdt                   sys_shmdt
+194    common  shmget                  sys_shmget
+195    common  shmctl                  sys_shmctl                      compat_sys_shmctl
+# 196 was getpmsg
+# 197 was putpmsg
+198    common  lstat64                 sys_lstat64
+199    32      truncate64              parisc_truncate64
+199    64      truncate64              sys_truncate64
+200    32      ftruncate64             parisc_ftruncate64
+200    64      ftruncate64             sys_ftruncate64
+201    common  getdents64              sys_getdents64
+202    common  fcntl64                 sys_fcntl64                     compat_sys_fcntl64
+# 203 was attrctl
+# 204 was acl_get
+# 205 was acl_set
+206    common  gettid                  sys_gettid
+207    32      readahead               parisc_readahead
+207    64      readahead               sys_readahead
+208    common  tkill                   sys_tkill
+209    common  sendfile64              sys_sendfile64                  compat_sys_sendfile64
+210    32      futex                   sys_futex_time32
+210    64      futex                   sys_futex
+211    common  sched_setaffinity       sys_sched_setaffinity           compat_sys_sched_setaffinity
+212    common  sched_getaffinity       sys_sched_getaffinity           compat_sys_sched_getaffinity
+# 213 was set_thread_area
+# 214 was get_thread_area
+215    common  io_setup                sys_io_setup                    compat_sys_io_setup
+216    common  io_destroy              sys_io_destroy
+217    32      io_getevents            sys_io_getevents_time32
+217    64      io_getevents            sys_io_getevents
+218    common  io_submit               sys_io_submit                   compat_sys_io_submit
+219    common  io_cancel               sys_io_cancel
+# 220 was alloc_hugepages
+# 221 was free_hugepages
+222    common  exit_group              sys_exit_group
+223    common  lookup_dcookie          sys_lookup_dcookie              compat_sys_lookup_dcookie
+224    common  epoll_create            sys_epoll_create
+225    common  epoll_ctl               sys_epoll_ctl
+226    common  epoll_wait              sys_epoll_wait
+227    common  remap_file_pages        sys_remap_file_pages
+228    32      semtimedop              sys_semtimedop_time32
+228    64      semtimedop              sys_semtimedop
+229    common  mq_open                 sys_mq_open                     compat_sys_mq_open
+230    common  mq_unlink               sys_mq_unlink
+231    32      mq_timedsend            sys_mq_timedsend_time32
+231    64      mq_timedsend            sys_mq_timedsend
+232    32      mq_timedreceive         sys_mq_timedreceive_time32
+232    64      mq_timedreceive         sys_mq_timedreceive
+233    common  mq_notify               sys_mq_notify                   compat_sys_mq_notify
+234    common  mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
+235    common  waitid                  sys_waitid                      compat_sys_waitid
+236    32      fadvise64_64            parisc_fadvise64_64
+236    64      fadvise64_64            sys_fadvise64_64
+237    common  set_tid_address         sys_set_tid_address
+238    common  setxattr                sys_setxattr
+239    common  lsetxattr               sys_lsetxattr
+240    common  fsetxattr               sys_fsetxattr
+241    common  getxattr                sys_getxattr
+242    common  lgetxattr               sys_lgetxattr
+243    common  fgetxattr               sys_fgetxattr
+244    common  listxattr               sys_listxattr
+245    common  llistxattr              sys_llistxattr
+246    common  flistxattr              sys_flistxattr
+247    common  removexattr             sys_removexattr
+248    common  lremovexattr            sys_lremovexattr
+249    common  fremovexattr            sys_fremovexattr
+250    common  timer_create            sys_timer_create                compat_sys_timer_create
+251    32      timer_settime           sys_timer_settime32
+251    64      timer_settime           sys_timer_settime
+252    32      timer_gettime           sys_timer_gettime32
+252    64      timer_gettime           sys_timer_gettime
+253    common  timer_getoverrun        sys_timer_getoverrun
+254    common  timer_delete            sys_timer_delete
+255    32      clock_settime           sys_clock_settime32
+255    64      clock_settime           sys_clock_settime
+256    32      clock_gettime           sys_clock_gettime32
+256    64      clock_gettime           sys_clock_gettime
+257    32      clock_getres            sys_clock_getres_time32
+257    64      clock_getres            sys_clock_getres
+258    32      clock_nanosleep         sys_clock_nanosleep_time32
+258    64      clock_nanosleep         sys_clock_nanosleep
+259    common  tgkill                  sys_tgkill
+260    common  mbind                   sys_mbind                       compat_sys_mbind
+261    common  get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
+262    common  set_mempolicy           sys_set_mempolicy               compat_sys_set_mempolicy
+# 263 was vserver
+264    common  add_key                 sys_add_key
+265    common  request_key             sys_request_key
+266    common  keyctl                  sys_keyctl                      compat_sys_keyctl
+267    common  ioprio_set              sys_ioprio_set
+268    common  ioprio_get              sys_ioprio_get
+269    common  inotify_init            sys_inotify_init
+270    common  inotify_add_watch       sys_inotify_add_watch
+271    common  inotify_rm_watch        sys_inotify_rm_watch
+272    common  migrate_pages           sys_migrate_pages
+273    32      pselect6                sys_pselect6_time32             compat_sys_pselect6_time32
+273    64      pselect6                sys_pselect6
+274    32      ppoll                   sys_ppoll_time32                compat_sys_ppoll_time32
+274    64      ppoll                   sys_ppoll
+275    common  openat                  sys_openat                      compat_sys_openat
+276    common  mkdirat                 sys_mkdirat
+277    common  mknodat                 sys_mknodat
+278    common  fchownat                sys_fchownat
+279    32      futimesat               sys_futimesat_time32
+279    64      futimesat               sys_futimesat
+280    common  fstatat64               sys_fstatat64
+281    common  unlinkat                sys_unlinkat
+282    common  renameat                sys_renameat
+283    common  linkat                  sys_linkat
+284    common  symlinkat               sys_symlinkat
+285    common  readlinkat              sys_readlinkat
+286    common  fchmodat                sys_fchmodat
+287    common  faccessat               sys_faccessat
+288    common  unshare                 sys_unshare
+289    common  set_robust_list         sys_set_robust_list             compat_sys_set_robust_list
+290    common  get_robust_list         sys_get_robust_list             compat_sys_get_robust_list
+291    common  splice                  sys_splice
+292    32      sync_file_range         parisc_sync_file_range
+292    64      sync_file_range         sys_sync_file_range
+293    common  tee                     sys_tee
+294    common  vmsplice                sys_vmsplice                    compat_sys_vmsplice
+295    common  move_pages              sys_move_pages                  compat_sys_move_pages
+296    common  getcpu                  sys_getcpu
+297    common  epoll_pwait             sys_epoll_pwait                 compat_sys_epoll_pwait
+298    common  statfs64                sys_statfs64                    compat_sys_statfs64
+299    common  fstatfs64               sys_fstatfs64                   compat_sys_fstatfs64
+300    common  kexec_load              sys_kexec_load                  compat_sys_kexec_load
+301    32      utimensat               sys_utimensat_time32
+301    64      utimensat               sys_utimensat
+302    common  signalfd                sys_signalfd                    compat_sys_signalfd
+# 303 was timerfd
+304    common  eventfd                 sys_eventfd
+305    32      fallocate               parisc_fallocate
+305    64      fallocate               sys_fallocate
+306    common  timerfd_create          sys_timerfd_create
+307    32      timerfd_settime         sys_timerfd_settime32
+307    64      timerfd_settime         sys_timerfd_settime
+308    32      timerfd_gettime         sys_timerfd_gettime32
+308    64      timerfd_gettime         sys_timerfd_gettime
+309    common  signalfd4               sys_signalfd4                   compat_sys_signalfd4
+310    common  eventfd2                sys_eventfd2
+311    common  epoll_create1           sys_epoll_create1
+312    common  dup3                    sys_dup3
+313    common  pipe2                   sys_pipe2
+314    common  inotify_init1           sys_inotify_init1
+315    common  preadv  sys_preadv      compat_sys_preadv
+316    common  pwritev sys_pwritev     compat_sys_pwritev
+317    common  rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+318    common  perf_event_open         sys_perf_event_open
+319    32      recvmmsg                sys_recvmmsg_time32             compat_sys_recvmmsg_time32
+319    64      recvmmsg                sys_recvmmsg
+320    common  accept4                 sys_accept4
+321    common  prlimit64               sys_prlimit64
+322    common  fanotify_init           sys_fanotify_init
+323    common  fanotify_mark           sys_fanotify_mark               sys32_fanotify_mark
+324    32      clock_adjtime           sys_clock_adjtime32
+324    64      clock_adjtime           sys_clock_adjtime
+325    common  name_to_handle_at       sys_name_to_handle_at
+326    common  open_by_handle_at       sys_open_by_handle_at           compat_sys_open_by_handle_at
+327    common  syncfs                  sys_syncfs
+328    common  setns                   sys_setns
+329    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
+330    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
+331    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+332    common  kcmp                    sys_kcmp
+333    common  finit_module            sys_finit_module
+334    common  sched_setattr           sys_sched_setattr
+335    common  sched_getattr           sys_sched_getattr
+336    32      utimes                  sys_utimes_time32
+336    64      utimes                  sys_utimes
+337    common  renameat2               sys_renameat2
+338    common  seccomp                 sys_seccomp
+339    common  getrandom               sys_getrandom
+340    common  memfd_create            sys_memfd_create
+341    common  bpf                     sys_bpf
+342    common  execveat                sys_execveat                    compat_sys_execveat
+343    common  membarrier              sys_membarrier
+344    common  userfaultfd             sys_userfaultfd
+345    common  mlock2                  sys_mlock2
+346    common  copy_file_range         sys_copy_file_range
+347    common  preadv2                 sys_preadv2                     compat_sys_preadv2
+348    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
+349    common  statx                   sys_statx
+350    32      io_pgetevents           sys_io_pgetevents_time32        compat_sys_io_pgetevents
+350    64      io_pgetevents           sys_io_pgetevents
+351    common  pkey_mprotect           sys_pkey_mprotect
+352    common  pkey_alloc              sys_pkey_alloc
+353    common  pkey_free               sys_pkey_free
+354    common  rseq                    sys_rseq
+355    common  kexec_file_load         sys_kexec_file_load             sys_kexec_file_load
+# up to 402 is unassigned and reserved for arch specific syscalls
+403    32      clock_gettime64                 sys_clock_gettime               sys_clock_gettime
+404    32      clock_settime64                 sys_clock_settime               sys_clock_settime
+405    32      clock_adjtime64                 sys_clock_adjtime               sys_clock_adjtime
+406    32      clock_getres_time64             sys_clock_getres                sys_clock_getres
+407    32      clock_nanosleep_time64          sys_clock_nanosleep             sys_clock_nanosleep
+408    32      timer_gettime64                 sys_timer_gettime               sys_timer_gettime
+409    32      timer_settime64                 sys_timer_settime               sys_timer_settime
+410    32      timerfd_gettime64               sys_timerfd_gettime             sys_timerfd_gettime
+411    32      timerfd_settime64               sys_timerfd_settime             sys_timerfd_settime
+412    32      utimensat_time64                sys_utimensat                   sys_utimensat
+413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
+414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
+416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
+418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
+419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
+420    32      semtimedop_time64               sys_semtimedop                  sys_semtimedop
+421    32      rt_sigtimedwait_time64          sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait_time64
+422    32      futex_time64                    sys_futex                       sys_futex
+423    32      sched_rr_get_interval_time64    sys_sched_rr_get_interval       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_wrapper
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/hppa/syscall_nr.h b/linux-user/hppa/syscall_nr.h
deleted file mode 100644 (file)
index ae41e94..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_HPPA_SYSCALL_NR_H
-#define LINUX_USER_HPPA_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
-#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_socket         17
-#define TARGET_NR_stat           18
-#define TARGET_NR_lseek          19
-#define TARGET_NR_getpid         20
-#define TARGET_NR_mount          21
-#define TARGET_NR_bind           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_fstat          28
-#define TARGET_NR_pause          29
-#define TARGET_NR_utime          30
-#define TARGET_NR_connect        31
-#define TARGET_NR_listen         32
-#define TARGET_NR_access         33
-#define TARGET_NR_nice           34
-#define TARGET_NR_accept         35
-#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_getsockname    44
-#define TARGET_NR_brk            45
-#define TARGET_NR_setgid         46
-#define TARGET_NR_getgid         47
-#define TARGET_NR_signal         48
-#define TARGET_NR_geteuid        49
-#define TARGET_NR_getegid        50
-#define TARGET_NR_acct           51
-#define TARGET_NR_umount2        52
-#define TARGET_NR_getpeername    53
-#define TARGET_NR_ioctl          54
-#define TARGET_NR_fcntl          55
-#define TARGET_NR_socketpair     56
-#define TARGET_NR_setpgid        57
-#define TARGET_NR_send           58
-#define TARGET_NR_uname          59
-#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_pivot_root     67
-#define TARGET_NR_sgetmask       68
-#define TARGET_NR_ssetmask       69
-#define TARGET_NR_setreuid       70
-#define TARGET_NR_setregid       71
-#define TARGET_NR_mincore        72
-#define TARGET_NR_sigpending     73
-#define TARGET_NR_sethostname    74
-#define TARGET_NR_setrlimit      75
-#define TARGET_NR_getrlimit      76
-#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_sendto         82
-#define TARGET_NR_symlink        83
-#define TARGET_NR_lstat          84
-#define TARGET_NR_readlink       85
-#define TARGET_NR_uselib         86
-#define TARGET_NR_swapon         87
-#define TARGET_NR_reboot         88
-#define TARGET_NR_mmap2          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_recv           98
-#define TARGET_NR_statfs         99
-#define TARGET_NR_fstatfs       100
-#define TARGET_NR_stat64        101
-#define TARGET_NR_socketcall    102
-#define TARGET_NR_syslog        103
-#define TARGET_NR_setitimer     104
-#define TARGET_NR_getitimer     105
-#define TARGET_NR_capget        106
-#define TARGET_NR_capset        107
-#define TARGET_NR_pread64       108
-#define TARGET_NR_pwrite64      109
-#define TARGET_NR_getcwd        110
-#define TARGET_NR_vhangup       111
-#define TARGET_NR_fstat64       112
-#define TARGET_NR_vfork         113
-#define TARGET_NR_wait4         114
-#define TARGET_NR_swapoff       115
-#define TARGET_NR_sysinfo       116
-#define TARGET_NR_shutdown      117
-#define TARGET_NR_fsync         118
-#define TARGET_NR_madvise       119
-#define TARGET_NR_clone         120
-#define TARGET_NR_setdomainname 121
-#define TARGET_NR_sendfile      122
-#define TARGET_NR_recvfrom      123
-#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_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_sigaltstack   166
-#define TARGET_NR_query_module  167
-#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_chown         180
-#define TARGET_NR_setsockopt    181
-#define TARGET_NR_getsockopt    182
-#define TARGET_NR_sendmsg       183
-#define TARGET_NR_recvmsg       184
-#define TARGET_NR_semop         185
-#define TARGET_NR_semget        186
-#define TARGET_NR_semctl        187
-#define TARGET_NR_msgsnd        188
-#define TARGET_NR_msgrcv        189
-#define TARGET_NR_msgget        190
-#define TARGET_NR_msgctl        191
-#define TARGET_NR_shmat         192
-#define TARGET_NR_shmdt         193
-#define TARGET_NR_shmget        194
-#define TARGET_NR_shmctl        195
-#define TARGET_NR_getpmsg       196
-#define TARGET_NR_putpmsg       197
-#define TARGET_NR_lstat64       198
-#define TARGET_NR_truncate64    199
-#define TARGET_NR_ftruncate64   200
-#define TARGET_NR_getdents64    201
-#define TARGET_NR_fcntl64       202
-#define TARGET_NR_attrctl       203
-#define TARGET_NR_acl_get       204
-#define TARGET_NR_acl_set       205
-#define TARGET_NR_gettid        206
-#define TARGET_NR_readahead     207
-#define TARGET_NR_tkill         208
-#define TARGET_NR_sendfile64    209
-#define TARGET_NR_futex         210
-#define TARGET_NR_sched_setaffinity 211
-#define TARGET_NR_sched_getaffinity 212
-#define TARGET_NR_set_thread_area   213
-#define TARGET_NR_get_thread_area   214
-#define TARGET_NR_io_setup          215
-#define TARGET_NR_io_destroy        216
-#define TARGET_NR_io_getevents      217
-#define TARGET_NR_io_submit         218
-#define TARGET_NR_io_cancel         219
-#define TARGET_NR_alloc_hugepages   220
-#define TARGET_NR_free_hugepages    221
-#define TARGET_NR_exit_group        222
-#define TARGET_NR_lookup_dcookie    223
-#define TARGET_NR_epoll_create      224
-#define TARGET_NR_epoll_ctl         225
-#define TARGET_NR_epoll_wait        226
-#define TARGET_NR_remap_file_pages  227
-#define TARGET_NR_semtimedop        228
-#define TARGET_NR_mq_open           229
-#define TARGET_NR_mq_unlink         230
-#define TARGET_NR_mq_timedsend      231
-#define TARGET_NR_mq_timedreceive   232
-#define TARGET_NR_mq_notify         233
-#define TARGET_NR_mq_getsetattr     234
-#define TARGET_NR_waitid            235
-#define TARGET_NR_fadvise64_64      236
-#define TARGET_NR_set_tid_address   237
-#define TARGET_NR_setxattr          238
-#define TARGET_NR_lsetxattr         239
-#define TARGET_NR_fsetxattr         240
-#define TARGET_NR_getxattr          241
-#define TARGET_NR_lgetxattr         242
-#define TARGET_NR_fgetxattr         243
-#define TARGET_NR_listxattr         244
-#define TARGET_NR_llistxattr        245
-#define TARGET_NR_flistxattr        246
-#define TARGET_NR_removexattr       247
-#define TARGET_NR_lremovexattr      248
-#define TARGET_NR_fremovexattr      249
-#define TARGET_NR_timer_create      250
-#define TARGET_NR_timer_settime     251
-#define TARGET_NR_timer_gettime     252
-#define TARGET_NR_timer_getoverrun  253
-#define TARGET_NR_timer_delete      254
-#define TARGET_NR_clock_settime     255
-#define TARGET_NR_clock_gettime     256
-#define TARGET_NR_clock_getres      257
-#define TARGET_NR_clock_nanosleep   258
-#define TARGET_NR_tgkill            259
-#define TARGET_NR_mbind             260
-#define TARGET_NR_get_mempolicy     261
-#define TARGET_NR_set_mempolicy     262
-#define TARGET_NR_vserver           263
-#define TARGET_NR_add_key           264
-#define TARGET_NR_request_key       265
-#define TARGET_NR_keyctl            266
-#define TARGET_NR_ioprio_set        267
-#define TARGET_NR_ioprio_get        268
-#define TARGET_NR_inotify_init      269
-#define TARGET_NR_inotify_add_watch 270
-#define TARGET_NR_inotify_rm_watch  271
-#define TARGET_NR_migrate_pages     272
-#define TARGET_NR_pselect6          273
-#define TARGET_NR_ppoll             274
-#define TARGET_NR_openat            275
-#define TARGET_NR_mkdirat           276
-#define TARGET_NR_mknodat           277
-#define TARGET_NR_fchownat          278
-#define TARGET_NR_futimesat         279
-#define TARGET_NR_fstatat64         280
-#define TARGET_NR_unlinkat          281
-#define TARGET_NR_renameat          282
-#define TARGET_NR_linkat            283
-#define TARGET_NR_symlinkat         284
-#define TARGET_NR_readlinkat        285
-#define TARGET_NR_fchmodat          286
-#define TARGET_NR_faccessat         287
-#define TARGET_NR_unshare           288
-#define TARGET_NR_set_robust_list   289
-#define TARGET_NR_get_robust_list   290
-#define TARGET_NR_splice            291
-#define TARGET_NR_sync_file_range   292
-#define TARGET_NR_tee               293
-#define TARGET_NR_vmsplice          294
-#define TARGET_NR_move_pages        295
-#define TARGET_NR_getcpu            296
-#define TARGET_NR_epoll_pwait       297
-#define TARGET_NR_statfs64          298
-#define TARGET_NR_fstatfs64         299
-#define TARGET_NR_kexec_load        300
-#define TARGET_NR_utimensat         301
-#define TARGET_NR_signalfd          302
-#define TARGET_NR_timerfd           303
-#define TARGET_NR_eventfd           304
-#define TARGET_NR_fallocate         305
-#define TARGET_NR_timerfd_create    306
-#define TARGET_NR_timerfd_settime   307
-#define TARGET_NR_timerfd_gettime   308
-#define TARGET_NR_signalfd4         309
-#define TARGET_NR_eventfd2          310
-#define TARGET_NR_epoll_create1     311
-#define TARGET_NR_dup3              312
-#define TARGET_NR_pipe2             313
-#define TARGET_NR_inotify_init1     314
-#define TARGET_NR_preadv            315
-#define TARGET_NR_pwritev           316
-#define TARGET_NR_rt_tgsigqueueinfo 317
-#define TARGET_NR_perf_event_open   318
-#define TARGET_NR_recvmmsg          319
-#define TARGET_NR_accept4           320
-#define TARGET_NR_prlimit64         321
-#define TARGET_NR_fanotify_init     322
-#define TARGET_NR_fanotify_mark     323
-#define TARGET_NR_clock_adjtime     324
-#define TARGET_NR_name_to_handle_at 325
-#define TARGET_NR_open_by_handle_at 326
-#define TARGET_NR_syncfs            327
-#define TARGET_NR_setns             328
-#define TARGET_NR_sendmmsg          329
-#define TARGET_NR_process_vm_readv  330
-#define TARGET_NR_process_vm_writev 331
-#define TARGET_NR_kcmp              332
-#define TARGET_NR_finit_module      333
-#define TARGET_NR_sched_setattr     334
-#define TARGET_NR_sched_getattr     335
-#define TARGET_NR_utimes            336
-#define TARGET_NR_renameat2         337
-#define TARGET_NR_seccomp           338
-#define TARGET_NR_getrandom         339
-#define TARGET_NR_memfd_create      340
-#define TARGET_NR_bpf               341
-#define TARGET_NR_execveat          342
-#define TARGET_NR_membarrier        343
-#define TARGET_NR_userfaultfd       344
-#define TARGET_NR_mlock2            345
-#define TARGET_NR_copy_file_range   346
-#define TARGET_NR_preadv2           347
-#define TARGET_NR_pwritev2          348
-
-#endif
diff --git a/linux-user/hppa/syscallhdr.sh b/linux-user/hppa/syscallhdr.sh
new file mode 100644 (file)
index 0000000..ac91a95
--- /dev/null
@@ -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_HPPA_`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 compat ; 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 */" "${fileguard}"
+) > "$out"
diff --git a/linux-user/i386/Makefile.objs b/linux-user/i386/Makefile.objs
new file mode 100644 (file)
index 0000000..c25cf17
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/i386/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/i386/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/i386/syscall_32.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/i386/syscall_32.tbl b/linux-user/i386/syscall_32.tbl
new file mode 100644 (file)
index 0000000..c17cb77
--- /dev/null
@@ -0,0 +1,444 @@
+#
+# 32-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The __ia32_sys and __ia32_compat_sys stubs are created on-the-fly for
+# sys_*() system calls and compat_sys_*() compat system calls if
+# IA32_EMULATION is defined, and expect struct pt_regs *regs as their only
+# parameter.
+#
+# The abi is always "i386" for this file.
+#
+0      i386    restart_syscall         sys_restart_syscall             __ia32_sys_restart_syscall
+1      i386    exit                    sys_exit                        __ia32_sys_exit
+2      i386    fork                    sys_fork                        __ia32_sys_fork
+3      i386    read                    sys_read                        __ia32_sys_read
+4      i386    write                   sys_write                       __ia32_sys_write
+5      i386    open                    sys_open                        __ia32_compat_sys_open
+6      i386    close                   sys_close                       __ia32_sys_close
+7      i386    waitpid                 sys_waitpid                     __ia32_sys_waitpid
+8      i386    creat                   sys_creat                       __ia32_sys_creat
+9      i386    link                    sys_link                        __ia32_sys_link
+10     i386    unlink                  sys_unlink                      __ia32_sys_unlink
+11     i386    execve                  sys_execve                      __ia32_compat_sys_execve
+12     i386    chdir                   sys_chdir                       __ia32_sys_chdir
+13     i386    time                    sys_time32                      __ia32_sys_time32
+14     i386    mknod                   sys_mknod                       __ia32_sys_mknod
+15     i386    chmod                   sys_chmod                       __ia32_sys_chmod
+16     i386    lchown                  sys_lchown16                    __ia32_sys_lchown16
+17     i386    break
+18     i386    oldstat                 sys_stat                        __ia32_sys_stat
+19     i386    lseek                   sys_lseek                       __ia32_compat_sys_lseek
+20     i386    getpid                  sys_getpid                      __ia32_sys_getpid
+21     i386    mount                   sys_mount                       __ia32_compat_sys_mount
+22     i386    umount                  sys_oldumount                   __ia32_sys_oldumount
+23     i386    setuid                  sys_setuid16                    __ia32_sys_setuid16
+24     i386    getuid                  sys_getuid16                    __ia32_sys_getuid16
+25     i386    stime                   sys_stime32                     __ia32_sys_stime32
+26     i386    ptrace                  sys_ptrace                      __ia32_compat_sys_ptrace
+27     i386    alarm                   sys_alarm                       __ia32_sys_alarm
+28     i386    oldfstat                sys_fstat                       __ia32_sys_fstat
+29     i386    pause                   sys_pause                       __ia32_sys_pause
+30     i386    utime                   sys_utime32                     __ia32_sys_utime32
+31     i386    stty
+32     i386    gtty
+33     i386    access                  sys_access                      __ia32_sys_access
+34     i386    nice                    sys_nice                        __ia32_sys_nice
+35     i386    ftime
+36     i386    sync                    sys_sync                        __ia32_sys_sync
+37     i386    kill                    sys_kill                        __ia32_sys_kill
+38     i386    rename                  sys_rename                      __ia32_sys_rename
+39     i386    mkdir                   sys_mkdir                       __ia32_sys_mkdir
+40     i386    rmdir                   sys_rmdir                       __ia32_sys_rmdir
+41     i386    dup                     sys_dup                         __ia32_sys_dup
+42     i386    pipe                    sys_pipe                        __ia32_sys_pipe
+43     i386    times                   sys_times                       __ia32_compat_sys_times
+44     i386    prof
+45     i386    brk                     sys_brk                         __ia32_sys_brk
+46     i386    setgid                  sys_setgid16                    __ia32_sys_setgid16
+47     i386    getgid                  sys_getgid16                    __ia32_sys_getgid16
+48     i386    signal                  sys_signal                      __ia32_sys_signal
+49     i386    geteuid                 sys_geteuid16                   __ia32_sys_geteuid16
+50     i386    getegid                 sys_getegid16                   __ia32_sys_getegid16
+51     i386    acct                    sys_acct                        __ia32_sys_acct
+52     i386    umount2                 sys_umount                      __ia32_sys_umount
+53     i386    lock
+54     i386    ioctl                   sys_ioctl                       __ia32_compat_sys_ioctl
+55     i386    fcntl                   sys_fcntl                       __ia32_compat_sys_fcntl64
+56     i386    mpx
+57     i386    setpgid                 sys_setpgid                     __ia32_sys_setpgid
+58     i386    ulimit
+59     i386    oldolduname             sys_olduname                    __ia32_sys_olduname
+60     i386    umask                   sys_umask                       __ia32_sys_umask
+61     i386    chroot                  sys_chroot                      __ia32_sys_chroot
+62     i386    ustat                   sys_ustat                       __ia32_compat_sys_ustat
+63     i386    dup2                    sys_dup2                        __ia32_sys_dup2
+64     i386    getppid                 sys_getppid                     __ia32_sys_getppid
+65     i386    getpgrp                 sys_getpgrp                     __ia32_sys_getpgrp
+66     i386    setsid                  sys_setsid                      __ia32_sys_setsid
+67     i386    sigaction               sys_sigaction                   __ia32_compat_sys_sigaction
+68     i386    sgetmask                sys_sgetmask                    __ia32_sys_sgetmask
+69     i386    ssetmask                sys_ssetmask                    __ia32_sys_ssetmask
+70     i386    setreuid                sys_setreuid16                  __ia32_sys_setreuid16
+71     i386    setregid                sys_setregid16                  __ia32_sys_setregid16
+72     i386    sigsuspend              sys_sigsuspend                  __ia32_sys_sigsuspend
+73     i386    sigpending              sys_sigpending                  __ia32_compat_sys_sigpending
+74     i386    sethostname             sys_sethostname                 __ia32_sys_sethostname
+75     i386    setrlimit               sys_setrlimit                   __ia32_compat_sys_setrlimit
+76     i386    getrlimit               sys_old_getrlimit               __ia32_compat_sys_old_getrlimit
+77     i386    getrusage               sys_getrusage                   __ia32_compat_sys_getrusage
+78     i386    gettimeofday            sys_gettimeofday                __ia32_compat_sys_gettimeofday
+79     i386    settimeofday            sys_settimeofday                __ia32_compat_sys_settimeofday
+80     i386    getgroups               sys_getgroups16                 __ia32_sys_getgroups16
+81     i386    setgroups               sys_setgroups16                 __ia32_sys_setgroups16
+82     i386    select                  sys_old_select                  __ia32_compat_sys_old_select
+83     i386    symlink                 sys_symlink                     __ia32_sys_symlink
+84     i386    oldlstat                sys_lstat                       __ia32_sys_lstat
+85     i386    readlink                sys_readlink                    __ia32_sys_readlink
+86     i386    uselib                  sys_uselib                      __ia32_sys_uselib
+87     i386    swapon                  sys_swapon                      __ia32_sys_swapon
+88     i386    reboot                  sys_reboot                      __ia32_sys_reboot
+89     i386    readdir                 sys_old_readdir                 __ia32_compat_sys_old_readdir
+90     i386    mmap                    sys_old_mmap                    __ia32_compat_sys_x86_mmap
+91     i386    munmap                  sys_munmap                      __ia32_sys_munmap
+92     i386    truncate                sys_truncate                    __ia32_compat_sys_truncate
+93     i386    ftruncate               sys_ftruncate                   __ia32_compat_sys_ftruncate
+94     i386    fchmod                  sys_fchmod                      __ia32_sys_fchmod
+95     i386    fchown                  sys_fchown16                    __ia32_sys_fchown16
+96     i386    getpriority             sys_getpriority                 __ia32_sys_getpriority
+97     i386    setpriority             sys_setpriority                 __ia32_sys_setpriority
+98     i386    profil
+99     i386    statfs                  sys_statfs                      __ia32_compat_sys_statfs
+100    i386    fstatfs                 sys_fstatfs                     __ia32_compat_sys_fstatfs
+101    i386    ioperm                  sys_ioperm                      __ia32_sys_ioperm
+102    i386    socketcall              sys_socketcall                  __ia32_compat_sys_socketcall
+103    i386    syslog                  sys_syslog                      __ia32_sys_syslog
+104    i386    setitimer               sys_setitimer                   __ia32_compat_sys_setitimer
+105    i386    getitimer               sys_getitimer                   __ia32_compat_sys_getitimer
+106    i386    stat                    sys_newstat                     __ia32_compat_sys_newstat
+107    i386    lstat                   sys_newlstat                    __ia32_compat_sys_newlstat
+108    i386    fstat                   sys_newfstat                    __ia32_compat_sys_newfstat
+109    i386    olduname                sys_uname                       __ia32_sys_uname
+110    i386    iopl                    sys_iopl                        __ia32_sys_iopl
+111    i386    vhangup                 sys_vhangup                     __ia32_sys_vhangup
+112    i386    idle
+113    i386    vm86old                 sys_vm86old                     __ia32_sys_ni_syscall
+114    i386    wait4                   sys_wait4                       __ia32_compat_sys_wait4
+115    i386    swapoff                 sys_swapoff                     __ia32_sys_swapoff
+116    i386    sysinfo                 sys_sysinfo                     __ia32_compat_sys_sysinfo
+117    i386    ipc                     sys_ipc                         __ia32_compat_sys_ipc
+118    i386    fsync                   sys_fsync                       __ia32_sys_fsync
+119    i386    sigreturn               sys_sigreturn                   __ia32_compat_sys_sigreturn
+120    i386    clone                   sys_clone                       __ia32_compat_sys_x86_clone
+121    i386    setdomainname           sys_setdomainname               __ia32_sys_setdomainname
+122    i386    uname                   sys_newuname                    __ia32_sys_newuname
+123    i386    modify_ldt              sys_modify_ldt                  __ia32_sys_modify_ldt
+124    i386    adjtimex                sys_adjtimex_time32                     __ia32_sys_adjtimex_time32
+125    i386    mprotect                sys_mprotect                    __ia32_sys_mprotect
+126    i386    sigprocmask             sys_sigprocmask                 __ia32_compat_sys_sigprocmask
+127    i386    create_module
+128    i386    init_module             sys_init_module                 __ia32_sys_init_module
+129    i386    delete_module           sys_delete_module               __ia32_sys_delete_module
+130    i386    get_kernel_syms
+131    i386    quotactl                sys_quotactl                    __ia32_compat_sys_quotactl32
+132    i386    getpgid                 sys_getpgid                     __ia32_sys_getpgid
+133    i386    fchdir                  sys_fchdir                      __ia32_sys_fchdir
+134    i386    bdflush                 sys_bdflush                     __ia32_sys_bdflush
+135    i386    sysfs                   sys_sysfs                       __ia32_sys_sysfs
+136    i386    personality             sys_personality                 __ia32_sys_personality
+137    i386    afs_syscall
+138    i386    setfsuid                sys_setfsuid16                  __ia32_sys_setfsuid16
+139    i386    setfsgid                sys_setfsgid16                  __ia32_sys_setfsgid16
+140    i386    _llseek                 sys_llseek                      __ia32_sys_llseek
+141    i386    getdents                sys_getdents                    __ia32_compat_sys_getdents
+142    i386    _newselect              sys_select                      __ia32_compat_sys_select
+143    i386    flock                   sys_flock                       __ia32_sys_flock
+144    i386    msync                   sys_msync                       __ia32_sys_msync
+145    i386    readv                   sys_readv                       __ia32_compat_sys_readv
+146    i386    writev                  sys_writev                      __ia32_compat_sys_writev
+147    i386    getsid                  sys_getsid                      __ia32_sys_getsid
+148    i386    fdatasync               sys_fdatasync                   __ia32_sys_fdatasync
+149    i386    _sysctl                 sys_sysctl                      __ia32_compat_sys_sysctl
+150    i386    mlock                   sys_mlock                       __ia32_sys_mlock
+151    i386    munlock                 sys_munlock                     __ia32_sys_munlock
+152    i386    mlockall                sys_mlockall                    __ia32_sys_mlockall
+153    i386    munlockall              sys_munlockall                  __ia32_sys_munlockall
+154    i386    sched_setparam          sys_sched_setparam              __ia32_sys_sched_setparam
+155    i386    sched_getparam          sys_sched_getparam              __ia32_sys_sched_getparam
+156    i386    sched_setscheduler      sys_sched_setscheduler          __ia32_sys_sched_setscheduler
+157    i386    sched_getscheduler      sys_sched_getscheduler          __ia32_sys_sched_getscheduler
+158    i386    sched_yield             sys_sched_yield                 __ia32_sys_sched_yield
+159    i386    sched_get_priority_max  sys_sched_get_priority_max      __ia32_sys_sched_get_priority_max
+160    i386    sched_get_priority_min  sys_sched_get_priority_min      __ia32_sys_sched_get_priority_min
+161    i386    sched_rr_get_interval   sys_sched_rr_get_interval_time32        __ia32_sys_sched_rr_get_interval_time32
+162    i386    nanosleep               sys_nanosleep_time32            __ia32_sys_nanosleep_time32
+163    i386    mremap                  sys_mremap                      __ia32_sys_mremap
+164    i386    setresuid               sys_setresuid16                 __ia32_sys_setresuid16
+165    i386    getresuid               sys_getresuid16                 __ia32_sys_getresuid16
+166    i386    vm86                    sys_vm86                        __ia32_sys_ni_syscall
+167    i386    query_module
+168    i386    poll                    sys_poll                        __ia32_sys_poll
+169    i386    nfsservctl
+170    i386    setresgid               sys_setresgid16                 __ia32_sys_setresgid16
+171    i386    getresgid               sys_getresgid16                 __ia32_sys_getresgid16
+172    i386    prctl                   sys_prctl                       __ia32_sys_prctl
+173    i386    rt_sigreturn            sys_rt_sigreturn                __ia32_compat_sys_rt_sigreturn
+174    i386    rt_sigaction            sys_rt_sigaction                __ia32_compat_sys_rt_sigaction
+175    i386    rt_sigprocmask          sys_rt_sigprocmask              __ia32_compat_sys_rt_sigprocmask
+176    i386    rt_sigpending           sys_rt_sigpending               __ia32_compat_sys_rt_sigpending
+177    i386    rt_sigtimedwait         sys_rt_sigtimedwait_time32      __ia32_compat_sys_rt_sigtimedwait_time32
+178    i386    rt_sigqueueinfo         sys_rt_sigqueueinfo             __ia32_compat_sys_rt_sigqueueinfo
+179    i386    rt_sigsuspend           sys_rt_sigsuspend               __ia32_compat_sys_rt_sigsuspend
+180    i386    pread64                 sys_pread64                     __ia32_compat_sys_x86_pread
+181    i386    pwrite64                sys_pwrite64                    __ia32_compat_sys_x86_pwrite
+182    i386    chown                   sys_chown16                     __ia32_sys_chown16
+183    i386    getcwd                  sys_getcwd                      __ia32_sys_getcwd
+184    i386    capget                  sys_capget                      __ia32_sys_capget
+185    i386    capset                  sys_capset                      __ia32_sys_capset
+186    i386    sigaltstack             sys_sigaltstack                 __ia32_compat_sys_sigaltstack
+187    i386    sendfile                sys_sendfile                    __ia32_compat_sys_sendfile
+188    i386    getpmsg
+189    i386    putpmsg
+190    i386    vfork                   sys_vfork                       __ia32_sys_vfork
+191    i386    ugetrlimit              sys_getrlimit                   __ia32_compat_sys_getrlimit
+192    i386    mmap2                   sys_mmap_pgoff                  __ia32_sys_mmap_pgoff
+193    i386    truncate64              sys_truncate64                  __ia32_compat_sys_x86_truncate64
+194    i386    ftruncate64             sys_ftruncate64                 __ia32_compat_sys_x86_ftruncate64
+195    i386    stat64                  sys_stat64                      __ia32_compat_sys_x86_stat64
+196    i386    lstat64                 sys_lstat64                     __ia32_compat_sys_x86_lstat64
+197    i386    fstat64                 sys_fstat64                     __ia32_compat_sys_x86_fstat64
+198    i386    lchown32                sys_lchown                      __ia32_sys_lchown
+199    i386    getuid32                sys_getuid                      __ia32_sys_getuid
+200    i386    getgid32                sys_getgid                      __ia32_sys_getgid
+201    i386    geteuid32               sys_geteuid                     __ia32_sys_geteuid
+202    i386    getegid32               sys_getegid                     __ia32_sys_getegid
+203    i386    setreuid32              sys_setreuid                    __ia32_sys_setreuid
+204    i386    setregid32              sys_setregid                    __ia32_sys_setregid
+205    i386    getgroups32             sys_getgroups                   __ia32_sys_getgroups
+206    i386    setgroups32             sys_setgroups                   __ia32_sys_setgroups
+207    i386    fchown32                sys_fchown                      __ia32_sys_fchown
+208    i386    setresuid32             sys_setresuid                   __ia32_sys_setresuid
+209    i386    getresuid32             sys_getresuid                   __ia32_sys_getresuid
+210    i386    setresgid32             sys_setresgid                   __ia32_sys_setresgid
+211    i386    getresgid32             sys_getresgid                   __ia32_sys_getresgid
+212    i386    chown32                 sys_chown                       __ia32_sys_chown
+213    i386    setuid32                sys_setuid                      __ia32_sys_setuid
+214    i386    setgid32                sys_setgid                      __ia32_sys_setgid
+215    i386    setfsuid32              sys_setfsuid                    __ia32_sys_setfsuid
+216    i386    setfsgid32              sys_setfsgid                    __ia32_sys_setfsgid
+217    i386    pivot_root              sys_pivot_root                  __ia32_sys_pivot_root
+218    i386    mincore                 sys_mincore                     __ia32_sys_mincore
+219    i386    madvise                 sys_madvise                     __ia32_sys_madvise
+220    i386    getdents64              sys_getdents64                  __ia32_sys_getdents64
+221    i386    fcntl64                 sys_fcntl64                     __ia32_compat_sys_fcntl64
+# 222 is unused
+# 223 is unused
+224    i386    gettid                  sys_gettid                      __ia32_sys_gettid
+225    i386    readahead               sys_readahead                   __ia32_compat_sys_x86_readahead
+226    i386    setxattr                sys_setxattr                    __ia32_sys_setxattr
+227    i386    lsetxattr               sys_lsetxattr                   __ia32_sys_lsetxattr
+228    i386    fsetxattr               sys_fsetxattr                   __ia32_sys_fsetxattr
+229    i386    getxattr                sys_getxattr                    __ia32_sys_getxattr
+230    i386    lgetxattr               sys_lgetxattr                   __ia32_sys_lgetxattr
+231    i386    fgetxattr               sys_fgetxattr                   __ia32_sys_fgetxattr
+232    i386    listxattr               sys_listxattr                   __ia32_sys_listxattr
+233    i386    llistxattr              sys_llistxattr                  __ia32_sys_llistxattr
+234    i386    flistxattr              sys_flistxattr                  __ia32_sys_flistxattr
+235    i386    removexattr             sys_removexattr                 __ia32_sys_removexattr
+236    i386    lremovexattr            sys_lremovexattr                __ia32_sys_lremovexattr
+237    i386    fremovexattr            sys_fremovexattr                __ia32_sys_fremovexattr
+238    i386    tkill                   sys_tkill                       __ia32_sys_tkill
+239    i386    sendfile64              sys_sendfile64                  __ia32_sys_sendfile64
+240    i386    futex                   sys_futex_time32                __ia32_sys_futex_time32
+241    i386    sched_setaffinity       sys_sched_setaffinity           __ia32_compat_sys_sched_setaffinity
+242    i386    sched_getaffinity       sys_sched_getaffinity           __ia32_compat_sys_sched_getaffinity
+243    i386    set_thread_area         sys_set_thread_area             __ia32_sys_set_thread_area
+244    i386    get_thread_area         sys_get_thread_area             __ia32_sys_get_thread_area
+245    i386    io_setup                sys_io_setup                    __ia32_compat_sys_io_setup
+246    i386    io_destroy              sys_io_destroy                  __ia32_sys_io_destroy
+247    i386    io_getevents            sys_io_getevents_time32         __ia32_sys_io_getevents_time32
+248    i386    io_submit               sys_io_submit                   __ia32_compat_sys_io_submit
+249    i386    io_cancel               sys_io_cancel                   __ia32_sys_io_cancel
+250    i386    fadvise64               sys_fadvise64                   __ia32_compat_sys_x86_fadvise64
+# 251 is available for reuse (was briefly sys_set_zone_reclaim)
+252    i386    exit_group              sys_exit_group                  __ia32_sys_exit_group
+253    i386    lookup_dcookie          sys_lookup_dcookie              __ia32_compat_sys_lookup_dcookie
+254    i386    epoll_create            sys_epoll_create                __ia32_sys_epoll_create
+255    i386    epoll_ctl               sys_epoll_ctl                   __ia32_sys_epoll_ctl
+256    i386    epoll_wait              sys_epoll_wait                  __ia32_sys_epoll_wait
+257    i386    remap_file_pages        sys_remap_file_pages            __ia32_sys_remap_file_pages
+258    i386    set_tid_address         sys_set_tid_address             __ia32_sys_set_tid_address
+259    i386    timer_create            sys_timer_create                __ia32_compat_sys_timer_create
+260    i386    timer_settime           sys_timer_settime32             __ia32_sys_timer_settime32
+261    i386    timer_gettime           sys_timer_gettime32             __ia32_sys_timer_gettime32
+262    i386    timer_getoverrun        sys_timer_getoverrun            __ia32_sys_timer_getoverrun
+263    i386    timer_delete            sys_timer_delete                __ia32_sys_timer_delete
+264    i386    clock_settime           sys_clock_settime32             __ia32_sys_clock_settime32
+265    i386    clock_gettime           sys_clock_gettime32             __ia32_sys_clock_gettime32
+266    i386    clock_getres            sys_clock_getres_time32         __ia32_sys_clock_getres_time32
+267    i386    clock_nanosleep         sys_clock_nanosleep_time32      __ia32_sys_clock_nanosleep_time32
+268    i386    statfs64                sys_statfs64                    __ia32_compat_sys_statfs64
+269    i386    fstatfs64               sys_fstatfs64                   __ia32_compat_sys_fstatfs64
+270    i386    tgkill                  sys_tgkill                      __ia32_sys_tgkill
+271    i386    utimes                  sys_utimes_time32               __ia32_sys_utimes_time32
+272    i386    fadvise64_64            sys_fadvise64_64                __ia32_compat_sys_x86_fadvise64_64
+273    i386    vserver
+274    i386    mbind                   sys_mbind                       __ia32_sys_mbind
+275    i386    get_mempolicy           sys_get_mempolicy               __ia32_compat_sys_get_mempolicy
+276    i386    set_mempolicy           sys_set_mempolicy               __ia32_sys_set_mempolicy
+277    i386    mq_open                 sys_mq_open                     __ia32_compat_sys_mq_open
+278    i386    mq_unlink               sys_mq_unlink                   __ia32_sys_mq_unlink
+279    i386    mq_timedsend            sys_mq_timedsend_time32         __ia32_sys_mq_timedsend_time32
+280    i386    mq_timedreceive         sys_mq_timedreceive_time32      __ia32_sys_mq_timedreceive_time32
+281    i386    mq_notify               sys_mq_notify                   __ia32_compat_sys_mq_notify
+282    i386    mq_getsetattr           sys_mq_getsetattr               __ia32_compat_sys_mq_getsetattr
+283    i386    kexec_load              sys_kexec_load                  __ia32_compat_sys_kexec_load
+284    i386    waitid                  sys_waitid                      __ia32_compat_sys_waitid
+# 285 sys_setaltroot
+286    i386    add_key                 sys_add_key                     __ia32_sys_add_key
+287    i386    request_key             sys_request_key                 __ia32_sys_request_key
+288    i386    keyctl                  sys_keyctl                      __ia32_compat_sys_keyctl
+289    i386    ioprio_set              sys_ioprio_set                  __ia32_sys_ioprio_set
+290    i386    ioprio_get              sys_ioprio_get                  __ia32_sys_ioprio_get
+291    i386    inotify_init            sys_inotify_init                __ia32_sys_inotify_init
+292    i386    inotify_add_watch       sys_inotify_add_watch           __ia32_sys_inotify_add_watch
+293    i386    inotify_rm_watch        sys_inotify_rm_watch            __ia32_sys_inotify_rm_watch
+294    i386    migrate_pages           sys_migrate_pages               __ia32_sys_migrate_pages
+295    i386    openat                  sys_openat                      __ia32_compat_sys_openat
+296    i386    mkdirat                 sys_mkdirat                     __ia32_sys_mkdirat
+297    i386    mknodat                 sys_mknodat                     __ia32_sys_mknodat
+298    i386    fchownat                sys_fchownat                    __ia32_sys_fchownat
+299    i386    futimesat               sys_futimesat_time32            __ia32_sys_futimesat_time32
+300    i386    fstatat64               sys_fstatat64                   __ia32_compat_sys_x86_fstatat
+301    i386    unlinkat                sys_unlinkat                    __ia32_sys_unlinkat
+302    i386    renameat                sys_renameat                    __ia32_sys_renameat
+303    i386    linkat                  sys_linkat                      __ia32_sys_linkat
+304    i386    symlinkat               sys_symlinkat                   __ia32_sys_symlinkat
+305    i386    readlinkat              sys_readlinkat                  __ia32_sys_readlinkat
+306    i386    fchmodat                sys_fchmodat                    __ia32_sys_fchmodat
+307    i386    faccessat               sys_faccessat                   __ia32_sys_faccessat
+308    i386    pselect6                sys_pselect6_time32             __ia32_compat_sys_pselect6_time32
+309    i386    ppoll                   sys_ppoll_time32                __ia32_compat_sys_ppoll_time32
+310    i386    unshare                 sys_unshare                     __ia32_sys_unshare
+311    i386    set_robust_list         sys_set_robust_list             __ia32_compat_sys_set_robust_list
+312    i386    get_robust_list         sys_get_robust_list             __ia32_compat_sys_get_robust_list
+313    i386    splice                  sys_splice                      __ia32_sys_splice
+314    i386    sync_file_range         sys_sync_file_range             __ia32_compat_sys_x86_sync_file_range
+315    i386    tee                     sys_tee                         __ia32_sys_tee
+316    i386    vmsplice                sys_vmsplice                    __ia32_compat_sys_vmsplice
+317    i386    move_pages              sys_move_pages                  __ia32_compat_sys_move_pages
+318    i386    getcpu                  sys_getcpu                      __ia32_sys_getcpu
+319    i386    epoll_pwait             sys_epoll_pwait                 __ia32_sys_epoll_pwait
+320    i386    utimensat               sys_utimensat_time32            __ia32_sys_utimensat_time32
+321    i386    signalfd                sys_signalfd                    __ia32_compat_sys_signalfd
+322    i386    timerfd_create          sys_timerfd_create              __ia32_sys_timerfd_create
+323    i386    eventfd                 sys_eventfd                     __ia32_sys_eventfd
+324    i386    fallocate               sys_fallocate                   __ia32_compat_sys_x86_fallocate
+325    i386    timerfd_settime         sys_timerfd_settime32           __ia32_sys_timerfd_settime32
+326    i386    timerfd_gettime         sys_timerfd_gettime32           __ia32_sys_timerfd_gettime32
+327    i386    signalfd4               sys_signalfd4                   __ia32_compat_sys_signalfd4
+328    i386    eventfd2                sys_eventfd2                    __ia32_sys_eventfd2
+329    i386    epoll_create1           sys_epoll_create1               __ia32_sys_epoll_create1
+330    i386    dup3                    sys_dup3                        __ia32_sys_dup3
+331    i386    pipe2                   sys_pipe2                       __ia32_sys_pipe2
+332    i386    inotify_init1           sys_inotify_init1               __ia32_sys_inotify_init1
+333    i386    preadv                  sys_preadv                      __ia32_compat_sys_preadv
+334    i386    pwritev                 sys_pwritev                     __ia32_compat_sys_pwritev
+335    i386    rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           __ia32_compat_sys_rt_tgsigqueueinfo
+336    i386    perf_event_open         sys_perf_event_open             __ia32_sys_perf_event_open
+337    i386    recvmmsg                sys_recvmmsg_time32             __ia32_compat_sys_recvmmsg_time32
+338    i386    fanotify_init           sys_fanotify_init               __ia32_sys_fanotify_init
+339    i386    fanotify_mark           sys_fanotify_mark               __ia32_compat_sys_fanotify_mark
+340    i386    prlimit64               sys_prlimit64                   __ia32_sys_prlimit64
+341    i386    name_to_handle_at       sys_name_to_handle_at           __ia32_sys_name_to_handle_at
+342    i386    open_by_handle_at       sys_open_by_handle_at           __ia32_compat_sys_open_by_handle_at
+343    i386    clock_adjtime           sys_clock_adjtime32             __ia32_sys_clock_adjtime32
+344    i386    syncfs                  sys_syncfs                      __ia32_sys_syncfs
+345    i386    sendmmsg                sys_sendmmsg                    __ia32_compat_sys_sendmmsg
+346    i386    setns                   sys_setns                       __ia32_sys_setns
+347    i386    process_vm_readv        sys_process_vm_readv            __ia32_compat_sys_process_vm_readv
+348    i386    process_vm_writev       sys_process_vm_writev           __ia32_compat_sys_process_vm_writev
+349    i386    kcmp                    sys_kcmp                        __ia32_sys_kcmp
+350    i386    finit_module            sys_finit_module                __ia32_sys_finit_module
+351    i386    sched_setattr           sys_sched_setattr               __ia32_sys_sched_setattr
+352    i386    sched_getattr           sys_sched_getattr               __ia32_sys_sched_getattr
+353    i386    renameat2               sys_renameat2                   __ia32_sys_renameat2
+354    i386    seccomp                 sys_seccomp                     __ia32_sys_seccomp
+355    i386    getrandom               sys_getrandom                   __ia32_sys_getrandom
+356    i386    memfd_create            sys_memfd_create                __ia32_sys_memfd_create
+357    i386    bpf                     sys_bpf                         __ia32_sys_bpf
+358    i386    execveat                sys_execveat                    __ia32_compat_sys_execveat
+359    i386    socket                  sys_socket                      __ia32_sys_socket
+360    i386    socketpair              sys_socketpair                  __ia32_sys_socketpair
+361    i386    bind                    sys_bind                        __ia32_sys_bind
+362    i386    connect                 sys_connect                     __ia32_sys_connect
+363    i386    listen                  sys_listen                      __ia32_sys_listen
+364    i386    accept4                 sys_accept4                     __ia32_sys_accept4
+365    i386    getsockopt              sys_getsockopt                  __ia32_compat_sys_getsockopt
+366    i386    setsockopt              sys_setsockopt                  __ia32_compat_sys_setsockopt
+367    i386    getsockname             sys_getsockname                 __ia32_sys_getsockname
+368    i386    getpeername             sys_getpeername                 __ia32_sys_getpeername
+369    i386    sendto                  sys_sendto                      __ia32_sys_sendto
+370    i386    sendmsg                 sys_sendmsg                     __ia32_compat_sys_sendmsg
+371    i386    recvfrom                sys_recvfrom                    __ia32_compat_sys_recvfrom
+372    i386    recvmsg                 sys_recvmsg                     __ia32_compat_sys_recvmsg
+373    i386    shutdown                sys_shutdown                    __ia32_sys_shutdown
+374    i386    userfaultfd             sys_userfaultfd                 __ia32_sys_userfaultfd
+375    i386    membarrier              sys_membarrier                  __ia32_sys_membarrier
+376    i386    mlock2                  sys_mlock2                      __ia32_sys_mlock2
+377    i386    copy_file_range         sys_copy_file_range             __ia32_sys_copy_file_range
+378    i386    preadv2                 sys_preadv2                     __ia32_compat_sys_preadv2
+379    i386    pwritev2                sys_pwritev2                    __ia32_compat_sys_pwritev2
+380    i386    pkey_mprotect           sys_pkey_mprotect               __ia32_sys_pkey_mprotect
+381    i386    pkey_alloc              sys_pkey_alloc                  __ia32_sys_pkey_alloc
+382    i386    pkey_free               sys_pkey_free                   __ia32_sys_pkey_free
+383    i386    statx                   sys_statx                       __ia32_sys_statx
+384    i386    arch_prctl              sys_arch_prctl                  __ia32_compat_sys_arch_prctl
+385    i386    io_pgetevents           sys_io_pgetevents_time32        __ia32_compat_sys_io_pgetevents
+386    i386    rseq                    sys_rseq                        __ia32_sys_rseq
+393    i386    semget                  sys_semget                      __ia32_sys_semget
+394    i386    semctl                  sys_semctl                      __ia32_compat_sys_semctl
+395    i386    shmget                  sys_shmget                      __ia32_sys_shmget
+396    i386    shmctl                  sys_shmctl                      __ia32_compat_sys_shmctl
+397    i386    shmat                   sys_shmat                       __ia32_compat_sys_shmat
+398    i386    shmdt                   sys_shmdt                       __ia32_sys_shmdt
+399    i386    msgget                  sys_msgget                      __ia32_sys_msgget
+400    i386    msgsnd                  sys_msgsnd                      __ia32_compat_sys_msgsnd
+401    i386    msgrcv                  sys_msgrcv                      __ia32_compat_sys_msgrcv
+402    i386    msgctl                  sys_msgctl                      __ia32_compat_sys_msgctl
+403    i386    clock_gettime64         sys_clock_gettime               __ia32_sys_clock_gettime
+404    i386    clock_settime64         sys_clock_settime               __ia32_sys_clock_settime
+405    i386    clock_adjtime64         sys_clock_adjtime               __ia32_sys_clock_adjtime
+406    i386    clock_getres_time64     sys_clock_getres                __ia32_sys_clock_getres
+407    i386    clock_nanosleep_time64  sys_clock_nanosleep             __ia32_sys_clock_nanosleep
+408    i386    timer_gettime64         sys_timer_gettime               __ia32_sys_timer_gettime
+409    i386    timer_settime64         sys_timer_settime               __ia32_sys_timer_settime
+410    i386    timerfd_gettime64       sys_timerfd_gettime             __ia32_sys_timerfd_gettime
+411    i386    timerfd_settime64       sys_timerfd_settime             __ia32_sys_timerfd_settime
+412    i386    utimensat_time64        sys_utimensat                   __ia32_sys_utimensat
+413    i386    pselect6_time64         sys_pselect6                    __ia32_compat_sys_pselect6_time64
+414    i386    ppoll_time64            sys_ppoll                       __ia32_compat_sys_ppoll_time64
+416    i386    io_pgetevents_time64    sys_io_pgetevents               __ia32_sys_io_pgetevents
+417    i386    recvmmsg_time64         sys_recvmmsg                    __ia32_compat_sys_recvmmsg_time64
+418    i386    mq_timedsend_time64     sys_mq_timedsend                __ia32_sys_mq_timedsend
+419    i386    mq_timedreceive_time64  sys_mq_timedreceive             __ia32_sys_mq_timedreceive
+420    i386    semtimedop_time64       sys_semtimedop                  __ia32_sys_semtimedop
+421    i386    rt_sigtimedwait_time64  sys_rt_sigtimedwait             __ia32_compat_sys_rt_sigtimedwait_time64
+422    i386    futex_time64            sys_futex                       __ia32_sys_futex
+423    i386    sched_rr_get_interval_time64    sys_sched_rr_get_interval       __ia32_sys_sched_rr_get_interval
+424    i386    pidfd_send_signal       sys_pidfd_send_signal           __ia32_sys_pidfd_send_signal
+425    i386    io_uring_setup          sys_io_uring_setup              __ia32_sys_io_uring_setup
+426    i386    io_uring_enter          sys_io_uring_enter              __ia32_sys_io_uring_enter
+427    i386    io_uring_register       sys_io_uring_register           __ia32_sys_io_uring_register
+428    i386    open_tree               sys_open_tree                   __ia32_sys_open_tree
+429    i386    move_mount              sys_move_mount                  __ia32_sys_move_mount
+430    i386    fsopen                  sys_fsopen                      __ia32_sys_fsopen
+431    i386    fsconfig                sys_fsconfig                    __ia32_sys_fsconfig
+432    i386    fsmount                 sys_fsmount                     __ia32_sys_fsmount
+433    i386    fspick                  sys_fspick                      __ia32_sys_fspick
+434    i386    pidfd_open              sys_pidfd_open                  __ia32_sys_pidfd_open
+435    i386    clone3                  sys_clone3                      __ia32_sys_clone3
+437    i386    openat2                 sys_openat2                     __ia32_sys_openat2
+438    i386    pidfd_getfd             sys_pidfd_getfd                 __ia32_sys_pidfd_getfd
diff --git a/linux-user/i386/syscall_nr.h b/linux-user/i386/syscall_nr.h
deleted file mode 100644 (file)
index 3234ec2..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_I386_SYSCALL_NR_H
-#define LINUX_USER_I386_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
-#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
-#define TARGET_NR_oldstat               18
-#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_oldfstat              28
-#define TARGET_NR_pause                 29
-#define TARGET_NR_utime                 30
-#define TARGET_NR_stty          31
-#define TARGET_NR_gtty          32
-#define TARGET_NR_access                33
-#define TARGET_NR_nice          34
-#define TARGET_NR_ftime                 35
-#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
-#define TARGET_NR_brk           45
-#define TARGET_NR_setgid                46
-#define TARGET_NR_getgid                47
-#define TARGET_NR_signal                48
-#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
-#define TARGET_NR_ioctl                 54
-#define TARGET_NR_fcntl                 55
-#define TARGET_NR_mpx           56
-#define TARGET_NR_setpgid               57
-#define TARGET_NR_ulimit                58
-#define TARGET_NR_oldolduname   59
-#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
-#define TARGET_NR_ssetmask              69
-#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 compatible 2Gig 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
-#define TARGET_NR_oldlstat              84
-#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
-#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
-#define TARGET_NR_olduname             109
-#define TARGET_NR_iopl         110
-#define TARGET_NR_vhangup              111
-#define TARGET_NR_idle         112
-#define TARGET_NR_vm86old              113
-#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
-#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_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
-#define TARGET_NR_query_module 167
-#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
-#define TARGET_NR_getpmsg              188     /* some people actually want streams */
-#define TARGET_NR_putpmsg              189     /* some people actually want streams */
-#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_pivot_root           217
-#define TARGET_NR_mincore              218
-#define TARGET_NR_madvise              219
-#define TARGET_NR_madvise1             219     /* delete when C lib stub is removed */
-#define TARGET_NR_getdents64           220
-#define TARGET_NR_fcntl64              221
-/* 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_set_thread_area      243
-#define TARGET_NR_get_thread_area      244
-#define TARGET_NR_io_setup             245
-#define TARGET_NR_io_destroy           246
-#define TARGET_NR_io_getevents 247
-#define TARGET_NR_io_submit            248
-#define TARGET_NR_io_cancel            249
-#define TARGET_NR_fadvise64            250
-/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
-#define TARGET_NR_exit_group           252
-#define TARGET_NR_lookup_dcookie       253
-#define TARGET_NR_epoll_create 254
-#define TARGET_NR_epoll_ctl            255
-#define TARGET_NR_epoll_wait           256
-#define TARGET_NR_remap_file_pages     257
-#define TARGET_NR_set_tid_address      258
-#define TARGET_NR_timer_create 259
-#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)
-#define TARGET_NR_statfs64             268
-#define TARGET_NR_fstatfs64            269
-#define TARGET_NR_tgkill               270
-#define TARGET_NR_utimes               271
-#define TARGET_NR_fadvise64_64 272
-#define TARGET_NR_vserver              273
-#define TARGET_NR_mbind                274
-#define TARGET_NR_get_mempolicy        275
-#define TARGET_NR_set_mempolicy        276
-#define TARGET_NR_mq_open              277
-#define TARGET_NR_mq_unlink            (TARGET_NR_mq_open+1)
-#define TARGET_NR_mq_timedsend (TARGET_NR_mq_open+2)
-#define TARGET_NR_mq_timedreceive      (TARGET_NR_mq_open+3)
-#define TARGET_NR_mq_notify            (TARGET_NR_mq_open+4)
-#define TARGET_NR_mq_getsetattr        (TARGET_NR_mq_open+5)
-#define TARGET_NR_kexec_load           283
-#define TARGET_NR_waitid               284
-/* #define TARGET_NR_sys_setaltroot    285 */
-#define TARGET_NR_add_key              286
-#define TARGET_NR_request_key  287
-#define TARGET_NR_keyctl               288
-#define TARGET_NR_ioprio_set           289
-#define TARGET_NR_ioprio_get           290
-#define TARGET_NR_inotify_init 291
-#define TARGET_NR_inotify_add_watch    292
-#define TARGET_NR_inotify_rm_watch     293
-#define TARGET_NR_migrate_pages        294
-#define TARGET_NR_openat               295
-#define TARGET_NR_mkdirat              296
-#define TARGET_NR_mknodat              297
-#define TARGET_NR_fchownat             298
-#define TARGET_NR_futimesat            299
-#define TARGET_NR_fstatat64            300
-#define TARGET_NR_unlinkat             301
-#define TARGET_NR_renameat             302
-#define TARGET_NR_linkat               303
-#define TARGET_NR_symlinkat            304
-#define TARGET_NR_readlinkat           305
-#define TARGET_NR_fchmodat             306
-#define TARGET_NR_faccessat            307
-#define TARGET_NR_pselect6             308
-#define TARGET_NR_ppoll                309
-#define TARGET_NR_unshare              310
-#define TARGET_NR_set_robust_list      311
-#define TARGET_NR_get_robust_list      312
-#define TARGET_NR_splice               313
-#define TARGET_NR_sync_file_range      314
-#define TARGET_NR_tee          315
-#define TARGET_NR_vmsplice             316
-#define TARGET_NR_move_pages           317
-#define TARGET_NR_getcpu               318
-#define TARGET_NR_epoll_pwait  319
-#define TARGET_NR_utimensat            320
-#define TARGET_NR_signalfd             321
-#define TARGET_NR_timerfd_create       322
-#define TARGET_NR_eventfd              323
-#define TARGET_NR_fallocate            324
-#define TARGET_NR_timerfd_settime      325
-#define TARGET_NR_timerfd_gettime      326
-#define TARGET_NR_signalfd4            327
-#define TARGET_NR_eventfd2             328
-#define TARGET_NR_epoll_create1        329
-#define TARGET_NR_dup3                 330
-#define TARGET_NR_pipe2                331
-#define TARGET_NR_inotify_init1        332
-#define TARGET_NR_preadv                333
-#define TARGET_NR_pwritev               334
-#define TARGET_NR_rt_tgsigqueueinfo     335
-#define TARGET_NR_perf_event_open       336
-#define TARGET_NR_recvmmsg              337
-#define TARGET_NR_fanotify_init         338
-#define TARGET_NR_fanotify_mark         339
-#define TARGET_NR_prlimit64             340
-#define TARGET_NR_name_to_handle_at     341
-#define TARGET_NR_open_by_handle_at     342
-#define TARGET_NR_clock_adjtime         343
-#define TARGET_NR_syncfs                344
-#define TARGET_NR_sendmmsg              345
-#define TARGET_NR_setns                 346
-#define TARGET_NR_process_vm_readv      347
-#define TARGET_NR_process_vm_writev     348
-#define TARGET_NR_kcmp                  349
-#define TARGET_NR_finit_module          350
-#define TARGET_NR_sched_setattr         351
-#define TARGET_NR_sched_getattr         352
-#define TARGET_NR_renameat2             353
-#define TARGET_NR_seccomp               354
-#define TARGET_NR_getrandom             355
-#define TARGET_NR_memfd_create          356
-#define TARGET_NR_bpf                   357
-#define TARGET_NR_execveat              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_userfaultfd           374
-#define TARGET_NR_membarrier            375
-#define TARGET_NR_mlock2                376
-#define TARGET_NR_copy_file_range       377
-
-#endif
diff --git a/linux-user/i386/syscallhdr.sh b/linux-user/i386/syscallhdr.sh
new file mode 100644 (file)
index 0000000..b2eca96
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_I386_`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 | (
+    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"
index 0b44530854c8be0eaa69f0188765190b8fa66a23..2207d24c2eb059f8ad069d3487a4817c6c59b14e 100644 (file)
@@ -33,6 +33,8 @@ static inline void cpu_clone_regs_parent(CPUX86State *env, unsigned flags)
 {
 }
 
+abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr);
+
 #if defined(TARGET_ABI32)
 abi_long do_set_thread_area(CPUX86State *env, abi_ulong ptr);
 
@@ -42,8 +44,6 @@ static inline void cpu_set_tls(CPUX86State *env, target_ulong newtls)
     cpu_x86_load_seg(env, R_GS, env->segs[R_GS].selector);
 }
 #else
-abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr);
-
 static inline void cpu_set_tls(CPUX86State *env, target_ulong newtls)
 {
     do_arch_prctl(env, TARGET_ARCH_SET_FS, newtls);
diff --git a/linux-user/m68k/Makefile.objs b/linux-user/m68k/Makefile.objs
new file mode 100644 (file)
index 0000000..961bd05
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/m68k/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/m68k/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/m68k/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/m68k/syscall.tbl b/linux-user/m68k/syscall.tbl
new file mode 100644 (file)
index 0000000..f4f49fc
--- /dev/null
@@ -0,0 +1,439 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for m68k
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "common" for this file
+#
+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      common  waitpid                         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     common  time                            sys_time32
+14     common  mknod                           sys_mknod
+15     common  chmod                           sys_chmod
+16     common  chown                           sys_chown16
+# 17 was break
+18     common  oldstat                         sys_stat
+19     common  lseek                           sys_lseek
+20     common  getpid                          sys_getpid
+21     common  mount                           sys_mount
+22     common  umount                          sys_oldumount
+23     common  setuid                          sys_setuid16
+24     common  getuid                          sys_getuid16
+25     common  stime                           sys_stime32
+26     common  ptrace                          sys_ptrace
+27     common  alarm                           sys_alarm
+28     common  oldfstat                        sys_fstat
+29     common  pause                           sys_pause
+30     common  utime                           sys_utime32
+# 31 was stty
+# 32 was gtty
+33     common  access                          sys_access
+34     common  nice                            sys_nice
+# 35 was 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 prof
+45     common  brk                             sys_brk
+46     common  setgid                          sys_setgid16
+47     common  getgid                          sys_getgid16
+48     common  signal                          sys_signal
+49     common  geteuid                         sys_geteuid16
+50     common  getegid                         sys_getegid16
+51     common  acct                            sys_acct
+52     common  umount2                         sys_umount
+# 53 was lock
+54     common  ioctl                           sys_ioctl
+55     common  fcntl                           sys_fcntl
+# 56 was mpx
+57     common  setpgid                         sys_setpgid
+# 58 was ulimit
+# 59 was oldolduname
+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     common  sgetmask                        sys_sgetmask
+69     common  ssetmask                        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
+76     common  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     common  select                          sys_old_select
+83     common  symlink                         sys_symlink
+84     common  oldlstat                        sys_lstat
+85     common  readlink                        sys_readlink
+86     common  uselib                          sys_uselib
+87     common  swapon                          sys_swapon
+88     common  reboot                          sys_reboot
+89     common  readdir                         sys_old_readdir
+90     common  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 profil
+99     common  statfs                          sys_statfs
+100    common  fstatfs                         sys_fstatfs
+# 101 was ioperm
+102    common  socketcall                      sys_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 olduname
+# 110 was iopl
+111    common  vhangup                         sys_vhangup
+# 112 was idle
+# 113 was vm86
+114    common  wait4                           sys_wait4
+115    common  swapoff                         sys_swapoff
+116    common  sysinfo                         sys_sysinfo
+117    common  ipc                             sys_ipc
+118    common  fsync                           sys_fsync
+119    common  sigreturn                       sys_sigreturn
+120    common  clone                           __sys_clone
+121    common  setdomainname                   sys_setdomainname
+122    common  uname                           sys_newuname
+123    common  cacheflush                      sys_cacheflush
+124    common  adjtimex                        sys_adjtimex_time32
+125    common  mprotect                        sys_mprotect
+126    common  sigprocmask                     sys_sigprocmask
+127    common  create_module                   sys_ni_syscall
+128    common  init_module                     sys_init_module
+129    common  delete_module                   sys_delete_module
+130    common  get_kernel_syms                 sys_ni_syscall
+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 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    common  getpagesize                     sys_getpagesize
+167    common  query_module                    sys_ni_syscall
+168    common  poll                            sys_poll
+169    common  nfsservctl                      sys_ni_syscall
+170    common  setresgid                       sys_setresgid16
+171    common  getresgid                       sys_getresgid16
+172    common  prctl                           sys_prctl
+173    common  rt_sigreturn                    sys_rt_sigreturn
+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
+181    common  pwrite64                        sys_pwrite64
+182    common  lchown                          sys_lchown16
+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    common  getpmsg                         sys_ni_syscall
+189    common  putpmsg                         sys_ni_syscall
+190    common  vfork                           __sys_vfork
+191    common  ugetrlimit                      sys_getrlimit
+192    common  mmap2                           sys_mmap2
+193    common  truncate64                      sys_truncate64
+194    common  ftruncate64                     sys_ftruncate64
+195    common  stat64                          sys_stat64
+196    common  lstat64                         sys_lstat64
+197    common  fstat64                         sys_fstat64
+198    common  chown32                         sys_chown
+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  lchown32                        sys_lchown
+213    common  setuid32                        sys_setuid
+214    common  setgid32                        sys_setgid
+215    common  setfsuid32                      sys_setfsuid
+216    common  setfsgid32                      sys_setfsgid
+217    common  pivot_root                      sys_pivot_root
+# 218 is reserved
+# 219 is reserved
+220    common  getdents64                      sys_getdents64
+221    common  gettid                          sys_gettid
+222    common  tkill                           sys_tkill
+223    common  setxattr                        sys_setxattr
+224    common  lsetxattr                       sys_lsetxattr
+225    common  fsetxattr                       sys_fsetxattr
+226    common  getxattr                        sys_getxattr
+227    common  lgetxattr                       sys_lgetxattr
+228    common  fgetxattr                       sys_fgetxattr
+229    common  listxattr                       sys_listxattr
+230    common  llistxattr                      sys_llistxattr
+231    common  flistxattr                      sys_flistxattr
+232    common  removexattr                     sys_removexattr
+233    common  lremovexattr                    sys_lremovexattr
+234    common  fremovexattr                    sys_fremovexattr
+235    common  futex                           sys_futex_time32
+236    common  sendfile64                      sys_sendfile64
+237    common  mincore                         sys_mincore
+238    common  madvise                         sys_madvise
+239    common  fcntl64                         sys_fcntl64
+240    common  readahead                       sys_readahead
+241    common  io_setup                        sys_io_setup
+242    common  io_destroy                      sys_io_destroy
+243    common  io_getevents                    sys_io_getevents_time32
+244    common  io_submit                       sys_io_submit
+245    common  io_cancel                       sys_io_cancel
+246    common  fadvise64                       sys_fadvise64
+247    common  exit_group                      sys_exit_group
+248    common  lookup_dcookie                  sys_lookup_dcookie
+249    common  epoll_create                    sys_epoll_create
+250    common  epoll_ctl                       sys_epoll_ctl
+251    common  epoll_wait                      sys_epoll_wait
+252    common  remap_file_pages                sys_remap_file_pages
+253    common  set_tid_address                 sys_set_tid_address
+254    common  timer_create                    sys_timer_create
+255    common  timer_settime                   sys_timer_settime32
+256    common  timer_gettime                   sys_timer_gettime32
+257    common  timer_getoverrun                sys_timer_getoverrun
+258    common  timer_delete                    sys_timer_delete
+259    common  clock_settime                   sys_clock_settime32
+260    common  clock_gettime                   sys_clock_gettime32
+261    common  clock_getres                    sys_clock_getres_time32
+262    common  clock_nanosleep                 sys_clock_nanosleep_time32
+263    common  statfs64                        sys_statfs64
+264    common  fstatfs64                       sys_fstatfs64
+265    common  tgkill                          sys_tgkill
+266    common  utimes                          sys_utimes_time32
+267    common  fadvise64_64                    sys_fadvise64_64
+268    common  mbind                           sys_mbind
+269    common  get_mempolicy                   sys_get_mempolicy
+270    common  set_mempolicy                   sys_set_mempolicy
+271    common  mq_open                         sys_mq_open
+272    common  mq_unlink                       sys_mq_unlink
+273    common  mq_timedsend                    sys_mq_timedsend_time32
+274    common  mq_timedreceive                 sys_mq_timedreceive_time32
+275    common  mq_notify                       sys_mq_notify
+276    common  mq_getsetattr                   sys_mq_getsetattr
+277    common  waitid                          sys_waitid
+# 278 was vserver
+279    common  add_key                         sys_add_key
+280    common  request_key                     sys_request_key
+281    common  keyctl                          sys_keyctl
+282    common  ioprio_set                      sys_ioprio_set
+283    common  ioprio_get                      sys_ioprio_get
+284    common  inotify_init                    sys_inotify_init
+285    common  inotify_add_watch               sys_inotify_add_watch
+286    common  inotify_rm_watch                sys_inotify_rm_watch
+287    common  migrate_pages                   sys_migrate_pages
+288    common  openat                          sys_openat
+289    common  mkdirat                         sys_mkdirat
+290    common  mknodat                         sys_mknodat
+291    common  fchownat                        sys_fchownat
+292    common  futimesat                       sys_futimesat_time32
+293    common  fstatat64                       sys_fstatat64
+294    common  unlinkat                        sys_unlinkat
+295    common  renameat                        sys_renameat
+296    common  linkat                          sys_linkat
+297    common  symlinkat                       sys_symlinkat
+298    common  readlinkat                      sys_readlinkat
+299    common  fchmodat                        sys_fchmodat
+300    common  faccessat                       sys_faccessat
+301    common  pselect6                        sys_pselect6_time32
+302    common  ppoll                           sys_ppoll_time32
+303    common  unshare                         sys_unshare
+304    common  set_robust_list                 sys_set_robust_list
+305    common  get_robust_list                 sys_get_robust_list
+306    common  splice                          sys_splice
+307    common  sync_file_range                 sys_sync_file_range
+308    common  tee                             sys_tee
+309    common  vmsplice                        sys_vmsplice
+310    common  move_pages                      sys_move_pages
+311    common  sched_setaffinity               sys_sched_setaffinity
+312    common  sched_getaffinity               sys_sched_getaffinity
+313    common  kexec_load                      sys_kexec_load
+314    common  getcpu                          sys_getcpu
+315    common  epoll_pwait                     sys_epoll_pwait
+316    common  utimensat                       sys_utimensat_time32
+317    common  signalfd                        sys_signalfd
+318    common  timerfd_create                  sys_timerfd_create
+319    common  eventfd                         sys_eventfd
+320    common  fallocate                       sys_fallocate
+321    common  timerfd_settime                 sys_timerfd_settime32
+322    common  timerfd_gettime                 sys_timerfd_gettime32
+323    common  signalfd4                       sys_signalfd4
+324    common  eventfd2                        sys_eventfd2
+325    common  epoll_create1                   sys_epoll_create1
+326    common  dup3                            sys_dup3
+327    common  pipe2                           sys_pipe2
+328    common  inotify_init1                   sys_inotify_init1
+329    common  preadv                          sys_preadv
+330    common  pwritev                         sys_pwritev
+331    common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+332    common  perf_event_open                 sys_perf_event_open
+333    common  get_thread_area                 sys_get_thread_area
+334    common  set_thread_area                 sys_set_thread_area
+335    common  atomic_cmpxchg_32               sys_atomic_cmpxchg_32
+336    common  atomic_barrier                  sys_atomic_barrier
+337    common  fanotify_init                   sys_fanotify_init
+338    common  fanotify_mark                   sys_fanotify_mark
+339    common  prlimit64                       sys_prlimit64
+340    common  name_to_handle_at               sys_name_to_handle_at
+341    common  open_by_handle_at               sys_open_by_handle_at
+342    common  clock_adjtime                   sys_clock_adjtime32
+343    common  syncfs                          sys_syncfs
+344    common  setns                           sys_setns
+345    common  process_vm_readv                sys_process_vm_readv
+346    common  process_vm_writev               sys_process_vm_writev
+347    common  kcmp                            sys_kcmp
+348    common  finit_module                    sys_finit_module
+349    common  sched_setattr                   sys_sched_setattr
+350    common  sched_getattr                   sys_sched_getattr
+351    common  renameat2                       sys_renameat2
+352    common  getrandom                       sys_getrandom
+353    common  memfd_create                    sys_memfd_create
+354    common  bpf                             sys_bpf
+355    common  execveat                        sys_execveat
+356    common  socket                          sys_socket
+357    common  socketpair                      sys_socketpair
+358    common  bind                            sys_bind
+359    common  connect                         sys_connect
+360    common  listen                          sys_listen
+361    common  accept4                         sys_accept4
+362    common  getsockopt                      sys_getsockopt
+363    common  setsockopt                      sys_setsockopt
+364    common  getsockname                     sys_getsockname
+365    common  getpeername                     sys_getpeername
+366    common  sendto                          sys_sendto
+367    common  sendmsg                         sys_sendmsg
+368    common  recvfrom                        sys_recvfrom
+369    common  recvmsg                         sys_recvmsg
+370    common  shutdown                        sys_shutdown
+371    common  recvmmsg                        sys_recvmmsg_time32
+372    common  sendmmsg                        sys_sendmmsg
+373    common  userfaultfd                     sys_userfaultfd
+374    common  membarrier                      sys_membarrier
+375    common  mlock2                          sys_mlock2
+376    common  copy_file_range                 sys_copy_file_range
+377    common  preadv2                         sys_preadv2
+378    common  pwritev2                        sys_pwritev2
+379    common  statx                           sys_statx
+380    common  seccomp                         sys_seccomp
+381    common  pkey_mprotect                   sys_pkey_mprotect
+382    common  pkey_alloc                      sys_pkey_alloc
+383    common  pkey_free                       sys_pkey_free
+384    common  rseq                            sys_rseq
+# room for arch specific calls
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl
+397    common  shmat                           sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  msgget                          sys_msgget
+400    common  msgsnd                          sys_msgsnd
+401    common  msgrcv                          sys_msgrcv
+402    common  msgctl                          sys_msgctl
+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
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/m68k/syscall_nr.h b/linux-user/m68k/syscall_nr.h
deleted file mode 100644 (file)
index 01aee34..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_M68K_SYSCALL_NR_H
-#define LINUX_USER_M68K_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_waitpid              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_time                13
-#define TARGET_NR_mknod               14
-#define TARGET_NR_chmod               15
-#define TARGET_NR_chown               16
-#define TARGET_NR_break               17
-#define TARGET_NR_oldstat             18
-#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_oldfstat            28
-#define TARGET_NR_pause               29
-#define TARGET_NR_utime               30
-#define TARGET_NR_stty                31
-#define TARGET_NR_gtty                32
-#define TARGET_NR_access              33
-#define TARGET_NR_nice                34
-#define TARGET_NR_ftime               35
-#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
-#define TARGET_NR_brk                 45
-#define TARGET_NR_setgid              46
-#define TARGET_NR_getgid              47
-#define TARGET_NR_signal              48
-#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
-#define TARGET_NR_ioctl               54
-#define TARGET_NR_fcntl               55
-#define TARGET_NR_mpx                 56
-#define TARGET_NR_setpgid             57
-#define TARGET_NR_ulimit              58
-#define TARGET_NR_oldolduname         59
-#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
-#define TARGET_NR_ssetmask            69
-#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
-#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
-#define TARGET_NR_oldlstat            84
-#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
-#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
-#define TARGET_NR_olduname           109
-//#define TARGET_NR_iopl               /* 110 */ not supported
-#define TARGET_NR_vhangup            111
-//#define TARGET_NR_idle               /* 112 */ Obsolete
-//#define TARGET_NR_vm86               /* 113 */ not supported
-#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_cacheflush         123
-#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_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_getpagesize        166
-#define TARGET_NR_query_module       167
-#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_lchown             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
-#define TARGET_NR_getpmsg            188     /* some people actually want streams */
-#define TARGET_NR_putpmsg            189     /* some people actually want streams */
-#define TARGET_NR_vfork              190
-#define TARGET_NR_ugetrlimit         191
-#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_chown32            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_lchown32           212
-#define TARGET_NR_setuid32           213
-#define TARGET_NR_setgid32           214
-#define TARGET_NR_setfsuid32         215
-#define TARGET_NR_setfsgid32         216
-#define TARGET_NR_pivot_root         217
-#define TARGET_NR_getdents64         220
-#define TARGET_NR_gettid             221
-#define TARGET_NR_tkill              222
-#define TARGET_NR_setxattr           223
-#define TARGET_NR_lsetxattr          224
-#define TARGET_NR_fsetxattr          225
-#define TARGET_NR_getxattr           226
-#define TARGET_NR_lgetxattr          227
-#define TARGET_NR_fgetxattr          228
-#define TARGET_NR_listxattr          229
-#define TARGET_NR_llistxattr         230
-#define TARGET_NR_flistxattr         231
-#define TARGET_NR_removexattr        232
-#define TARGET_NR_lremovexattr       233
-#define TARGET_NR_fremovexattr       234
-#define TARGET_NR_futex              235
-#define TARGET_NR_sendfile64         236
-#define TARGET_NR_mincore            237
-#define TARGET_NR_madvise            238
-#define TARGET_NR_fcntl64            239
-#define TARGET_NR_readahead          240
-#define TARGET_NR_io_setup           241
-#define TARGET_NR_io_destroy         242
-#define TARGET_NR_io_getevents       243
-#define TARGET_NR_io_submit          244
-#define TARGET_NR_io_cancel          245
-#define TARGET_NR_fadvise64          246
-#define TARGET_NR_exit_group         247
-#define TARGET_NR_lookup_dcookie     248
-#define TARGET_NR_epoll_create       249
-#define TARGET_NR_epoll_ctl          250
-#define TARGET_NR_epoll_wait         251
-#define TARGET_NR_remap_file_pages   252
-#define TARGET_NR_set_tid_address    253
-#define TARGET_NR_timer_create       254
-#define TARGET_NR_timer_settime      255
-#define TARGET_NR_timer_gettime      256
-#define TARGET_NR_timer_getoverrun   257
-#define TARGET_NR_timer_delete       258
-#define TARGET_NR_clock_settime      259
-#define TARGET_NR_clock_gettime      260
-#define TARGET_NR_clock_getres       261
-#define TARGET_NR_clock_nanosleep    262
-#define TARGET_NR_statfs64           263
-#define TARGET_NR_fstatfs64          264
-#define TARGET_NR_tgkill             265
-#define TARGET_NR_utimes             266
-#define TARGET_NR_fadvise64_64       267
-#define TARGET_NR_mbind              268
-#define TARGET_NR_get_mempolicy      269
-#define TARGET_NR_set_mempolicy      270
-#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_waitid             277
-#define TARGET_NR_vserver            278
-#define TARGET_NR_add_key            279
-#define TARGET_NR_request_key        280
-#define TARGET_NR_keyctl             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
-#define TARGET_NR_migrate_pages        287
-#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_fstatat64            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
-#define TARGET_NR_move_pages           310
-#define TARGET_NR_sched_setaffinity    311
-#define TARGET_NR_sched_getaffinity    312
-#define TARGET_NR_kexec_load           313
-#define TARGET_NR_getcpu               314
-#define TARGET_NR_epoll_pwait  315
-#define TARGET_NR_utimensat            316
-#define TARGET_NR_signalfd             317
-#define TARGET_NR_timerfd_create       318
-#define TARGET_NR_eventfd              319
-#define TARGET_NR_fallocate            320
-#define TARGET_NR_timerfd_settime      321
-#define TARGET_NR_timerfd_gettime      322
-#define TARGET_NR_signalfd4            323
-#define TARGET_NR_eventfd2             324
-#define TARGET_NR_epoll_create1        325
-#define TARGET_NR_dup3                 326
-#define TARGET_NR_pipe2                327
-#define TARGET_NR_inotify_init1        328
-#define TARGET_NR_inotify_init1         328
-#define TARGET_NR_preadv                329
-#define TARGET_NR_pwritev               330
-#define TARGET_NR_rt_tgsigqueueinfo     331
-#define TARGET_NR_perf_event_open       332
-#define TARGET_NR_get_thread_area       333
-#define TARGET_NR_set_thread_area       334
-#define TARGET_NR_atomic_cmpxchg_32     335
-#define TARGET_NR_atomic_barrier        336
-#define TARGET_NR_fanotify_init         337
-#define TARGET_NR_fanotify_mark         338
-#define TARGET_NR_prlimit64             339
-#define TARGET_NR_name_to_handle_at     340
-#define TARGET_NR_open_by_handle_at     341
-#define TARGET_NR_clock_adjtime         342
-#define TARGET_NR_syncfs                343
-#define TARGET_NR_setns                 344
-#define TARGET_NR_process_vm_readv      345
-#define TARGET_NR_process_vm_writev     346
-#define TARGET_NR_kcmp                  347
-#define TARGET_NR_finit_module          348
-#define TARGET_NR_sched_setattr         349
-#define TARGET_NR_sched_getattr         350
-#define TARGET_NR_renameat2             351
-#define TARGET_NR_getrandom             352
-#define TARGET_NR_memfd_create          353
-#define TARGET_NR_bpf                   354
-#define TARGET_NR_execveat              355
-#define TARGET_NR_socket                356
-#define TARGET_NR_socketpair            357
-#define TARGET_NR_bind                  358
-#define TARGET_NR_connect               359
-#define TARGET_NR_listen                360
-#define TARGET_NR_accept4               361
-#define TARGET_NR_getsockopt            362
-#define TARGET_NR_setsockopt            363
-#define TARGET_NR_getsockname           364
-#define TARGET_NR_getpeername           365
-#define TARGET_NR_sendto                366
-#define TARGET_NR_sendmsg               367
-#define TARGET_NR_recvfrom              368
-#define TARGET_NR_recvmsg               369
-#define TARGET_NR_shutdown              370
-#define TARGET_NR_recvmmsg              371
-#define TARGET_NR_sendmmsg              372
-#define TARGET_NR_userfaultfd           373
-#define TARGET_NR_membarrier            374
-#define TARGET_NR_mlock2                375
-#define TARGET_NR_copy_file_range       376
-#define TARGET_NR_preadv2               377
-#define TARGET_NR_pwritev2              378
-#define TARGET_NR_statx                 379
-#define TARGET_NR_seccomp               380
-#define TARGET_NR_pkey_mprotect         381
-#define TARGET_NR_pkey_alloc            382
-#define TARGET_NR_pkey_free             383
-#define TARGET_NR_rseq                  384
-/* room for arch specific calls */
-#define TARGET_NR_semget                393
-#define TARGET_NR_semctl                394
-#define TARGET_NR_shmget                395
-#define TARGET_NR_shmctl                396
-#define TARGET_NR_shmat                 397
-#define TARGET_NR_shmdt                 398
-#define TARGET_NR_msgget                399
-#define TARGET_NR_msgsnd                400
-#define TARGET_NR_msgrcv                401
-#define TARGET_NR_msgctl                402
-#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
-/* 435 reserved for clone3 */
-#endif
diff --git a/linux-user/m68k/syscallhdr.sh b/linux-user/m68k/syscallhdr.sh
new file mode 100644 (file)
index 0000000..eeb4d01
--- /dev/null
@@ -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_M68K_`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"
diff --git a/linux-user/microblaze/Makefile.objs b/linux-user/microblaze/Makefile.objs
new file mode 100644 (file)
index 0000000..bb8b318
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/microblaze/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/microblaze/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/microblaze/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/microblaze/syscall.tbl b/linux-user/microblaze/syscall.tbl
new file mode 100644 (file)
index 0000000..4c67b11
--- /dev/null
@@ -0,0 +1,445 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for microblaze
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "common" for this file
+#
+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      common  waitpid                         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     common  time                            sys_time32
+14     common  mknod                           sys_mknod
+15     common  chmod                           sys_chmod
+16     common  lchown                          sys_lchown
+17     common  break                           sys_ni_syscall
+18     common  oldstat                         sys_ni_syscall
+19     common  lseek                           sys_lseek
+20     common  getpid                          sys_getpid
+21     common  mount                           sys_mount
+22     common  umount                          sys_oldumount
+23     common  setuid                          sys_setuid
+24     common  getuid                          sys_getuid
+25     common  stime                           sys_stime32
+26     common  ptrace                          sys_ptrace
+27     common  alarm                           sys_alarm
+28     common  oldfstat                        sys_ni_syscall
+29     common  pause                           sys_pause
+30     common  utime                           sys_utime32
+31     common  stty                            sys_ni_syscall
+32     common  gtty                            sys_ni_syscall
+33     common  access                          sys_access
+34     common  nice                            sys_nice
+35     common  ftime                           sys_ni_syscall
+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     common  prof                            sys_ni_syscall
+45     common  brk                             sys_brk
+46     common  setgid                          sys_setgid
+47     common  getgid                          sys_getgid
+48     common  signal                          sys_signal
+49     common  geteuid                         sys_geteuid
+50     common  getegid                         sys_getegid
+51     common  acct                            sys_acct
+52     common  umount2                         sys_umount
+53     common  lock                            sys_ni_syscall
+54     common  ioctl                           sys_ioctl
+55     common  fcntl                           sys_fcntl
+56     common  mpx                             sys_ni_syscall
+57     common  setpgid                         sys_setpgid
+58     common  ulimit                          sys_ni_syscall
+59     common  oldolduname                     sys_ni_syscall
+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_ni_syscall
+68     common  sgetmask                        sys_sgetmask
+69     common  ssetmask                        sys_ssetmask
+70     common  setreuid                        sys_setreuid
+71     common  setregid                        sys_setregid
+72     common  sigsuspend                      sys_ni_syscall
+73     common  sigpending                      sys_sigpending
+74     common  sethostname                     sys_sethostname
+75     common  setrlimit                       sys_setrlimit
+76     common  getrlimit                       sys_ni_syscall
+77     common  getrusage                       sys_getrusage
+78     common  gettimeofday                    sys_gettimeofday
+79     common  settimeofday                    sys_settimeofday
+80     common  getgroups                       sys_getgroups
+81     common  setgroups                       sys_setgroups
+82     common  select                          sys_ni_syscall
+83     common  symlink                         sys_symlink
+84     common  oldlstat                        sys_ni_syscall
+85     common  readlink                        sys_readlink
+86     common  uselib                          sys_uselib
+87     common  swapon                          sys_swapon
+88     common  reboot                          sys_reboot
+89     common  readdir                         sys_ni_syscall
+90     common  mmap                            sys_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_fchown
+96     common  getpriority                     sys_getpriority
+97     common  setpriority                     sys_setpriority
+98     common  profil                          sys_ni_syscall
+99     common  statfs                          sys_statfs
+100    common  fstatfs                         sys_fstatfs
+101    common  ioperm                          sys_ni_syscall
+102    common  socketcall                      sys_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    common  olduname                        sys_ni_syscall
+110    common  iopl                            sys_ni_syscall
+111    common  vhangup                         sys_vhangup
+112    common  idle                            sys_ni_syscall
+113    common  vm86old                         sys_ni_syscall
+114    common  wait4                           sys_wait4
+115    common  swapoff                         sys_swapoff
+116    common  sysinfo                         sys_sysinfo
+117    common  ipc                             sys_ni_syscall
+118    common  fsync                           sys_fsync
+119    common  sigreturn                       sys_ni_syscall
+120    common  clone                           sys_clone
+121    common  setdomainname                   sys_setdomainname
+122    common  uname                           sys_newuname
+123    common  modify_ldt                      sys_ni_syscall
+124    common  adjtimex                        sys_adjtimex_time32
+125    common  mprotect                        sys_mprotect
+126    common  sigprocmask                     sys_sigprocmask
+127    common  create_module                   sys_ni_syscall
+128    common  init_module                     sys_init_module
+129    common  delete_module                   sys_delete_module
+130    common  get_kernel_syms                 sys_ni_syscall
+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    common  afs_syscall                     sys_ni_syscall
+138    common  setfsuid                        sys_setfsuid
+139    common  setfsgid                        sys_setfsgid
+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_setresuid
+165    common  getresuid                       sys_getresuid
+166    common  vm86                            sys_ni_syscall
+167    common  query_module                    sys_ni_syscall
+168    common  poll                            sys_poll
+169    common  nfsservctl                      sys_ni_syscall
+170    common  setresgid                       sys_setresgid
+171    common  getresgid                       sys_getresgid
+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
+181    common  pwrite64                        sys_pwrite64
+182    common  chown                           sys_chown
+183    common  getcwd                          sys_getcwd
+184    common  capget                          sys_capget
+185    common  capset                          sys_capset
+186    common  sigaltstack                     sys_ni_syscall
+187    common  sendfile                        sys_sendfile
+188    common  getpmsg                         sys_ni_syscall
+189    common  putpmsg                         sys_ni_syscall
+190    common  vfork                           sys_vfork
+191    common  ugetrlimit                      sys_getrlimit
+192    common  mmap2                           sys_mmap2
+193    common  truncate64                      sys_truncate64
+194    common  ftruncate64                     sys_ftruncate64
+195    common  stat64                          sys_stat64
+196    common  lstat64                         sys_lstat64
+197    common  fstat64                         sys_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  pivot_root                      sys_pivot_root
+218    common  mincore                         sys_mincore
+219    common  madvise                         sys_madvise
+220    common  getdents64                      sys_getdents64
+221    common  fcntl64                         sys_fcntl64
+# 222 is reserved for TUX
+# 223 is unused
+224    common  gettid                          sys_gettid
+225    common  readahead                       sys_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  set_thread_area                 sys_ni_syscall
+244    common  get_thread_area                 sys_ni_syscall
+245    common  io_setup                        sys_io_setup
+246    common  io_destroy                      sys_io_destroy
+247    common  io_getevents                    sys_io_getevents_time32
+248    common  io_submit                       sys_io_submit
+249    common  io_cancel                       sys_io_cancel
+250    common  fadvise64                       sys_fadvise64
+# 251 is available for reuse (was briefly sys_set_zone_reclaim)
+252    common  exit_group                      sys_exit_group
+253    common  lookup_dcookie                  sys_lookup_dcookie
+254    common  epoll_create                    sys_epoll_create
+255    common  epoll_ctl                       sys_epoll_ctl
+256    common  epoll_wait                      sys_epoll_wait
+257    common  remap_file_pages                sys_remap_file_pages
+258    common  set_tid_address                 sys_set_tid_address
+259    common  timer_create                    sys_timer_create
+260    common  timer_settime                   sys_timer_settime32
+261    common  timer_gettime                   sys_timer_gettime32
+262    common  timer_getoverrun                sys_timer_getoverrun
+263    common  timer_delete                    sys_timer_delete
+264    common  clock_settime                   sys_clock_settime32
+265    common  clock_gettime                   sys_clock_gettime32
+266    common  clock_getres                    sys_clock_getres_time32
+267    common  clock_nanosleep                 sys_clock_nanosleep_time32
+268    common  statfs64                        sys_statfs64
+269    common  fstatfs64                       sys_fstatfs64
+270    common  tgkill                          sys_tgkill
+271    common  utimes                          sys_utimes_time32
+272    common  fadvise64_64                    sys_fadvise64_64
+273    common  vserver                         sys_ni_syscall
+274    common  mbind                           sys_mbind
+275    common  get_mempolicy                   sys_get_mempolicy
+276    common  set_mempolicy                   sys_set_mempolicy
+277    common  mq_open                         sys_mq_open
+278    common  mq_unlink                       sys_mq_unlink
+279    common  mq_timedsend                    sys_mq_timedsend_time32
+280    common  mq_timedreceive                 sys_mq_timedreceive_time32
+281    common  mq_notify                       sys_mq_notify
+282    common  mq_getsetattr                   sys_mq_getsetattr
+283    common  kexec_load                      sys_kexec_load
+284    common  waitid                          sys_waitid
+# 285 was setaltroot
+286    common  add_key                         sys_add_key
+287    common  request_key                     sys_request_key
+288    common  keyctl                          sys_keyctl
+289    common  ioprio_set                      sys_ioprio_set
+290    common  ioprio_get                      sys_ioprio_get
+291    common  inotify_init                    sys_inotify_init
+292    common  inotify_add_watch               sys_inotify_add_watch
+293    common  inotify_rm_watch                sys_inotify_rm_watch
+294    common  migrate_pages                   sys_ni_syscall
+295    common  openat                          sys_openat
+296    common  mkdirat                         sys_mkdirat
+297    common  mknodat                         sys_mknodat
+298    common  fchownat                        sys_fchownat
+299    common  futimesat                       sys_futimesat_time32
+300    common  fstatat64                       sys_fstatat64
+301    common  unlinkat                        sys_unlinkat
+302    common  renameat                        sys_renameat
+303    common  linkat                          sys_linkat
+304    common  symlinkat                       sys_symlinkat
+305    common  readlinkat                      sys_readlinkat
+306    common  fchmodat                        sys_fchmodat
+307    common  faccessat                       sys_faccessat
+308    common  pselect6                        sys_pselect6_time32
+309    common  ppoll                           sys_ppoll_time32
+310    common  unshare                         sys_unshare
+311    common  set_robust_list                 sys_set_robust_list
+312    common  get_robust_list                 sys_get_robust_list
+313    common  splice                          sys_splice
+314    common  sync_file_range                 sys_sync_file_range
+315    common  tee                             sys_tee
+316    common  vmsplice                        sys_vmsplice
+317    common  move_pages                      sys_move_pages
+318    common  getcpu                          sys_getcpu
+319    common  epoll_pwait                     sys_epoll_pwait
+320    common  utimensat                       sys_utimensat_time32
+321    common  signalfd                        sys_signalfd
+322    common  timerfd_create                  sys_timerfd_create
+323    common  eventfd                         sys_eventfd
+324    common  fallocate                       sys_fallocate
+325    common  semtimedop                      sys_semtimedop_time32
+326    common  timerfd_settime                 sys_timerfd_settime32
+327    common  timerfd_gettime                 sys_timerfd_gettime32
+328    common  semctl                          sys_old_semctl
+329    common  semget                          sys_semget
+330    common  semop                           sys_semop
+331    common  msgctl                          sys_old_msgctl
+332    common  msgget                          sys_msgget
+333    common  msgrcv                          sys_msgrcv
+334    common  msgsnd                          sys_msgsnd
+335    common  shmat                           sys_shmat
+336    common  shmctl                          sys_old_shmctl
+337    common  shmdt                           sys_shmdt
+338    common  shmget                          sys_shmget
+339    common  signalfd4                       sys_signalfd4
+340    common  eventfd2                        sys_eventfd2
+341    common  epoll_create1                   sys_epoll_create1
+342    common  dup3                            sys_dup3
+343    common  pipe2                           sys_pipe2
+344    common  inotify_init1                   sys_inotify_init1
+345    common  socket                          sys_socket
+346    common  socketpair                      sys_socketpair
+347    common  bind                            sys_bind
+348    common  listen                          sys_listen
+349    common  accept                          sys_accept
+350    common  connect                         sys_connect
+351    common  getsockname                     sys_getsockname
+352    common  getpeername                     sys_getpeername
+353    common  sendto                          sys_sendto
+354    common  send                            sys_send
+355    common  recvfrom                        sys_recvfrom
+356    common  recv                            sys_recv
+357    common  setsockopt                      sys_setsockopt
+358    common  getsockopt                      sys_getsockopt
+359    common  shutdown                        sys_shutdown
+360    common  sendmsg                         sys_sendmsg
+361    common  recvmsg                         sys_recvmsg
+362    common  accept4                         sys_accept4
+363    common  preadv                          sys_preadv
+364    common  pwritev                         sys_pwritev
+365    common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+366    common  perf_event_open                 sys_perf_event_open
+367    common  recvmmsg                        sys_recvmmsg_time32
+368    common  fanotify_init                   sys_fanotify_init
+369    common  fanotify_mark                   sys_fanotify_mark
+370    common  prlimit64                       sys_prlimit64
+371    common  name_to_handle_at               sys_name_to_handle_at
+372    common  open_by_handle_at               sys_open_by_handle_at
+373    common  clock_adjtime                   sys_clock_adjtime32
+374    common  syncfs                          sys_syncfs
+375    common  setns                           sys_setns
+376    common  sendmmsg                        sys_sendmmsg
+377    common  process_vm_readv                sys_process_vm_readv
+378    common  process_vm_writev               sys_process_vm_writev
+379    common  kcmp                            sys_kcmp
+380    common  finit_module                    sys_finit_module
+381    common  sched_setattr                   sys_sched_setattr
+382    common  sched_getattr                   sys_sched_getattr
+383    common  renameat2                       sys_renameat2
+384    common  seccomp                         sys_seccomp
+385    common  getrandom                       sys_getrandom
+386    common  memfd_create                    sys_memfd_create
+387    common  bpf                             sys_bpf
+388    common  execveat                        sys_execveat
+389    common  userfaultfd                     sys_userfaultfd
+390    common  membarrier                      sys_membarrier
+391    common  mlock2                          sys_mlock2
+392    common  copy_file_range                 sys_copy_file_range
+393    common  preadv2                         sys_preadv2
+394    common  pwritev2                        sys_pwritev2
+395    common  pkey_mprotect                   sys_pkey_mprotect
+396    common  pkey_alloc                      sys_pkey_alloc
+397    common  pkey_free                       sys_pkey_free
+398    common  statx                           sys_statx
+399    common  io_pgetevents                   sys_io_pgetevents_time32
+400    common  rseq                            sys_rseq
+# 401 and 402 are 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
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/microblaze/syscall_nr.h b/linux-user/microblaze/syscall_nr.h
deleted file mode 100644 (file)
index ec1758e..0000000
+++ /dev/null
@@ -1,442 +0,0 @@
-#ifndef LINUX_USER_MICROBLAZE_SYSCALL_NR_H
-#define LINUX_USER_MICROBLAZE_SYSCALL_NR_H
-
-#define TARGET_NR_restart_syscall      0 /* ok */
-#define TARGET_NR_exit         1 /* ok */
-#define TARGET_NR_fork         2 /* not for no MMU - weird */
-#define TARGET_NR_read         3 /* ok */
-#define TARGET_NR_write                4 /* ok */
-#define TARGET_NR_open         5 /* openat */
-#define TARGET_NR_close                6 /* ok */
-#define TARGET_NR_waitpid              7 /* waitid */
-#define TARGET_NR_creat                8 /* openat */
-#define TARGET_NR_link         9 /* linkat */
-#define TARGET_NR_unlink               10 /* unlinkat */
-#define TARGET_NR_execve               11 /* ok */
-#define TARGET_NR_chdir                12 /* ok */
-#define TARGET_NR_time         13 /* obsolete -> sys_gettimeofday */
-#define TARGET_NR_mknod                14 /* mknodat */
-#define TARGET_NR_chmod                15 /* fchmodat */
-#define TARGET_NR_lchown               16 /* ok */
-#define TARGET_NR_break                17 /* don't know */
-#define TARGET_NR_oldstat              18 /* remove */
-#define TARGET_NR_lseek                19 /* ok */
-#define TARGET_NR_getpid               20 /* ok */
-#define TARGET_NR_mount                21 /* ok */
-#define TARGET_NR_umount               22 /* ok */  /* use only umount2 */
-#define TARGET_NR_setuid               23 /* ok */
-#define TARGET_NR_getuid               24 /* ok */
-#define TARGET_NR_stime                25 /* obsolete -> sys_settimeofday */
-#define TARGET_NR_ptrace               26 /* ok */
-#define TARGET_NR_alarm                27 /* obsolete -> sys_setitimer */
-#define TARGET_NR_oldfstat             28 /* remove */
-#define TARGET_NR_pause                29 /* obsolete -> sys_rt_sigtimedwait */
-#define TARGET_NR_utime                30 /* obsolete -> sys_utimesat */
-#define TARGET_NR_stty         31 /* remove */
-#define TARGET_NR_gtty         32 /* remove */
-#define TARGET_NR_access               33 /* faccessat */
-#define TARGET_NR_nice         34 /* can be implemented by sys_setpriority */
-#define TARGET_NR_ftime                35 /* remove */
-#define TARGET_NR_sync         36 /* ok */
-#define TARGET_NR_kill         37 /* ok */
-#define TARGET_NR_rename               38 /* renameat */
-#define TARGET_NR_mkdir                39 /* mkdirat */
-#define TARGET_NR_rmdir                40 /* unlinkat */
-#define TARGET_NR_dup          41 /* ok */
-#define TARGET_NR_pipe         42 /* ok */
-#define TARGET_NR_times                43 /* ok */
-#define TARGET_NR_prof         44 /* remove */
-#define TARGET_NR_brk          45 /* ok -mmu, nommu specific */
-#define TARGET_NR_setgid               46 /* ok */
-#define TARGET_NR_getgid               47 /* ok */
-#define TARGET_NR_signal               48 /* obsolete -> sys_rt_sigaction */
-#define TARGET_NR_geteuid              49 /* ok */
-#define TARGET_NR_getegid              50 /* ok */
-#define TARGET_NR_acct         51 /* add it and then I can disable it */
-#define TARGET_NR_umount2              52 /* remove */
-#define TARGET_NR_lock         53 /* remove */
-#define TARGET_NR_ioctl                54 /* ok */
-#define TARGET_NR_fcntl                55 /* ok -> 64bit version*/
-#define TARGET_NR_mpx          56 /* remove */
-#define TARGET_NR_setpgid              57 /* ok */
-#define TARGET_NR_ulimit               58 /* remove */
-#define TARGET_NR_oldolduname  59 /* remove */
-#define TARGET_NR_umask                60 /* ok */
-#define TARGET_NR_chroot               61 /* ok */
-#define TARGET_NR_ustat                62 /* obsolete -> statfs64 */
-#define TARGET_NR_dup2         63 /* ok */
-#define TARGET_NR_getppid              64 /* ok */
-#define TARGET_NR_getpgrp              65 /* obsolete -> sys_getpgid */
-#define TARGET_NR_setsid               66 /* ok */
-#define TARGET_NR_sigaction            67 /* obsolete -> rt_sigaction */
-#define TARGET_NR_sgetmask             68 /* obsolete -> sys_rt_sigprocmask */
-#define TARGET_NR_ssetmask             69 /* obsolete ->sys_rt_sigprocmask */
-#define TARGET_NR_setreuid             70 /* ok */
-#define TARGET_NR_setregid             71 /* ok */
-#define TARGET_NR_sigsuspend           72 /* obsolete -> rt_sigsuspend */
-#define TARGET_NR_sigpending           73 /* obsolete -> sys_rt_sigpending */
-#define TARGET_NR_sethostname  74 /* ok */
-#define TARGET_NR_setrlimit            75 /* ok */
-#define TARGET_NR_getrlimit            76 /* ok Back compatible 2Gig limited rlimit */
-#define TARGET_NR_getrusage            77 /* ok */
-#define TARGET_NR_gettimeofday 78 /* ok */
-#define TARGET_NR_settimeofday 79 /* ok */
-#define TARGET_NR_getgroups            80 /* ok */
-#define TARGET_NR_setgroups            81 /* ok */
-#define TARGET_NR_select               82 /* obsolete -> sys_pselect7 */
-#define TARGET_NR_symlink              83 /* symlinkat */
-#define TARGET_NR_oldlstat             84 /* remove */
-#define TARGET_NR_readlink             85 /* obsolete -> sys_readlinkat */
-#define TARGET_NR_uselib               86 /* remove */
-#define TARGET_NR_swapon               87 /* ok */
-#define TARGET_NR_reboot               88 /* ok */
-#define TARGET_NR_readdir              89 /* remove ? */
-#define TARGET_NR_mmap         90 /* obsolete -> sys_mmap2 */
-#define TARGET_NR_munmap               91 /* ok - mmu and nommu */
-#define TARGET_NR_truncate             92 /* ok or truncate64 */
-#define TARGET_NR_ftruncate            93 /* ok or ftruncate64 */
-#define TARGET_NR_fchmod               94 /* ok */
-#define TARGET_NR_fchown               95 /* ok */
-#define TARGET_NR_getpriority  96 /* ok */
-#define TARGET_NR_setpriority  97 /* ok */
-#define TARGET_NR_profil               98 /* remove */
-#define TARGET_NR_statfs               99 /* ok or statfs64 */
-#define TARGET_NR_fstatfs              100  /* ok or fstatfs64 */
-#define TARGET_NR_ioperm               101 /* remove */
-#define TARGET_NR_socketcall           102 /* remove */
-#define TARGET_NR_syslog               103 /* ok */
-#define TARGET_NR_setitimer            104 /* ok */
-#define TARGET_NR_getitimer            105 /* ok */
-#define TARGET_NR_stat         106 /* remove */
-#define TARGET_NR_lstat                107 /* remove */
-#define TARGET_NR_fstat                108 /* remove */
-#define TARGET_NR_olduname             109 /* remove */
-#define TARGET_NR_iopl         110 /* remove */
-#define TARGET_NR_vhangup              111 /* ok */
-#define TARGET_NR_idle         112 /* remove */
-#define TARGET_NR_vm86old              113 /* remove */
-#define TARGET_NR_wait4                114 /* obsolete -> waitid */
-#define TARGET_NR_swapoff              115 /* ok */
-#define TARGET_NR_sysinfo              116 /* ok */
-#define TARGET_NR_ipc          117 /* remove - direct call */
-#define TARGET_NR_fsync                118 /* ok */
-#define TARGET_NR_sigreturn            119 /* obsolete -> sys_rt_sigreturn */
-#define TARGET_NR_clone                120 /* ok */
-#define TARGET_NR_setdomainname        121 /* ok */
-#define TARGET_NR_uname                122 /* remove */
-#define TARGET_NR_modify_ldt           123 /* remove */
-#define TARGET_NR_adjtimex             124 /* ok */
-#define TARGET_NR_mprotect             125 /* remove */
-#define TARGET_NR_sigprocmask  126 /* obsolete -> sys_rt_sigprocmask */
-#define TARGET_NR_create_module        127 /* remove */
-#define TARGET_NR_init_module  128 /* ok */
-#define TARGET_NR_delete_module        129 /* ok */
-#define TARGET_NR_get_kernel_syms      130 /* remove */
-#define TARGET_NR_quotactl             131 /* ok */
-#define TARGET_NR_getpgid              132 /* ok */
-#define TARGET_NR_fchdir               133 /* ok */
-#define TARGET_NR_bdflush              134 /* remove */
-#define TARGET_NR_sysfs                135 /* needed for busybox */
-#define TARGET_NR_personality  136 /* ok */
-#define TARGET_NR_afs_syscall  137 /* Syscall for Andrew File System */
-#define TARGET_NR_setfsuid             138 /* ok */
-#define TARGET_NR_setfsgid             139 /* ok */
-#define TARGET_NR__llseek              140 /* remove only lseek */
-#define TARGET_NR_getdents             141 /* ok or getdents64 */
-#define TARGET_NR__newselect           142 /* remove */
-#define TARGET_NR_flock                143 /* ok */
-#define TARGET_NR_msync                144 /* remove */
-#define TARGET_NR_readv                145 /* ok */
-#define TARGET_NR_writev               146 /* ok */
-#define TARGET_NR_getsid               147 /* ok */
-#define TARGET_NR_fdatasync            148 /* ok */
-#define TARGET_NR__sysctl              149 /* remove */
-#define TARGET_NR_mlock                150 /* ok - nommu or mmu */
-#define TARGET_NR_munlock              151 /* ok - nommu or mmu */
-#define TARGET_NR_mlockall             152 /* ok - nommu or mmu */
-#define TARGET_NR_munlockall           153 /* ok - nommu or mmu */
-#define TARGET_NR_sched_setparam               154 /* ok */
-#define TARGET_NR_sched_getparam               155 /* ok */
-#define TARGET_NR_sched_setscheduler           156 /* ok */
-#define TARGET_NR_sched_getscheduler           157 /* ok */
-#define TARGET_NR_sched_yield          158 /* ok */
-#define TARGET_NR_sched_get_priority_max       159 /* ok */
-#define TARGET_NR_sched_get_priority_min       160 /* ok */
-#define TARGET_NR_sched_rr_get_interval        161 /* ok */
-#define TARGET_NR_nanosleep            162 /* ok */
-#define TARGET_NR_mremap               163 /* ok - nommu or mmu */
-#define TARGET_NR_setresuid            164 /* ok */
-#define TARGET_NR_getresuid            165 /* ok */
-#define TARGET_NR_vm86         166 /* remove */
-#define TARGET_NR_query_module 167 /* ok */
-#define TARGET_NR_poll         168 /* obsolete -> sys_ppoll */
-#define TARGET_NR_nfsservctl           169 /* ok */
-#define TARGET_NR_setresgid            170 /* ok */
-#define TARGET_NR_getresgid            171 /* ok */
-#define TARGET_NR_prctl                172 /* ok */
-#define TARGET_NR_rt_sigreturn 173 /* ok */
-#define TARGET_NR_rt_sigaction 174 /* ok */
-#define TARGET_NR_rt_sigprocmask       175 /* ok */
-#define TARGET_NR_rt_sigpending        176 /* ok */
-#define TARGET_NR_rt_sigtimedwait      177 /* ok */
-#define TARGET_NR_rt_sigqueueinfo      178 /* ok */
-#define TARGET_NR_rt_sigsuspend        179 /* ok */
-#define TARGET_NR_pread64              180 /* ok */
-#define TARGET_NR_pwrite64             181 /* ok */
-#define TARGET_NR_chown                182 /* obsolete -> fchownat */
-#define TARGET_NR_getcwd               183 /* ok */
-#define TARGET_NR_capget               184 /* ok */
-#define TARGET_NR_capset               185 /* ok */
-#define TARGET_NR_sigaltstack  186 /* remove */
-#define TARGET_NR_sendfile             187 /* ok -> exist 64bit version*/
-#define TARGET_NR_getpmsg              188 /* remove - some people actually want streams */
-#define TARGET_NR_putpmsg              189 /* remove - some people actually want streams */
-#define TARGET_NR_vfork                190 /* for noMMU - group with clone -> maybe remove */
-#define TARGET_NR_ugetrlimit           191 /* remove - SuS compliant getrlimit */
-#define TARGET_NR_mmap2                192 /* ok */
-#define TARGET_NR_truncate64           193 /* ok */
-#define TARGET_NR_ftruncate64  194 /* ok */
-#define TARGET_NR_stat64               195 /* remove _ARCH_WANT_STAT64 */
-#define TARGET_NR_lstat64              196 /* remove _ARCH_WANT_STAT64 */
-#define TARGET_NR_fstat64              197 /* remove _ARCH_WANT_STAT64 */
-#define TARGET_NR_lchown32             198 /* ok - without 32 */
-#define TARGET_NR_getuid32             199 /* ok - without 32 */
-#define TARGET_NR_getgid32             200 /* ok - without 32 */
-#define TARGET_NR_geteuid32            201 /* ok - without 32 */
-#define TARGET_NR_getegid32            202 /* ok - without 32 */
-#define TARGET_NR_setreuid32           203 /* ok - without 32 */
-#define TARGET_NR_setregid32           204 /* ok - without 32 */
-#define TARGET_NR_getgroups32  205 /* ok - without 32 */
-#define TARGET_NR_setgroups32  206 /* ok - without 32 */
-#define TARGET_NR_fchown32             207 /* ok - without 32 */
-#define TARGET_NR_setresuid32  208 /* ok - without 32 */
-#define TARGET_NR_getresuid32  209 /* ok - without 32 */
-#define TARGET_NR_setresgid32  210 /* ok - without 32 */
-#define TARGET_NR_getresgid32  211 /* ok - without 32 */
-#define TARGET_NR_chown32              212 /* ok - without 32 -obsolete -> fchownat */
-#define TARGET_NR_setuid32             213 /* ok - without 32 */
-#define TARGET_NR_setgid32             214 /* ok - without 32 */
-#define TARGET_NR_setfsuid32           215 /* ok - without 32 */
-#define TARGET_NR_setfsgid32           216 /* ok - without 32 */
-#define TARGET_NR_pivot_root           217 /* ok */
-#define TARGET_NR_mincore              218 /* ok */
-#define TARGET_NR_madvise              219 /* ok */
-//#define TARGET_NR_madvise1           219 /* remove delete when C lib stub is removed */
-#define TARGET_NR_getdents64           220 /* ok */
-#define TARGET_NR_fcntl64              221 /* ok */
-/* 223 is unused */
-#define TARGET_NR_gettid               224 /* ok */
-#define TARGET_NR_readahead            225 /* ok */
-#define TARGET_NR_setxattr             226 /* ok */
-#define TARGET_NR_lsetxattr            227 /* ok */
-#define TARGET_NR_fsetxattr            228 /* ok */
-#define TARGET_NR_getxattr             229 /* ok */
-#define TARGET_NR_lgetxattr            230 /* ok */
-#define TARGET_NR_fgetxattr            231 /* ok */
-#define TARGET_NR_listxattr            232 /* ok */
-#define TARGET_NR_llistxattr           233 /* ok */
-#define TARGET_NR_flistxattr           234 /* ok */
-#define TARGET_NR_removexattr  235 /* ok */
-#define TARGET_NR_lremovexattr 236 /* ok */
-#define TARGET_NR_fremovexattr 237 /* ok */
-#define TARGET_NR_tkill                238 /* ok */
-#define TARGET_NR_sendfile64           239 /* ok */
-#define TARGET_NR_futex                240 /* ok */
-#define TARGET_NR_sched_setaffinity    241 /* ok */
-#define TARGET_NR_sched_getaffinity    242 /* ok */
-#define TARGET_NR_set_thread_area      243 /* remove */
-#define TARGET_NR_get_thread_area      244 /* remove */
-#define TARGET_NR_io_setup             245 /* ok */
-#define TARGET_NR_io_destroy           246 /* ok */
-#define TARGET_NR_io_getevents 247 /* ok */
-#define TARGET_NR_io_submit            248 /* ok */
-#define TARGET_NR_io_cancel            249 /* ok */
-#define TARGET_NR_fadvise64            250 /* remove -> sys_fadvise64_64 */
-/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
-#define TARGET_NR_exit_group           252 /* ok */
-#define TARGET_NR_lookup_dcookie       253 /* ok */
-#define TARGET_NR_epoll_create 254 /* ok */
-#define TARGET_NR_epoll_ctl            255 /* ok */
-#define TARGET_NR_epoll_wait           256 /* obsolete -> sys_epoll_pwait */
-#define TARGET_NR_remap_file_pages     257 /* only for mmu */
-#define TARGET_NR_set_tid_address      258 /* ok */
-#define TARGET_NR_timer_create 259 /* ok */
-#define TARGET_NR_timer_settime        (TARGET_NR_timer_create+1) /* 260 */ /* ok */
-#define TARGET_NR_timer_gettime        (TARGET_NR_timer_create+2) /* 261 */ /* ok */
-#define TARGET_NR_timer_getoverrun     (TARGET_NR_timer_create+3) /* 262 */ /* ok */
-#define TARGET_NR_timer_delete (TARGET_NR_timer_create+4) /* 263 */ /* ok */
-#define TARGET_NR_clock_settime        (TARGET_NR_timer_create+5) /* 264 */ /* ok */
-#define TARGET_NR_clock_gettime        (TARGET_NR_timer_create+6) /* 265 */ /* ok */
-#define TARGET_NR_clock_getres (TARGET_NR_timer_create+7) /* 266 */ /* ok */
-#define TARGET_NR_clock_nanosleep      (TARGET_NR_timer_create+8) /* 267 */ /* ok */
-#define TARGET_NR_statfs64             268 /* ok */
-#define TARGET_NR_fstatfs64            269 /* ok */
-#define TARGET_NR_tgkill               270 /* ok */
-#define TARGET_NR_utimes               271 /* obsolete -> sys_futimesat */
-#define TARGET_NR_fadvise64_64 272 /* ok */
-#define TARGET_NR_vserver              273 /* ok */
-#define TARGET_NR_mbind                274 /* only for mmu */
-#define TARGET_NR_get_mempolicy        275 /* only for mmu */
-#define TARGET_NR_set_mempolicy        276 /* only for mmu */
-#define TARGET_NR_mq_open              277 /* ok */
-#define TARGET_NR_mq_unlink            (TARGET_NR_mq_open+1) /* 278 */ /* ok */
-#define TARGET_NR_mq_timedsend (TARGET_NR_mq_open+2) /* 279 */ /* ok */
-#define TARGET_NR_mq_timedreceive      (TARGET_NR_mq_open+3) /* 280 */ /* ok */
-#define TARGET_NR_mq_notify            (TARGET_NR_mq_open+4) /* 281 */ /* ok */
-#define TARGET_NR_mq_getsetattr        (TARGET_NR_mq_open+5) /* 282 */ /* ok */
-#define TARGET_NR_kexec_load           283 /* ok */
-#define TARGET_NR_waitid               284 /* ok */
-/* #define TARGET_NR_sys_setaltroot    285 */
-#define TARGET_NR_add_key              286 /* ok */
-#define TARGET_NR_request_key  287 /* ok */
-#define TARGET_NR_keyctl               288 /* ok */
-#define TARGET_NR_ioprio_set           289 /* ok */
-#define TARGET_NR_ioprio_get           290 /* ok */
-#define TARGET_NR_inotify_init 291 /* ok */
-#define TARGET_NR_inotify_add_watch    292 /* ok */
-#define TARGET_NR_inotify_rm_watch     293 /* ok */
-#define TARGET_NR_migrate_pages        294 /* mmu */
-#define TARGET_NR_openat               295 /* ok */
-#define TARGET_NR_mkdirat              296 /* ok */
-#define TARGET_NR_mknodat              297 /* ok */
-#define TARGET_NR_fchownat             298 /* ok */
-#define TARGET_NR_futimesat            299 /* obsolete -> sys_utimesat */
-#define TARGET_NR_fstatat64            300 /* stat64 */
-#define TARGET_NR_unlinkat             301 /* ok */
-#define TARGET_NR_renameat             302 /* ok */
-#define TARGET_NR_linkat               303 /* ok */
-#define TARGET_NR_symlinkat            304 /* ok */
-#define TARGET_NR_readlinkat           305 /* ok */
-#define TARGET_NR_fchmodat             306 /* ok */
-#define TARGET_NR_faccessat            307 /* ok */
-#define TARGET_NR_pselect6             308 /* obsolete -> sys_pselect7 */
-#define TARGET_NR_ppoll                309 /* ok */
-#define TARGET_NR_unshare              310 /* ok */
-#define TARGET_NR_set_robust_list      311 /* ok */
-#define TARGET_NR_get_robust_list      312 /* ok */
-#define TARGET_NR_splice               313 /* ok */
-#define TARGET_NR_sync_file_range      314 /* ok */
-#define TARGET_NR_tee          315 /* ok */
-#define TARGET_NR_vmsplice             316 /* ok */
-#define TARGET_NR_move_pages           317 /* mmu */
-#define TARGET_NR_getcpu               318 /* ok */
-#define TARGET_NR_epoll_pwait  319 /* ok */
-#define TARGET_NR_utimensat            320 /* ok */
-#define TARGET_NR_signalfd             321 /* ok */
-#define TARGET_NR_timerfd_create       322 /* ok */
-#define TARGET_NR_eventfd              323 /* ok */
-#define TARGET_NR_fallocate            324 /* ok */
-#define TARGET_NR_semtimedop           325 /* ok - semaphore group */
-#define TARGET_NR_timerfd_settime      326 /* ok */
-#define TARGET_NR_timerfd_gettime      327 /* ok */
-/* sysv ipc syscalls */
-#define TARGET_NR_semctl               328 /* ok */
-#define TARGET_NR_semget               329 /* ok */
-#define TARGET_NR_semop                330 /* ok */
-#define TARGET_NR_msgctl               331 /* ok */
-#define TARGET_NR_msgget               332 /* ok */
-#define TARGET_NR_msgrcv               333 /* ok */
-#define TARGET_NR_msgsnd               334 /* ok */
-#define TARGET_NR_shmat                335 /* ok */
-#define TARGET_NR_shmctl               336 /* ok */
-#define TARGET_NR_shmdt                337 /* ok */
-#define TARGET_NR_shmget               338 /* ok */
-
-
-#define TARGET_NR_signalfd4            339 /* new */
-#define TARGET_NR_eventfd2             340 /* new */
-#define TARGET_NR_epoll_create1        341 /* new */
-#define TARGET_NR_dup3         342 /* new */
-#define TARGET_NR_pipe2                343 /* new */
-#define TARGET_NR_inotify_init1        344 /* new */
-#define TARGET_NR_socket               345 /* new */
-#define TARGET_NR_socketpair           346 /* new */
-#define TARGET_NR_bind         347 /* new */
-#define TARGET_NR_listen               348 /* new */
-#define TARGET_NR_accept               349 /* new */
-#define TARGET_NR_connect              350 /* new */
-#define TARGET_NR_getsockname  351 /* new */
-#define TARGET_NR_getpeername  352 /* new */
-#define TARGET_NR_sendto               353 /* new */
-#define TARGET_NR_send         354 /* new */
-#define TARGET_NR_recvfrom             355 /* new */
-#define TARGET_NR_recv         356 /* new */
-#define TARGET_NR_setsockopt           357 /* new */
-#define TARGET_NR_getsockopt           358 /* new */
-#define TARGET_NR_shutdown             359 /* new */
-#define TARGET_NR_sendmsg              360 /* new */
-#define TARGET_NR_recvmsg              361 /* new */
-#define TARGET_NR_accept4               362 /* new */
-#define TARGET_NR_preadv                363 /* new */
-#define TARGET_NR_pwritev               364 /* new */
-#define TARGET_NR_rt_tgsigqueueinfo     365 /* new */
-#define TARGET_NR_perf_event_open       366 /* new */
-#define TARGET_NR_recvmmsg              367 /* new */
-#define TARGET_NR_fanotify_init         368
-#define TARGET_NR_fanotify_mark         369
-#define TARGET_NR_prlimit64             370
-#define TARGET_NR_name_to_handle_at     371
-#define TARGET_NR_open_by_handle_at     372
-#define TARGET_NR_clock_adjtime         373
-#define TARGET_NR_syncfs                374
-#define TARGET_NR_setns                 375
-#define TARGET_NR_sendmmsg              376
-#define TARGET_NR_process_vm_readv      377
-#define TARGET_NR_process_vm_writev     378
-#define TARGET_NR_kcmp                  379
-#define TARGET_NR_finit_module          380
-#define TARGET_NR_sched_setattr         381
-#define TARGET_NR_sched_getattr         382
-#define TARGET_NR_renameat2             383
-#define TARGET_NR_seccomp               384
-#define TARGET_NR_getrandom             385
-#define TARGET_NR_memfd_create          386
-#define TARGET_NR_bpf                   387
-#define TARGET_NR_execveat              388
-#define TARGET_NR_userfaultfd           389
-#define TARGET_NR_membarrier            390
-#define TARGET_NR_mlock2                391
-#define TARGET_NR_copy_file_range       392
-#define TARGET_NR_preadv2               393
-#define TARGET_NR_pwritev2              394
-#define TARGET_NR_pkey_mprotect         395
-#define TARGET_NR_pkey_alloc            396
-#define TARGET_NR_pkey_free             397
-#define TARGET_NR_statx                 398
-#define TARGET_NR_io_pgetevents         399
-#define TARGET_NR_rseq                  400
-/* 401 and 402 are 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/microblaze/syscallhdr.sh b/linux-user/microblaze/syscallhdr.sh
new file mode 100644 (file)
index 0000000..f55dce8
--- /dev/null
@@ -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_MICROBLAZE_`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 */" "${fileguard}"
+) > "$out"
diff --git a/linux-user/mips/Makefile.objs b/linux-user/mips/Makefile.objs
new file mode 100644 (file)
index 0000000..9be4de0
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/mips/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/mips/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/mips/syscall_o32.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI) "" 4000,"GEN","$@")
index 396367d81d8da94188bad7e5ece7658740fee022..553e8ca7f576467e54d7b23f3d2d836062645d37 100644 (file)
 
 # ifdef TARGET_ABI_MIPSO32
 #  define MIPS_SYSCALL_NUMBER_UNUSED -1
-#  define MIPS_SYS(name, args) args,
 static const int8_t mips_syscall_args[] = {
-        MIPS_SYS(sys_syscall    , 8)    /* 4000 */
-        MIPS_SYS(sys_exit       , 1)
-        MIPS_SYS(sys_fork       , 0)
-        MIPS_SYS(sys_read       , 3)
-        MIPS_SYS(sys_write      , 3)
-        MIPS_SYS(sys_open       , 3)    /* 4005 */
-        MIPS_SYS(sys_close      , 1)
-        MIPS_SYS(sys_waitpid    , 3)
-        MIPS_SYS(sys_creat      , 2)
-        MIPS_SYS(sys_link       , 2)
-        MIPS_SYS(sys_unlink     , 1)    /* 4010 */
-        MIPS_SYS(sys_execve     , 0)
-        MIPS_SYS(sys_chdir      , 1)
-        MIPS_SYS(sys_time       , 1)
-        MIPS_SYS(sys_mknod      , 3)
-        MIPS_SYS(sys_chmod      , 2)    /* 4015 */
-        MIPS_SYS(sys_lchown     , 3)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_stat */
-        MIPS_SYS(sys_lseek      , 3)
-        MIPS_SYS(sys_getpid     , 0)    /* 4020 */
-        MIPS_SYS(sys_mount      , 5)
-        MIPS_SYS(sys_umount     , 1)
-        MIPS_SYS(sys_setuid     , 1)
-        MIPS_SYS(sys_getuid     , 0)
-        MIPS_SYS(sys_stime      , 1)    /* 4025 */
-        MIPS_SYS(sys_ptrace     , 4)
-        MIPS_SYS(sys_alarm      , 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_fstat */
-        MIPS_SYS(sys_pause      , 0)
-        MIPS_SYS(sys_utime      , 2)    /* 4030 */
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_access     , 2)
-        MIPS_SYS(sys_nice       , 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* 4035 */
-        MIPS_SYS(sys_sync       , 0)
-        MIPS_SYS(sys_kill       , 2)
-        MIPS_SYS(sys_rename     , 2)
-        MIPS_SYS(sys_mkdir      , 2)
-        MIPS_SYS(sys_rmdir      , 1)    /* 4040 */
-        MIPS_SYS(sys_dup                , 1)
-        MIPS_SYS(sys_pipe       , 0)
-        MIPS_SYS(sys_times      , 1)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_brk                , 1)    /* 4045 */
-        MIPS_SYS(sys_setgid     , 1)
-        MIPS_SYS(sys_getgid     , 0)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was signal(2) */
-        MIPS_SYS(sys_geteuid    , 0)
-        MIPS_SYS(sys_getegid    , 0)    /* 4050 */
-        MIPS_SYS(sys_acct       , 0)
-        MIPS_SYS(sys_umount2    , 2)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_ioctl      , 3)
-        MIPS_SYS(sys_fcntl      , 3)    /* 4055 */
-        MIPS_SYS(sys_ni_syscall , 2)
-        MIPS_SYS(sys_setpgid    , 2)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_olduname   , 1)
-        MIPS_SYS(sys_umask      , 1)    /* 4060 */
-        MIPS_SYS(sys_chroot     , 1)
-        MIPS_SYS(sys_ustat      , 2)
-        MIPS_SYS(sys_dup2       , 2)
-        MIPS_SYS(sys_getppid    , 0)
-        MIPS_SYS(sys_getpgrp    , 0)    /* 4065 */
-        MIPS_SYS(sys_setsid     , 0)
-        MIPS_SYS(sys_sigaction  , 3)
-        MIPS_SYS(sys_sgetmask   , 0)
-        MIPS_SYS(sys_ssetmask   , 1)
-        MIPS_SYS(sys_setreuid   , 2)    /* 4070 */
-        MIPS_SYS(sys_setregid   , 2)
-        MIPS_SYS(sys_sigsuspend , 0)
-        MIPS_SYS(sys_sigpending , 1)
-        MIPS_SYS(sys_sethostname        , 2)
-        MIPS_SYS(sys_setrlimit  , 2)    /* 4075 */
-        MIPS_SYS(sys_getrlimit  , 2)
-        MIPS_SYS(sys_getrusage  , 2)
-        MIPS_SYS(sys_gettimeofday, 2)
-        MIPS_SYS(sys_settimeofday, 2)
-        MIPS_SYS(sys_getgroups  , 2)    /* 4080 */
-        MIPS_SYS(sys_setgroups  , 2)
-        MIPS_SYS(sys_ni_syscall , 0)    /* old_select */
-        MIPS_SYS(sys_symlink    , 2)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_lstat */
-        MIPS_SYS(sys_readlink   , 3)    /* 4085 */
-        MIPS_SYS(sys_uselib     , 1)
-        MIPS_SYS(sys_swapon     , 2)
-        MIPS_SYS(sys_reboot     , 3)
-        MIPS_SYS(old_readdir    , 3)
-        MIPS_SYS(old_mmap       , 6)    /* 4090 */
-        MIPS_SYS(sys_munmap     , 2)
-        MIPS_SYS(sys_truncate   , 2)
-        MIPS_SYS(sys_ftruncate  , 2)
-        MIPS_SYS(sys_fchmod     , 2)
-        MIPS_SYS(sys_fchown     , 3)    /* 4095 */
-        MIPS_SYS(sys_getpriority        , 2)
-        MIPS_SYS(sys_setpriority        , 3)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_statfs     , 2)
-        MIPS_SYS(sys_fstatfs    , 2)    /* 4100 */
-        MIPS_SYS(sys_ni_syscall , 0)    /* was ioperm(2) */
-        MIPS_SYS(sys_socketcall , 2)
-        MIPS_SYS(sys_syslog     , 3)
-        MIPS_SYS(sys_setitimer  , 3)
-        MIPS_SYS(sys_getitimer  , 2)    /* 4105 */
-        MIPS_SYS(sys_newstat    , 2)
-        MIPS_SYS(sys_newlstat   , 2)
-        MIPS_SYS(sys_newfstat   , 2)
-        MIPS_SYS(sys_uname      , 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* 4110 was iopl(2) */
-        MIPS_SYS(sys_vhangup    , 0)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_idle() */
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_vm86 */
-        MIPS_SYS(sys_wait4      , 4)
-        MIPS_SYS(sys_swapoff    , 1)    /* 4115 */
-        MIPS_SYS(sys_sysinfo    , 1)
-        MIPS_SYS(sys_ipc                , 6)
-        MIPS_SYS(sys_fsync      , 1)
-        MIPS_SYS(sys_sigreturn  , 0)
-        MIPS_SYS(sys_clone      , 6)    /* 4120 */
-        MIPS_SYS(sys_setdomainname, 2)
-        MIPS_SYS(sys_newuname   , 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* sys_modify_ldt */
-        MIPS_SYS(sys_adjtimex   , 1)
-        MIPS_SYS(sys_mprotect   , 3)    /* 4125 */
-        MIPS_SYS(sys_sigprocmask        , 3)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was create_module */
-        MIPS_SYS(sys_init_module        , 5)
-        MIPS_SYS(sys_delete_module, 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* 4130 was get_kernel_syms */
-        MIPS_SYS(sys_quotactl   , 0)
-        MIPS_SYS(sys_getpgid    , 1)
-        MIPS_SYS(sys_fchdir     , 1)
-        MIPS_SYS(sys_bdflush    , 2)
-        MIPS_SYS(sys_sysfs      , 3)    /* 4135 */
-        MIPS_SYS(sys_personality        , 1)
-        MIPS_SYS(sys_ni_syscall , 0)    /* for afs_syscall */
-        MIPS_SYS(sys_setfsuid   , 1)
-        MIPS_SYS(sys_setfsgid   , 1)
-        MIPS_SYS(sys_llseek     , 5)    /* 4140 */
-        MIPS_SYS(sys_getdents   , 3)
-        MIPS_SYS(sys_select     , 5)
-        MIPS_SYS(sys_flock      , 2)
-        MIPS_SYS(sys_msync      , 3)
-        MIPS_SYS(sys_readv      , 3)    /* 4145 */
-        MIPS_SYS(sys_writev     , 3)
-        MIPS_SYS(sys_cacheflush , 3)
-        MIPS_SYS(sys_cachectl   , 3)
-        MIPS_SYS(sys_sysmips    , 4)
-        MIPS_SYS(sys_ni_syscall , 0)    /* 4150 */
-        MIPS_SYS(sys_getsid     , 1)
-        MIPS_SYS(sys_fdatasync  , 0)
-        MIPS_SYS(sys_sysctl     , 1)
-        MIPS_SYS(sys_mlock      , 2)
-        MIPS_SYS(sys_munlock    , 2)    /* 4155 */
-        MIPS_SYS(sys_mlockall   , 1)
-        MIPS_SYS(sys_munlockall , 0)
-        MIPS_SYS(sys_sched_setparam, 2)
-        MIPS_SYS(sys_sched_getparam, 2)
-        MIPS_SYS(sys_sched_setscheduler, 3)     /* 4160 */
-        MIPS_SYS(sys_sched_getscheduler, 1)
-        MIPS_SYS(sys_sched_yield        , 0)
-        MIPS_SYS(sys_sched_get_priority_max, 1)
-        MIPS_SYS(sys_sched_get_priority_min, 1)
-        MIPS_SYS(sys_sched_rr_get_interval, 2)  /* 4165 */
-        MIPS_SYS(sys_nanosleep, 2)
-        MIPS_SYS(sys_mremap     , 5)
-        MIPS_SYS(sys_accept     , 3)
-        MIPS_SYS(sys_bind       , 3)
-        MIPS_SYS(sys_connect    , 3)    /* 4170 */
-        MIPS_SYS(sys_getpeername        , 3)
-        MIPS_SYS(sys_getsockname        , 3)
-        MIPS_SYS(sys_getsockopt , 5)
-        MIPS_SYS(sys_listen     , 2)
-        MIPS_SYS(sys_recv       , 4)    /* 4175 */
-        MIPS_SYS(sys_recvfrom   , 6)
-        MIPS_SYS(sys_recvmsg    , 3)
-        MIPS_SYS(sys_send       , 4)
-        MIPS_SYS(sys_sendmsg    , 3)
-        MIPS_SYS(sys_sendto     , 6)    /* 4180 */
-        MIPS_SYS(sys_setsockopt , 5)
-        MIPS_SYS(sys_shutdown   , 2)
-        MIPS_SYS(sys_socket     , 3)
-        MIPS_SYS(sys_socketpair , 4)
-        MIPS_SYS(sys_setresuid  , 3)    /* 4185 */
-        MIPS_SYS(sys_getresuid  , 3)
-        MIPS_SYS(sys_ni_syscall , 0)    /* was sys_query_module */
-        MIPS_SYS(sys_poll       , 3)
-        MIPS_SYS(sys_nfsservctl , 3)
-        MIPS_SYS(sys_setresgid  , 3)    /* 4190 */
-        MIPS_SYS(sys_getresgid  , 3)
-        MIPS_SYS(sys_prctl      , 5)
-        MIPS_SYS(sys_rt_sigreturn, 0)
-        MIPS_SYS(sys_rt_sigaction, 4)
-        MIPS_SYS(sys_rt_sigprocmask, 4) /* 4195 */
-        MIPS_SYS(sys_rt_sigpending, 2)
-        MIPS_SYS(sys_rt_sigtimedwait, 4)
-        MIPS_SYS(sys_rt_sigqueueinfo, 3)
-        MIPS_SYS(sys_rt_sigsuspend, 0)
-        MIPS_SYS(sys_pread64    , 6)    /* 4200 */
-        MIPS_SYS(sys_pwrite64   , 6)
-        MIPS_SYS(sys_chown      , 3)
-        MIPS_SYS(sys_getcwd     , 2)
-        MIPS_SYS(sys_capget     , 2)
-        MIPS_SYS(sys_capset     , 2)    /* 4205 */
-        MIPS_SYS(sys_sigaltstack        , 2)
-        MIPS_SYS(sys_sendfile   , 4)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_mmap2      , 6)    /* 4210 */
-        MIPS_SYS(sys_truncate64 , 4)
-        MIPS_SYS(sys_ftruncate64        , 4)
-        MIPS_SYS(sys_stat64     , 2)
-        MIPS_SYS(sys_lstat64    , 2)
-        MIPS_SYS(sys_fstat64    , 2)    /* 4215 */
-        MIPS_SYS(sys_pivot_root , 2)
-        MIPS_SYS(sys_mincore    , 3)
-        MIPS_SYS(sys_madvise    , 3)
-        MIPS_SYS(sys_getdents64 , 3)
-        MIPS_SYS(sys_fcntl64    , 3)    /* 4220 */
-        MIPS_SYS(sys_ni_syscall , 0)
-        MIPS_SYS(sys_gettid     , 0)
-        MIPS_SYS(sys_readahead  , 5)
-        MIPS_SYS(sys_setxattr   , 5)
-        MIPS_SYS(sys_lsetxattr  , 5)    /* 4225 */
-        MIPS_SYS(sys_fsetxattr  , 5)
-        MIPS_SYS(sys_getxattr   , 4)
-        MIPS_SYS(sys_lgetxattr  , 4)
-        MIPS_SYS(sys_fgetxattr  , 4)
-        MIPS_SYS(sys_listxattr  , 3)    /* 4230 */
-        MIPS_SYS(sys_llistxattr , 3)
-        MIPS_SYS(sys_flistxattr , 3)
-        MIPS_SYS(sys_removexattr        , 2)
-        MIPS_SYS(sys_lremovexattr, 2)
-        MIPS_SYS(sys_fremovexattr, 2)   /* 4235 */
-        MIPS_SYS(sys_tkill      , 2)
-        MIPS_SYS(sys_sendfile64 , 5)
-        MIPS_SYS(sys_futex      , 6)
-        MIPS_SYS(sys_sched_setaffinity, 3)
-        MIPS_SYS(sys_sched_getaffinity, 3)      /* 4240 */
-        MIPS_SYS(sys_io_setup   , 2)
-        MIPS_SYS(sys_io_destroy , 1)
-        MIPS_SYS(sys_io_getevents, 5)
-        MIPS_SYS(sys_io_submit  , 3)
-        MIPS_SYS(sys_io_cancel  , 3)    /* 4245 */
-        MIPS_SYS(sys_exit_group , 1)
-        MIPS_SYS(sys_lookup_dcookie, 3)
-        MIPS_SYS(sys_epoll_create, 1)
-        MIPS_SYS(sys_epoll_ctl  , 4)
-        MIPS_SYS(sys_epoll_wait , 3)    /* 4250 */
-        MIPS_SYS(sys_remap_file_pages, 5)
-        MIPS_SYS(sys_set_tid_address, 1)
-        MIPS_SYS(sys_restart_syscall, 0)
-        MIPS_SYS(sys_fadvise64_64, 7)
-        MIPS_SYS(sys_statfs64   , 3)    /* 4255 */
-        MIPS_SYS(sys_fstatfs64  , 2)
-        MIPS_SYS(sys_timer_create, 3)
-        MIPS_SYS(sys_timer_settime, 4)
-        MIPS_SYS(sys_timer_gettime, 2)
-        MIPS_SYS(sys_timer_getoverrun, 1)       /* 4260 */
-        MIPS_SYS(sys_timer_delete, 1)
-        MIPS_SYS(sys_clock_settime, 2)
-        MIPS_SYS(sys_clock_gettime, 2)
-        MIPS_SYS(sys_clock_getres, 2)
-        MIPS_SYS(sys_clock_nanosleep, 4)        /* 4265 */
-        MIPS_SYS(sys_tgkill     , 3)
-        MIPS_SYS(sys_utimes     , 2)
-        MIPS_SYS(sys_mbind      , 4)
-        MIPS_SYS(sys_ni_syscall , 0)    /* sys_get_mempolicy */
-        MIPS_SYS(sys_ni_syscall , 0)    /* 4270 sys_set_mempolicy */
-        MIPS_SYS(sys_mq_open    , 4)
-        MIPS_SYS(sys_mq_unlink  , 1)
-        MIPS_SYS(sys_mq_timedsend, 5)
-        MIPS_SYS(sys_mq_timedreceive, 5)
-        MIPS_SYS(sys_mq_notify  , 2)    /* 4275 */
-        MIPS_SYS(sys_mq_getsetattr, 3)
-        MIPS_SYS(sys_ni_syscall , 0)    /* sys_vserver */
-        MIPS_SYS(sys_waitid     , 4)
-        MIPS_SYS(sys_ni_syscall , 0)    /* available, was setaltroot */
-        MIPS_SYS(sys_add_key    , 5)
-        MIPS_SYS(sys_request_key, 4)
-        MIPS_SYS(sys_keyctl     , 5)
-        MIPS_SYS(sys_set_thread_area, 1)
-        MIPS_SYS(sys_inotify_init, 0)
-        MIPS_SYS(sys_inotify_add_watch, 3) /* 4285 */
-        MIPS_SYS(sys_inotify_rm_watch, 2)
-        MIPS_SYS(sys_migrate_pages, 4)
-        MIPS_SYS(sys_openat, 4)
-        MIPS_SYS(sys_mkdirat, 3)
-        MIPS_SYS(sys_mknodat, 4)        /* 4290 */
-        MIPS_SYS(sys_fchownat, 5)
-        MIPS_SYS(sys_futimesat, 3)
-        MIPS_SYS(sys_fstatat64, 4)
-        MIPS_SYS(sys_unlinkat, 3)
-        MIPS_SYS(sys_renameat, 4)       /* 4295 */
-        MIPS_SYS(sys_linkat, 5)
-        MIPS_SYS(sys_symlinkat, 3)
-        MIPS_SYS(sys_readlinkat, 4)
-        MIPS_SYS(sys_fchmodat, 3)
-        MIPS_SYS(sys_faccessat, 3)      /* 4300 */
-        MIPS_SYS(sys_pselect6, 6)
-        MIPS_SYS(sys_ppoll, 5)
-        MIPS_SYS(sys_unshare, 1)
-        MIPS_SYS(sys_splice, 6)
-        MIPS_SYS(sys_sync_file_range, 7) /* 4305 */
-        MIPS_SYS(sys_tee, 4)
-        MIPS_SYS(sys_vmsplice, 4)
-        MIPS_SYS(sys_move_pages, 6)
-        MIPS_SYS(sys_set_robust_list, 2)
-        MIPS_SYS(sys_get_robust_list, 3) /* 4310 */
-        MIPS_SYS(sys_kexec_load, 4)
-        MIPS_SYS(sys_getcpu, 3)
-        MIPS_SYS(sys_epoll_pwait, 6)
-        MIPS_SYS(sys_ioprio_set, 3)
-        MIPS_SYS(sys_ioprio_get, 2)
-        MIPS_SYS(sys_utimensat, 4)
-        MIPS_SYS(sys_signalfd, 3)
-        MIPS_SYS(sys_ni_syscall, 0)     /* was timerfd */
-        MIPS_SYS(sys_eventfd, 1)
-        MIPS_SYS(sys_fallocate, 6)      /* 4320 */
-        MIPS_SYS(sys_timerfd_create, 2)
-        MIPS_SYS(sys_timerfd_gettime, 2)
-        MIPS_SYS(sys_timerfd_settime, 4)
-        MIPS_SYS(sys_signalfd4, 4)
-        MIPS_SYS(sys_eventfd2, 2)       /* 4325 */
-        MIPS_SYS(sys_epoll_create1, 1)
-        MIPS_SYS(sys_dup3, 3)
-        MIPS_SYS(sys_pipe2, 2)
-        MIPS_SYS(sys_inotify_init1, 1)
-        MIPS_SYS(sys_preadv, 5)         /* 4330 */
-        MIPS_SYS(sys_pwritev, 5)
-        MIPS_SYS(sys_rt_tgsigqueueinfo, 4)
-        MIPS_SYS(sys_perf_event_open, 5)
-        MIPS_SYS(sys_accept4, 4)
-        MIPS_SYS(sys_recvmmsg, 5)       /* 4335 */
-        MIPS_SYS(sys_fanotify_init, 2)
-        MIPS_SYS(sys_fanotify_mark, 6)
-        MIPS_SYS(sys_prlimit64, 4)
-        MIPS_SYS(sys_name_to_handle_at, 5)
-        MIPS_SYS(sys_open_by_handle_at, 3) /* 4340 */
-        MIPS_SYS(sys_clock_adjtime, 2)
-        MIPS_SYS(sys_syncfs, 1)
-        MIPS_SYS(sys_sendmmsg, 4)
-        MIPS_SYS(sys_setns, 2)
-        MIPS_SYS(sys_process_vm_readv, 6) /* 345 */
-        MIPS_SYS(sys_process_vm_writev, 6)
-        MIPS_SYS(sys_kcmp, 5)
-        MIPS_SYS(sys_finit_module, 3)
-        MIPS_SYS(sys_sched_setattr, 2)
-        MIPS_SYS(sys_sched_getattr, 3)  /* 350 */
-        MIPS_SYS(sys_renameat2, 5)
-        MIPS_SYS(sys_seccomp, 3)
-        MIPS_SYS(sys_getrandom, 3)
-        MIPS_SYS(sys_memfd_create, 2)
-        MIPS_SYS(sys_bpf, 3)            /* 355 */
-        MIPS_SYS(sys_execveat, 5)
-        MIPS_SYS(sys_userfaultfd, 1)
-        MIPS_SYS(sys_membarrier, 2)
-        MIPS_SYS(sys_mlock2, 3)
-        MIPS_SYS(sys_copy_file_range, 6) /* 360 */
-        MIPS_SYS(sys_preadv2, 6)
-        MIPS_SYS(sys_pwritev2, 6)
-        MIPS_SYS(sys_pkey_mprotect, 4)
-        MIPS_SYS(sys_pkey_alloc, 2)
-        MIPS_SYS(sys_pkey_free, 1)                 /* 365 */
-        MIPS_SYS(sys_statx, 5)
-        MIPS_SYS(sys_rseq, 4)
-        MIPS_SYS(sys_io_pgetevents, 6)
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 370 */
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 375 */
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 380 */
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 385 */
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 390 */
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYSCALL_NUMBER_UNUSED,
-        MIPS_SYS(sys_semget, 3)
-        MIPS_SYS(sys_semctl, 4)
-        MIPS_SYS(sys_shmget, 3)                    /* 395 */
-        MIPS_SYS(sys_shmctl, 3)
-        MIPS_SYS(sys_shmat, 3)
-        MIPS_SYS(sys_shmdt, 1)
-        MIPS_SYS(sys_msgget, 2)
-        MIPS_SYS(sys_msgsnd, 4)                    /* 400 */
-        MIPS_SYS(sys_msgrcv, 5)
-        MIPS_SYS(sys_msgctl, 3)
-        MIPS_SYS(sys_clock_gettime64, 2)
-        MIPS_SYS(sys_clock_settime64, 2)
-        MIPS_SYS(sys_clock_adjtime64, 2)           /* 405 */
-        MIPS_SYS(sys_clock_getres_time64, 2)
-        MIPS_SYS(sys_clock_nanosleep_time64, 4)
-        MIPS_SYS(sys_timer_gettime64, 2)
-        MIPS_SYS(sys_timer_settime64, 4)
-        MIPS_SYS(sys_timerfd_gettime64, 2)         /* 410 */
-        MIPS_SYS(sys_timerfd_settime64, 4)
-        MIPS_SYS(sys_utimensat_time64, 4)
-        MIPS_SYS(sys_pselect6_time64, 6)
-        MIPS_SYS(sys_ppoll_time64, 5)
-        MIPS_SYSCALL_NUMBER_UNUSED,                /* 415 */
-        MIPS_SYS(sys_io_pgetevents_time64, 6)
-        MIPS_SYS(sys_recvmmsg_time64, 5)
-        MIPS_SYS(sys_mq_timedsend_time64, 5)
-        MIPS_SYS(sys_mq_timedreceive_time64, 5)
-        MIPS_SYS(sys_semtimedop_time64, 4)         /* 420 */
-        MIPS_SYS(sys_rt_sigtimedwait_time64, 4)
-        MIPS_SYS(sys_futex_time64, 6)
-        MIPS_SYS(sys_sched_rr_get_interval_time64, 2)
-        MIPS_SYS(sys_pidfd_send_signal, 4)
-        MIPS_SYS(sys_io_uring_setup, 2)            /* 425 */
-        MIPS_SYS(sys_io_uring_enter, 6)
-        MIPS_SYS(sys_io_uring_register, 4)
-        MIPS_SYS(sys_open_tree, 3)
-        MIPS_SYS(sys_move_mount, 5)
-        MIPS_SYS(sys_fsopen, 2)                    /* 430 */
-        MIPS_SYS(sys_fsconfig, 5)
-        MIPS_SYS(sys_fsmount, 3)
-        MIPS_SYS(sys_fspick, 3)
-        MIPS_SYS(sys_pidfd_open, 2)
-        MIPS_SYS(sys_clone3, 2)                    /* 435 */
-
+#include "syscall-args-o32.c.inc"
 };
-#  undef MIPS_SYS
 # endif /* O32 */
 
 /* Break codes */
diff --git a/linux-user/mips/syscall-args-o32.c.inc b/linux-user/mips/syscall-args-o32.c.inc
new file mode 100644 (file)
index 0000000..0ad3585
--- /dev/null
@@ -0,0 +1,436 @@
+    [   0] = 7, /* syscall */
+    [   1] = 1, /* exit */
+    [   2] = 0, /* fork */
+    [   3] = 3, /* read */
+    [   4] = 3, /* write */
+    [   5] = 3, /* open */
+    [   6] = 1, /* close */
+    [   7] = 3, /* waitpid */
+    [   8] = 2, /* creat */
+    [   9] = 2, /* link */
+    [  10] = 1, /* unlink */
+    [  11] = 3, /* execve */
+    [  12] = 1, /* chdir */
+    [  13] = 1, /* time */
+    [  14] = 3, /* mknod */
+    [  15] = 2, /* chmod */
+    [  16] = 3, /* lchown */
+    [  17] = 0, /* break */
+    [  18] = 2, /* oldstat */
+    [  19] = 3, /* lseek */
+    [  20] = 0, /* getpid */
+    [  21] = 5, /* mount */
+    [  22] = 1, /* umount */
+    [  23] = 1, /* setuid */
+    [  24] = 0, /* getuid */
+    [  25] = 1, /* stime */
+    [  26] = 4, /* ptrace */
+    [  27] = 1, /* alarm */
+    [  28] = 2, /* oldfstat */
+    [  29] = 0, /* pause */
+    [  30] = 2, /* utime */
+    [  31] = 0, /* stty */
+    [  32] = 0, /* gtty */
+    [  33] = 2, /* access */
+    [  34] = 1, /* nice */
+    [  35] = 1, /* ftime */
+    [  36] = 0, /* sync */
+    [  37] = 2, /* kill */
+    [  38] = 2, /* rename */
+    [  39] = 2, /* mkdir */
+    [  40] = 1, /* rmdir */
+    [  41] = 1, /* dup */
+    [  42] = 0, /* pipe */
+    [  43] = 1, /* times */
+    [  44] = 0, /* prof */
+    [  45] = 1, /* brk */
+    [  46] = 1, /* setgid */
+    [  47] = 0, /* getgid */
+    [  48] = 2, /* signal */
+    [  49] = 0, /* geteuid */
+    [  50] = 0, /* getegid */
+    [  51] = 1, /* acct */
+    [  52] = 2, /* umount2 */
+    [  53] = 0, /* lock */
+    [  54] = 3, /* ioctl */
+    [  55] = 3, /* fcntl */
+    [  56] = 0, /* mpx */
+    [  57] = 2, /* setpgid */
+    [  58] = 0, /* ulimit */
+    [  59] = 1, /* oldolduname */
+    [  60] = 1, /* umask */
+    [  61] = 1, /* chroot */
+    [  62] = 2, /* ustat */
+    [  63] = 2, /* dup2 */
+    [  64] = 0, /* getppid */
+    [  65] = 0, /* getpgrp */
+    [  66] = 0, /* setsid */
+    [  67] = 3, /* sigaction */
+    [  68] = 0, /* sgetmask */
+    [  69] = 1, /* ssetmask */
+    [  70] = 2, /* setreuid */
+    [  71] = 2, /* setregid */
+    [  72] = 1, /* sigsuspend */
+    [  73] = 1, /* sigpending */
+    [  74] = 2, /* sethostname */
+    [  75] = 2, /* setrlimit */
+    [  76] = 2, /* getrlimit */
+    [  77] = 2, /* getrusage */
+    [  78] = 2, /* gettimeofday */
+    [  79] = 2, /* settimeofday */
+    [  80] = 2, /* getgroups */
+    [  81] = 2, /* setgroups */
+    [  82] = 0, /* reserved82 */
+    [  83] = 2, /* symlink */
+    [  84] = 2, /* oldlstat */
+    [  85] = 3, /* readlink */
+    [  86] = 1, /* uselib */
+    [  87] = 2, /* swapon */
+    [  88] = 4, /* reboot */
+    [  89] = 3, /* readdir */
+    [  90] = 6, /* mmap */
+    [  91] = 2, /* munmap */
+    [  92] = 2, /* truncate */
+    [  93] = 2, /* ftruncate */
+    [  94] = 2, /* fchmod */
+    [  95] = 3, /* fchown */
+    [  96] = 2, /* getpriority */
+    [  97] = 3, /* setpriority */
+    [  98] = 0, /* profil */
+    [  99] = 2, /* statfs */
+    [ 100] = 2, /* fstatfs */
+    [ 101] = 3, /* ioperm */
+    [ 102] = 2, /* socketcall */
+    [ 103] = 3, /* syslog */
+    [ 104] = 3, /* setitimer */
+    [ 105] = 2, /* getitimer */
+    [ 106] = 2, /* stat */
+    [ 107] = 2, /* lstat */
+    [ 108] = 2, /* fstat */
+    [ 109] = 1, /* olduname */
+    [ 110] = 1, /* iopl */
+    [ 111] = 0, /* vhangup */
+    [ 112] = 0, /* idle */
+    [ 113] = 5, /* vm86 */
+    [ 114] = 4, /* wait4 */
+    [ 115] = 1, /* swapoff */
+    [ 116] = 1, /* sysinfo */
+    [ 117] = 6, /* ipc */
+    [ 118] = 1, /* fsync */
+    [ 119] = 0, /* sigreturn */
+    [ 120] = 5, /* clone */
+    [ 121] = 2, /* setdomainname */
+    [ 122] = 1, /* uname */
+    [ 123] = 0, /* modify_ldt */
+    [ 124] = 1, /* adjtimex */
+    [ 125] = 3, /* mprotect */
+    [ 126] = 3, /* sigprocmask */
+    [ 127] = 2, /* create_module */
+    [ 128] = 3, /* init_module */
+    [ 129] = 2, /* delete_module */
+    [ 130] = 1, /* get_kernel_syms */
+    [ 131] = 4, /* quotactl */
+    [ 132] = 1, /* getpgid */
+    [ 133] = 1, /* fchdir */
+    [ 134] = 2, /* bdflush */
+    [ 135] = 3, /* sysfs */
+    [ 136] = 1, /* personality */
+    [ 137] = 0, /* afs_syscall */
+    [ 138] = 1, /* setfsuid */
+    [ 139] = 1, /* setfsgid */
+    [ 140] = 5, /* _llseek */
+    [ 141] = 3, /* getdents */
+    [ 142] = 5, /* _newselect */
+    [ 143] = 2, /* flock */
+    [ 144] = 3, /* msync */
+    [ 145] = 3, /* readv */
+    [ 146] = 3, /* writev */
+    [ 147] = 3, /* cacheflush */
+    [ 148] = 3, /* cachectl */
+    [ 149] = 4, /* sysmips */
+    [ 150] = 0, /* setup */
+    [ 151] = 1, /* getsid */
+    [ 152] = 1, /* fdatasync */
+    [ 153] = 1, /* _sysctl */
+    [ 154] = 2, /* mlock */
+    [ 155] = 2, /* munlock */
+    [ 156] = 1, /* mlockall */
+    [ 157] = 0, /* munlockall */
+    [ 158] = 2, /* sched_setparam */
+    [ 159] = 2, /* sched_getparam */
+    [ 160] = 3, /* sched_setscheduler */
+    [ 161] = 1, /* sched_getscheduler */
+    [ 162] = 0, /* sched_yield */
+    [ 163] = 1, /* sched_get_priority_max */
+    [ 164] = 1, /* sched_get_priority_min */
+    [ 165] = 2, /* sched_rr_get_interval */
+    [ 166] = 2, /* nanosleep */
+    [ 167] = 5, /* mremap */
+    [ 168] = 3, /* accept */
+    [ 169] = 3, /* bind */
+    [ 170] = 3, /* connect */
+    [ 171] = 3, /* getpeername */
+    [ 172] = 3, /* getsockname */
+    [ 173] = 5, /* getsockopt */
+    [ 174] = 2, /* listen */
+    [ 175] = 4, /* recv */
+    [ 176] = 6, /* recvfrom */
+    [ 177] = 3, /* recvmsg */
+    [ 178] = 4, /* send */
+    [ 179] = 3, /* sendmsg */
+    [ 180] = 6, /* sendto */
+    [ 181] = 5, /* setsockopt */
+    [ 182] = 2, /* shutdown */
+    [ 183] = 3, /* socket */
+    [ 184] = 4, /* socketpair */
+    [ 185] = 3, /* setresuid */
+    [ 186] = 3, /* getresuid */
+    [ 187] = 5, /* query_module */
+    [ 188] = 3, /* poll */
+    [ 189] = 3, /* nfsservctl */
+    [ 190] = 3, /* setresgid */
+    [ 191] = 3, /* getresgid */
+    [ 192] = 5, /* prctl */
+    [ 193] = 0, /* rt_sigreturn */
+    [ 194] = 4, /* rt_sigaction */
+    [ 195] = 4, /* rt_sigprocmask */
+    [ 196] = 2, /* rt_sigpending */
+    [ 197] = 4, /* rt_sigtimedwait */
+    [ 198] = 3, /* rt_sigqueueinfo */
+    [ 199] = 2, /* rt_sigsuspend */
+    [ 200] = 6, /* pread64 */
+    [ 201] = 6, /* pwrite64 */
+    [ 202] = 3, /* chown */
+    [ 203] = 2, /* getcwd */
+    [ 204] = 2, /* capget */
+    [ 205] = 2, /* capset */
+    [ 206] = 2, /* sigaltstack */
+    [ 207] = 4, /* sendfile */
+    [ 208] = 5, /* getpmsg */
+    [ 209] = 5, /* putpmsg */
+    [ 210] = 6, /* mmap2 */
+    [ 211] = 4, /* truncate64 */
+    [ 212] = 4, /* ftruncate64 */
+    [ 213] = 2, /* stat64 */
+    [ 214] = 2, /* lstat64 */
+    [ 215] = 2, /* fstat64 */
+    [ 216] = 2, /* pivot_root */
+    [ 217] = 3, /* mincore */
+    [ 218] = 3, /* madvise */
+    [ 219] = 3, /* getdents64 */
+    [ 220] = 3, /* fcntl64 */
+    [ 221] = 0, /* reserved221 */
+    [ 222] = 0, /* gettid */
+    [ 223] = 5, /* readahead */
+    [ 224] = 5, /* setxattr */
+    [ 225] = 5, /* lsetxattr */
+    [ 226] = 5, /* fsetxattr */
+    [ 227] = 4, /* getxattr */
+    [ 228] = 4, /* lgetxattr */
+    [ 229] = 4, /* fgetxattr */
+    [ 230] = 3, /* listxattr */
+    [ 231] = 3, /* llistxattr */
+    [ 232] = 3, /* flistxattr */
+    [ 233] = 2, /* removexattr */
+    [ 234] = 2, /* lremovexattr */
+    [ 235] = 2, /* fremovexattr */
+    [ 236] = 2, /* tkill */
+    [ 237] = 4, /* sendfile64 */
+    [ 238] = 6, /* futex */
+    [ 239] = 3, /* sched_setaffinity */
+    [ 240] = 3, /* sched_getaffinity */
+    [ 241] = 2, /* io_setup */
+    [ 242] = 1, /* io_destroy */
+    [ 243] = 5, /* io_getevents */
+    [ 244] = 3, /* io_submit */
+    [ 245] = 3, /* io_cancel */
+    [ 246] = 1, /* exit_group */
+    [ 247] = 4, /* lookup_dcookie */
+    [ 248] = 1, /* epoll_create */
+    [ 249] = 4, /* epoll_ctl */
+    [ 250] = 4, /* epoll_wait */
+    [ 251] = 5, /* remap_file_pages */
+    [ 252] = 1, /* set_tid_address */
+    [ 253] = 0, /* restart_syscall */
+    [ 254] = 7, /* fadvise64 */
+    [ 255] = 3, /* statfs64 */
+    [ 256] = 3, /* fstatfs64 */
+    [ 257] = 3, /* timer_create */
+    [ 258] = 4, /* timer_settime */
+    [ 259] = 2, /* timer_gettime */
+    [ 260] = 1, /* timer_getoverrun */
+    [ 261] = 1, /* timer_delete */
+    [ 262] = 2, /* clock_settime */
+    [ 263] = 2, /* clock_gettime */
+    [ 264] = 2, /* clock_getres */
+    [ 265] = 4, /* clock_nanosleep */
+    [ 266] = 3, /* tgkill */
+    [ 267] = 2, /* utimes */
+    [ 268] = 6, /* mbind */
+    [ 269] = 5, /* get_mempolicy */
+    [ 270] = 3, /* set_mempolicy */
+    [ 271] = 4, /* mq_open */
+    [ 272] = 1, /* mq_unlink */
+    [ 273] = 5, /* mq_timedsend */
+    [ 274] = 5, /* mq_timedreceive */
+    [ 275] = 2, /* mq_notify */
+    [ 276] = 3, /* mq_getsetattr */
+    [ 277] = 5, /* vserver */
+    [ 278] = 5, /* waitid */
+    [ 279] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 280] = 5, /* add_key */
+    [ 281] = 4, /* request_key */
+    [ 282] = 5, /* keyctl */
+    [ 283] = 1, /* set_thread_area */
+    [ 284] = 0, /* inotify_init */
+    [ 285] = 3, /* inotify_add_watch */
+    [ 286] = 2, /* inotify_rm_watch */
+    [ 287] = 4, /* migrate_pages */
+    [ 288] = 4, /* openat */
+    [ 289] = 3, /* mkdirat */
+    [ 290] = 4, /* mknodat */
+    [ 291] = 5, /* fchownat */
+    [ 292] = 3, /* futimesat */
+    [ 293] = 4, /* fstatat64 */
+    [ 294] = 3, /* unlinkat */
+    [ 295] = 4, /* renameat */
+    [ 296] = 5, /* linkat */
+    [ 297] = 3, /* symlinkat */
+    [ 298] = 4, /* readlinkat */
+    [ 299] = 3, /* fchmodat */
+    [ 300] = 3, /* faccessat */
+    [ 301] = 6, /* pselect6 */
+    [ 302] = 5, /* ppoll */
+    [ 303] = 1, /* unshare */
+    [ 304] = 6, /* splice */
+    [ 305] = 7, /* sync_file_range */
+    [ 306] = 4, /* tee */
+    [ 307] = 4, /* vmsplice */
+    [ 308] = 6, /* move_pages */
+    [ 309] = 2, /* set_robust_list */
+    [ 310] = 3, /* get_robust_list */
+    [ 311] = 4, /* kexec_load */
+    [ 312] = 3, /* getcpu */
+    [ 313] = 6, /* epoll_pwait */
+    [ 314] = 3, /* ioprio_set */
+    [ 315] = 2, /* ioprio_get */
+    [ 316] = 4, /* utimensat */
+    [ 317] = 3, /* signalfd */
+    [ 318] = 4, /* timerfd */
+    [ 319] = 1, /* eventfd */
+    [ 320] = 6, /* fallocate */
+    [ 321] = 2, /* timerfd_create */
+    [ 322] = 2, /* timerfd_gettime */
+    [ 323] = 4, /* timerfd_settime */
+    [ 324] = 4, /* signalfd4 */
+    [ 325] = 2, /* eventfd2 */
+    [ 326] = 1, /* epoll_create1 */
+    [ 327] = 3, /* dup3 */
+    [ 328] = 2, /* pipe2 */
+    [ 329] = 1, /* inotify_init1 */
+    [ 330] = 5, /* preadv */
+    [ 331] = 5, /* pwritev */
+    [ 332] = 4, /* rt_tgsigqueueinfo */
+    [ 333] = 5, /* perf_event_open */
+    [ 334] = 4, /* accept4 */
+    [ 335] = 5, /* recvmmsg */
+    [ 336] = 2, /* fanotify_init */
+    [ 337] = 6, /* fanotify_mark */
+    [ 338] = 4, /* prlimit64 */
+    [ 339] = 5, /* name_to_handle_at */
+    [ 340] = 3, /* open_by_handle_at */
+    [ 341] = 2, /* clock_adjtime */
+    [ 342] = 1, /* syncfs */
+    [ 343] = 4, /* sendmmsg */
+    [ 344] = 2, /* setns */
+    [ 345] = 6, /* process_vm_readv */
+    [ 346] = 6, /* process_vm_writev */
+    [ 347] = 5, /* kcmp */
+    [ 348] = 3, /* finit_module */
+    [ 349] = 3, /* sched_setattr */
+    [ 350] = 4, /* sched_getattr */
+    [ 351] = 5, /* renameat2 */
+    [ 352] = 3, /* seccomp */
+    [ 353] = 3, /* getrandom */
+    [ 354] = 2, /* memfd_create */
+    [ 355] = 3, /* bpf */
+    [ 356] = 5, /* execveat */
+    [ 357] = 1, /* userfaultfd */
+    [ 358] = 2, /* membarrier */
+    [ 359] = 3, /* mlock2 */
+    [ 360] = 6, /* copy_file_range */
+    [ 361] = 6, /* preadv2 */
+    [ 362] = 6, /* pwritev2 */
+    [ 363] = 4, /* pkey_mprotect */
+    [ 364] = 2, /* pkey_alloc */
+    [ 365] = 1, /* pkey_free */
+    [ 366] = 5, /* statx */
+    [ 367] = 4, /* rseq */
+    [ 368] = 6, /* io_pgetevents */
+    [ 369] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 370] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 371] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 372] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 373] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 374] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 375] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 376] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 377] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 378] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 379] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 380] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 381] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 382] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 383] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 384] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 385] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 386] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 387] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 388] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 389] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 390] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 391] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 392] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 393] = 3, /* semget */
+    [ 394] = 4, /* semctl */
+    [ 395] = 3, /* shmget */
+    [ 396] = 3, /* shmctl */
+    [ 397] = 3, /* shmat */
+    [ 398] = 1, /* shmdt */
+    [ 399] = 2, /* msgget */
+    [ 400] = 4, /* msgsnd */
+    [ 401] = 5, /* msgrcv */
+    [ 402] = 3, /* msgctl */
+    [ 403] = 2, /* clock_gettime64 */
+    [ 404] = 2, /* clock_settime64 */
+    [ 405] = 2, /* clock_adjtime64 */
+    [ 406] = 2, /* clock_getres_time64 */
+    [ 407] = 4, /* clock_nanosleep_time64 */
+    [ 408] = 2, /* timer_gettime64 */
+    [ 409] = 4, /* timer_settime64 */
+    [ 410] = 2, /* timerfd_gettime64 */
+    [ 411] = 4, /* timerfd_settime64 */
+    [ 412] = 4, /* utimensat_time64 */
+    [ 413] = 6, /* pselect6_time64 */
+    [ 414] = 5, /* ppoll_time64 */
+    [ 415] = MIPS_SYSCALL_NUMBER_UNUSED,
+    [ 416] = 6, /* io_pgetevents_time64 */
+    [ 417] = 5, /* recvmmsg_time64 */
+    [ 418] = 5, /* mq_timedsend_time64 */
+    [ 419] = 5, /* mq_timedreceive_time64 */
+    [ 420] = 4, /* semtimedop_time64 */
+    [ 421] = 4, /* rt_sigtimedwait_time64 */
+    [ 422] = 6, /* futex_time64 */
+    [ 423] = 2, /* sched_rr_get_interval_time64 */
+    [ 424] = 4, /* pidfd_send_signal */
+    [ 425] = 2, /* io_uring_setup */
+    [ 426] = 6, /* io_uring_enter */
+    [ 427] = 4, /* io_uring_register */
+    [ 428] = 3, /* open_tree */
+    [ 429] = 5, /* move_mount */
+    [ 430] = 2, /* fsopen */
+    [ 431] = 5, /* fsconfig */
+    [ 432] = 3, /* fsmount */
+    [ 433] = 3, /* fspick */
+    [ 434] = 2, /* pidfd_open */
+    [ 435] = 2, /* clone3 */
diff --git a/linux-user/mips/syscall_nr.h b/linux-user/mips/syscall_nr.h
deleted file mode 100644 (file)
index 0be3af1..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Linux o32 style syscalls are in the range from 4000 to 4999.
- */
-
-#ifndef LINUX_USER_MIPS_SYSCALL_NR_H
-#define LINUX_USER_MIPS_SYSCALL_NR_H
-
-#define TARGET_NR_Linux                        4000
-#define TARGET_NR_syscall              (TARGET_NR_Linux +   0)
-#define TARGET_NR_exit                 (TARGET_NR_Linux +   1)
-#define TARGET_NR_fork                 (TARGET_NR_Linux +   2)
-#define TARGET_NR_read                 (TARGET_NR_Linux +   3)
-#define TARGET_NR_write                        (TARGET_NR_Linux +   4)
-#define TARGET_NR_open                 (TARGET_NR_Linux +   5)
-#define TARGET_NR_close                        (TARGET_NR_Linux +   6)
-#define TARGET_NR_waitpid              (TARGET_NR_Linux +   7)
-#define TARGET_NR_creat                        (TARGET_NR_Linux +   8)
-#define TARGET_NR_link                 (TARGET_NR_Linux +   9)
-#define TARGET_NR_unlink               (TARGET_NR_Linux +  10)
-#define TARGET_NR_execve               (TARGET_NR_Linux +  11)
-#define TARGET_NR_chdir                        (TARGET_NR_Linux +  12)
-#define TARGET_NR_time                 (TARGET_NR_Linux +  13)
-#define TARGET_NR_mknod                        (TARGET_NR_Linux +  14)
-#define TARGET_NR_chmod                        (TARGET_NR_Linux +  15)
-#define TARGET_NR_lchown               (TARGET_NR_Linux +  16)
-#define TARGET_NR_break                        (TARGET_NR_Linux +  17)
-#define TARGET_NR_unused18             (TARGET_NR_Linux +  18)
-#define TARGET_NR_lseek                        (TARGET_NR_Linux +  19)
-#define TARGET_NR_getpid               (TARGET_NR_Linux +  20)
-#define TARGET_NR_mount                        (TARGET_NR_Linux +  21)
-#define TARGET_NR_umount               (TARGET_NR_Linux +  22)
-#define TARGET_NR_setuid               (TARGET_NR_Linux +  23)
-#define TARGET_NR_getuid               (TARGET_NR_Linux +  24)
-#define TARGET_NR_stime                        (TARGET_NR_Linux +  25)
-#define TARGET_NR_ptrace               (TARGET_NR_Linux +  26)
-#define TARGET_NR_alarm                        (TARGET_NR_Linux +  27)
-#define TARGET_NR_unused28             (TARGET_NR_Linux +  28)
-#define TARGET_NR_pause                        (TARGET_NR_Linux +  29)
-#define TARGET_NR_utime                        (TARGET_NR_Linux +  30)
-#define TARGET_NR_stty                 (TARGET_NR_Linux +  31)
-#define TARGET_NR_gtty                 (TARGET_NR_Linux +  32)
-#define TARGET_NR_access               (TARGET_NR_Linux +  33)
-#define TARGET_NR_nice                 (TARGET_NR_Linux +  34)
-#define TARGET_NR_ftime                        (TARGET_NR_Linux +  35)
-#define TARGET_NR_sync                 (TARGET_NR_Linux +  36)
-#define TARGET_NR_kill                 (TARGET_NR_Linux +  37)
-#define TARGET_NR_rename               (TARGET_NR_Linux +  38)
-#define TARGET_NR_mkdir                        (TARGET_NR_Linux +  39)
-#define TARGET_NR_rmdir                        (TARGET_NR_Linux +  40)
-#define TARGET_NR_dup                  (TARGET_NR_Linux +  41)
-#define TARGET_NR_pipe                 (TARGET_NR_Linux +  42)
-#define TARGET_NR_times                        (TARGET_NR_Linux +  43)
-#define TARGET_NR_prof                 (TARGET_NR_Linux +  44)
-#define TARGET_NR_brk                  (TARGET_NR_Linux +  45)
-#define TARGET_NR_setgid               (TARGET_NR_Linux +  46)
-#define TARGET_NR_getgid               (TARGET_NR_Linux +  47)
-#define TARGET_NR_signal               (TARGET_NR_Linux +  48)
-#define TARGET_NR_geteuid              (TARGET_NR_Linux +  49)
-#define TARGET_NR_getegid              (TARGET_NR_Linux +  50)
-#define TARGET_NR_acct                 (TARGET_NR_Linux +  51)
-#define TARGET_NR_umount2              (TARGET_NR_Linux +  52)
-#define TARGET_NR_lock                 (TARGET_NR_Linux +  53)
-#define TARGET_NR_ioctl                        (TARGET_NR_Linux +  54)
-#define TARGET_NR_fcntl                        (TARGET_NR_Linux +  55)
-#define TARGET_NR_mpx                  (TARGET_NR_Linux +  56)
-#define TARGET_NR_setpgid              (TARGET_NR_Linux +  57)
-#define TARGET_NR_ulimit               (TARGET_NR_Linux +  58)
-#define TARGET_NR_unused59             (TARGET_NR_Linux +  59)
-#define TARGET_NR_umask                        (TARGET_NR_Linux +  60)
-#define TARGET_NR_chroot               (TARGET_NR_Linux +  61)
-#define TARGET_NR_ustat                        (TARGET_NR_Linux +  62)
-#define TARGET_NR_dup2                 (TARGET_NR_Linux +  63)
-#define TARGET_NR_getppid              (TARGET_NR_Linux +  64)
-#define TARGET_NR_getpgrp              (TARGET_NR_Linux +  65)
-#define TARGET_NR_setsid               (TARGET_NR_Linux +  66)
-#define TARGET_NR_sigaction            (TARGET_NR_Linux +  67)
-#define TARGET_NR_sgetmask             (TARGET_NR_Linux +  68)
-#define TARGET_NR_ssetmask             (TARGET_NR_Linux +  69)
-#define TARGET_NR_setreuid             (TARGET_NR_Linux +  70)
-#define TARGET_NR_setregid             (TARGET_NR_Linux +  71)
-#define TARGET_NR_sigsuspend           (TARGET_NR_Linux +  72)
-#define TARGET_NR_sigpending           (TARGET_NR_Linux +  73)
-#define TARGET_NR_sethostname          (TARGET_NR_Linux +  74)
-#define TARGET_NR_setrlimit            (TARGET_NR_Linux +  75)
-#define TARGET_NR_getrlimit            (TARGET_NR_Linux +  76)
-#define TARGET_NR_getrusage            (TARGET_NR_Linux +  77)
-#define TARGET_NR_gettimeofday         (TARGET_NR_Linux +  78)
-#define TARGET_NR_settimeofday         (TARGET_NR_Linux +  79)
-#define TARGET_NR_getgroups            (TARGET_NR_Linux +  80)
-#define TARGET_NR_setgroups            (TARGET_NR_Linux +  81)
-#define TARGET_NR_reserved82           (TARGET_NR_Linux +  82)
-#define TARGET_NR_symlink              (TARGET_NR_Linux +  83)
-#define TARGET_NR_unused84             (TARGET_NR_Linux +  84)
-#define TARGET_NR_readlink             (TARGET_NR_Linux +  85)
-#define TARGET_NR_uselib               (TARGET_NR_Linux +  86)
-#define TARGET_NR_swapon               (TARGET_NR_Linux +  87)
-#define TARGET_NR_reboot               (TARGET_NR_Linux +  88)
-#define TARGET_NR_readdir              (TARGET_NR_Linux +  89)
-#define TARGET_NR_mmap                 (TARGET_NR_Linux +  90)
-#define TARGET_NR_munmap               (TARGET_NR_Linux +  91)
-#define TARGET_NR_truncate             (TARGET_NR_Linux +  92)
-#define TARGET_NR_ftruncate            (TARGET_NR_Linux +  93)
-#define TARGET_NR_fchmod               (TARGET_NR_Linux +  94)
-#define TARGET_NR_fchown               (TARGET_NR_Linux +  95)
-#define TARGET_NR_getpriority          (TARGET_NR_Linux +  96)
-#define TARGET_NR_setpriority          (TARGET_NR_Linux +  97)
-#define TARGET_NR_profil               (TARGET_NR_Linux +  98)
-#define TARGET_NR_statfs               (TARGET_NR_Linux +  99)
-#define TARGET_NR_fstatfs              (TARGET_NR_Linux + 100)
-#define TARGET_NR_ioperm               (TARGET_NR_Linux + 101)
-#define TARGET_NR_socketcall           (TARGET_NR_Linux + 102)
-#define TARGET_NR_syslog               (TARGET_NR_Linux + 103)
-#define TARGET_NR_setitimer            (TARGET_NR_Linux + 104)
-#define TARGET_NR_getitimer            (TARGET_NR_Linux + 105)
-#define TARGET_NR_stat                 (TARGET_NR_Linux + 106)
-#define TARGET_NR_lstat                        (TARGET_NR_Linux + 107)
-#define TARGET_NR_fstat                        (TARGET_NR_Linux + 108)
-#define TARGET_NR_unused109            (TARGET_NR_Linux + 109)
-#define TARGET_NR_iopl                 (TARGET_NR_Linux + 110)
-#define TARGET_NR_vhangup              (TARGET_NR_Linux + 111)
-#define TARGET_NR_idle                 (TARGET_NR_Linux + 112)
-#define TARGET_NR_vm86                 (TARGET_NR_Linux + 113)
-#define TARGET_NR_wait4                        (TARGET_NR_Linux + 114)
-#define TARGET_NR_swapoff              (TARGET_NR_Linux + 115)
-#define TARGET_NR_sysinfo              (TARGET_NR_Linux + 116)
-#define TARGET_NR_ipc                  (TARGET_NR_Linux + 117)
-#define TARGET_NR_fsync                        (TARGET_NR_Linux + 118)
-#define TARGET_NR_sigreturn            (TARGET_NR_Linux + 119)
-#define TARGET_NR_clone                        (TARGET_NR_Linux + 120)
-#define TARGET_NR_setdomainname                (TARGET_NR_Linux + 121)
-#define TARGET_NR_uname                        (TARGET_NR_Linux + 122)
-#define TARGET_NR_modify_ldt           (TARGET_NR_Linux + 123)
-#define TARGET_NR_adjtimex             (TARGET_NR_Linux + 124)
-#define TARGET_NR_mprotect             (TARGET_NR_Linux + 125)
-#define TARGET_NR_sigprocmask          (TARGET_NR_Linux + 126)
-#define TARGET_NR_create_module                (TARGET_NR_Linux + 127)
-#define TARGET_NR_init_module          (TARGET_NR_Linux + 128)
-#define TARGET_NR_delete_module                (TARGET_NR_Linux + 129)
-#define TARGET_NR_get_kernel_syms      (TARGET_NR_Linux + 130)
-#define TARGET_NR_quotactl             (TARGET_NR_Linux + 131)
-#define TARGET_NR_getpgid              (TARGET_NR_Linux + 132)
-#define TARGET_NR_fchdir               (TARGET_NR_Linux + 133)
-#define TARGET_NR_bdflush              (TARGET_NR_Linux + 134)
-#define TARGET_NR_sysfs                        (TARGET_NR_Linux + 135)
-#define TARGET_NR_personality          (TARGET_NR_Linux + 136)
-#define TARGET_NR_afs_syscall          (TARGET_NR_Linux + 137) /* Syscall for Andrew File System */
-#define TARGET_NR_setfsuid             (TARGET_NR_Linux + 138)
-#define TARGET_NR_setfsgid             (TARGET_NR_Linux + 139)
-#define TARGET_NR__llseek              (TARGET_NR_Linux + 140)
-#define TARGET_NR_getdents             (TARGET_NR_Linux + 141)
-#define TARGET_NR__newselect           (TARGET_NR_Linux + 142)
-#define TARGET_NR_flock                        (TARGET_NR_Linux + 143)
-#define TARGET_NR_msync                        (TARGET_NR_Linux + 144)
-#define TARGET_NR_readv                        (TARGET_NR_Linux + 145)
-#define TARGET_NR_writev               (TARGET_NR_Linux + 146)
-#define TARGET_NR_cacheflush           (TARGET_NR_Linux + 147)
-#define TARGET_NR_cachectl             (TARGET_NR_Linux + 148)
-#define TARGET_NR_sysmips              (TARGET_NR_Linux + 149)
-#define TARGET_NR_unused150            (TARGET_NR_Linux + 150)
-#define TARGET_NR_getsid               (TARGET_NR_Linux + 151)
-#define TARGET_NR_fdatasync            (TARGET_NR_Linux + 152)
-#define TARGET_NR__sysctl              (TARGET_NR_Linux + 153)
-#define TARGET_NR_mlock                        (TARGET_NR_Linux + 154)
-#define TARGET_NR_munlock              (TARGET_NR_Linux + 155)
-#define TARGET_NR_mlockall             (TARGET_NR_Linux + 156)
-#define TARGET_NR_munlockall           (TARGET_NR_Linux + 157)
-#define TARGET_NR_sched_setparam       (TARGET_NR_Linux + 158)
-#define TARGET_NR_sched_getparam       (TARGET_NR_Linux + 159)
-#define TARGET_NR_sched_setscheduler   (TARGET_NR_Linux + 160)
-#define TARGET_NR_sched_getscheduler   (TARGET_NR_Linux + 161)
-#define TARGET_NR_sched_yield          (TARGET_NR_Linux + 162)
-#define TARGET_NR_sched_get_priority_max       (TARGET_NR_Linux + 163)
-#define TARGET_NR_sched_get_priority_min       (TARGET_NR_Linux + 164)
-#define TARGET_NR_sched_rr_get_interval        (TARGET_NR_Linux + 165)
-#define TARGET_NR_nanosleep            (TARGET_NR_Linux + 166)
-#define TARGET_NR_mremap               (TARGET_NR_Linux + 167)
-#define TARGET_NR_accept               (TARGET_NR_Linux + 168)
-#define TARGET_NR_bind                 (TARGET_NR_Linux + 169)
-#define TARGET_NR_connect              (TARGET_NR_Linux + 170)
-#define TARGET_NR_getpeername          (TARGET_NR_Linux + 171)
-#define TARGET_NR_getsockname          (TARGET_NR_Linux + 172)
-#define TARGET_NR_getsockopt           (TARGET_NR_Linux + 173)
-#define TARGET_NR_listen               (TARGET_NR_Linux + 174)
-#define TARGET_NR_recv                 (TARGET_NR_Linux + 175)
-#define TARGET_NR_recvfrom             (TARGET_NR_Linux + 176)
-#define TARGET_NR_recvmsg              (TARGET_NR_Linux + 177)
-#define TARGET_NR_send                 (TARGET_NR_Linux + 178)
-#define TARGET_NR_sendmsg              (TARGET_NR_Linux + 179)
-#define TARGET_NR_sendto               (TARGET_NR_Linux + 180)
-#define TARGET_NR_setsockopt           (TARGET_NR_Linux + 181)
-#define TARGET_NR_shutdown             (TARGET_NR_Linux + 182)
-#define TARGET_NR_socket               (TARGET_NR_Linux + 183)
-#define TARGET_NR_socketpair           (TARGET_NR_Linux + 184)
-#define TARGET_NR_setresuid            (TARGET_NR_Linux + 185)
-#define TARGET_NR_getresuid            (TARGET_NR_Linux + 186)
-#define TARGET_NR_query_module         (TARGET_NR_Linux + 187)
-#define TARGET_NR_poll                 (TARGET_NR_Linux + 188)
-#define TARGET_NR_nfsservctl           (TARGET_NR_Linux + 189)
-#define TARGET_NR_setresgid            (TARGET_NR_Linux + 190)
-#define TARGET_NR_getresgid            (TARGET_NR_Linux + 191)
-#define TARGET_NR_prctl                        (TARGET_NR_Linux + 192)
-#define TARGET_NR_rt_sigreturn         (TARGET_NR_Linux + 193)
-#define TARGET_NR_rt_sigaction         (TARGET_NR_Linux + 194)
-#define TARGET_NR_rt_sigprocmask       (TARGET_NR_Linux + 195)
-#define TARGET_NR_rt_sigpending                (TARGET_NR_Linux + 196)
-#define TARGET_NR_rt_sigtimedwait      (TARGET_NR_Linux + 197)
-#define TARGET_NR_rt_sigqueueinfo      (TARGET_NR_Linux + 198)
-#define TARGET_NR_rt_sigsuspend                (TARGET_NR_Linux + 199)
-#define TARGET_NR_pread64              (TARGET_NR_Linux + 200)
-#define TARGET_NR_pwrite64             (TARGET_NR_Linux + 201)
-#define TARGET_NR_chown                (TARGET_NR_Linux + 202)
-#define TARGET_NR_getcwd               (TARGET_NR_Linux + 203)
-#define TARGET_NR_capget               (TARGET_NR_Linux + 204)
-#define TARGET_NR_capset               (TARGET_NR_Linux + 205)
-#define TARGET_NR_sigaltstack          (TARGET_NR_Linux + 206)
-#define TARGET_NR_sendfile             (TARGET_NR_Linux + 207)
-#define TARGET_NR_getpmsg              (TARGET_NR_Linux + 208)
-#define TARGET_NR_putpmsg              (TARGET_NR_Linux + 209)
-#define TARGET_NR_mmap2                        (TARGET_NR_Linux + 210)
-#define TARGET_NR_truncate64           (TARGET_NR_Linux + 211)
-#define TARGET_NR_ftruncate64          (TARGET_NR_Linux + 212)
-#define TARGET_NR_stat64               (TARGET_NR_Linux + 213)
-#define TARGET_NR_lstat64              (TARGET_NR_Linux + 214)
-#define TARGET_NR_fstat64              (TARGET_NR_Linux + 215)
-#define TARGET_NR_pivot_root           (TARGET_NR_Linux + 216)
-#define TARGET_NR_mincore              (TARGET_NR_Linux + 217)
-#define TARGET_NR_madvise              (TARGET_NR_Linux + 218)
-#define TARGET_NR_getdents64           (TARGET_NR_Linux + 219)
-#define TARGET_NR_fcntl64              (TARGET_NR_Linux + 220)
-#define TARGET_NR_reserved221          (TARGET_NR_Linux + 221)
-#define TARGET_NR_gettid               (TARGET_NR_Linux + 222)
-#define TARGET_NR_readahead            (TARGET_NR_Linux + 223)
-#define TARGET_NR_setxattr             (TARGET_NR_Linux + 224)
-#define TARGET_NR_lsetxattr            (TARGET_NR_Linux + 225)
-#define TARGET_NR_fsetxattr            (TARGET_NR_Linux + 226)
-#define TARGET_NR_getxattr             (TARGET_NR_Linux + 227)
-#define TARGET_NR_lgetxattr            (TARGET_NR_Linux + 228)
-#define TARGET_NR_fgetxattr            (TARGET_NR_Linux + 229)
-#define TARGET_NR_listxattr            (TARGET_NR_Linux + 230)
-#define TARGET_NR_llistxattr           (TARGET_NR_Linux + 231)
-#define TARGET_NR_flistxattr           (TARGET_NR_Linux + 232)
-#define TARGET_NR_removexattr          (TARGET_NR_Linux + 233)
-#define TARGET_NR_lremovexattr         (TARGET_NR_Linux + 234)
-#define TARGET_NR_fremovexattr         (TARGET_NR_Linux + 235)
-#define TARGET_NR_tkill                        (TARGET_NR_Linux + 236)
-#define TARGET_NR_sendfile64           (TARGET_NR_Linux + 237)
-#define TARGET_NR_futex                        (TARGET_NR_Linux + 238)
-#define TARGET_NR_sched_setaffinity    (TARGET_NR_Linux + 239)
-#define TARGET_NR_sched_getaffinity    (TARGET_NR_Linux + 240)
-#define TARGET_NR_io_setup             (TARGET_NR_Linux + 241)
-#define TARGET_NR_io_destroy           (TARGET_NR_Linux + 242)
-#define TARGET_NR_io_getevents         (TARGET_NR_Linux + 243)
-#define TARGET_NR_io_submit            (TARGET_NR_Linux + 244)
-#define TARGET_NR_io_cancel            (TARGET_NR_Linux + 245)
-#define TARGET_NR_exit_group           (TARGET_NR_Linux + 246)
-#define TARGET_NR_lookup_dcookie       (TARGET_NR_Linux + 247)
-#define TARGET_NR_epoll_create         (TARGET_NR_Linux + 248)
-#define TARGET_NR_epoll_ctl            (TARGET_NR_Linux + 249)
-#define TARGET_NR_epoll_wait           (TARGET_NR_Linux + 250)
-#define TARGET_NR_remap_file_pages     (TARGET_NR_Linux + 251)
-#define TARGET_NR_set_tid_address      (TARGET_NR_Linux + 252)
-#define TARGET_NR_restart_syscall      (TARGET_NR_Linux + 253)
-#define TARGET_NR_fadvise64_64          (TARGET_NR_Linux + 254)
-#define TARGET_NR_statfs64             (TARGET_NR_Linux + 255)
-#define TARGET_NR_fstatfs64            (TARGET_NR_Linux + 256)
-#define TARGET_NR_timer_create         (TARGET_NR_Linux + 257)
-#define TARGET_NR_timer_settime                (TARGET_NR_Linux + 258)
-#define TARGET_NR_timer_gettime                (TARGET_NR_Linux + 259)
-#define TARGET_NR_timer_getoverrun     (TARGET_NR_Linux + 260)
-#define TARGET_NR_timer_delete         (TARGET_NR_Linux + 261)
-#define TARGET_NR_clock_settime                (TARGET_NR_Linux + 262)
-#define TARGET_NR_clock_gettime                (TARGET_NR_Linux + 263)
-#define TARGET_NR_clock_getres         (TARGET_NR_Linux + 264)
-#define TARGET_NR_clock_nanosleep      (TARGET_NR_Linux + 265)
-#define TARGET_NR_tgkill               (TARGET_NR_Linux + 266)
-#define TARGET_NR_utimes               (TARGET_NR_Linux + 267)
-#define TARGET_NR_mbind                        (TARGET_NR_Linux + 268)
-#define TARGET_NR_get_mempolicy                (TARGET_NR_Linux + 269)
-#define TARGET_NR_set_mempolicy                (TARGET_NR_Linux + 270)
-#define TARGET_NR_mq_open              (TARGET_NR_Linux + 271)
-#define TARGET_NR_mq_unlink            (TARGET_NR_Linux + 272)
-#define TARGET_NR_mq_timedsend         (TARGET_NR_Linux + 273)
-#define TARGET_NR_mq_timedreceive      (TARGET_NR_Linux + 274)
-#define TARGET_NR_mq_notify            (TARGET_NR_Linux + 275)
-#define TARGET_NR_mq_getsetattr                (TARGET_NR_Linux + 276)
-#define TARGET_NR_vserver              (TARGET_NR_Linux + 277)
-#define TARGET_NR_waitid               (TARGET_NR_Linux + 278)
-/* #define TARGET_NR_sys_setaltroot    (TARGET_NR_Linux + 279) */
-#define TARGET_NR_add_key              (TARGET_NR_Linux + 280)
-#define TARGET_NR_request_key          (TARGET_NR_Linux + 281)
-#define TARGET_NR_keyctl               (TARGET_NR_Linux + 282)
-#define TARGET_NR_set_thread_area      (TARGET_NR_Linux + 283)
-#define TARGET_NR_inotify_init         (TARGET_NR_Linux + 284)
-#define TARGET_NR_inotify_add_watch    (TARGET_NR_Linux + 285)
-#define TARGET_NR_inotify_rm_watch     (TARGET_NR_Linux + 286)
-#define TARGET_NR_migrate_pages                (TARGET_NR_Linux + 287)
-#define TARGET_NR_openat               (TARGET_NR_Linux + 288)
-#define TARGET_NR_mkdirat              (TARGET_NR_Linux + 289)
-#define TARGET_NR_mknodat              (TARGET_NR_Linux + 290)
-#define TARGET_NR_fchownat             (TARGET_NR_Linux + 291)
-#define TARGET_NR_futimesat            (TARGET_NR_Linux + 292)
-#define TARGET_NR_fstatat64            (TARGET_NR_Linux + 293)
-#define TARGET_NR_unlinkat             (TARGET_NR_Linux + 294)
-#define TARGET_NR_renameat             (TARGET_NR_Linux + 295)
-#define TARGET_NR_linkat               (TARGET_NR_Linux + 296)
-#define TARGET_NR_symlinkat            (TARGET_NR_Linux + 297)
-#define TARGET_NR_readlinkat           (TARGET_NR_Linux + 298)
-#define TARGET_NR_fchmodat             (TARGET_NR_Linux + 299)
-#define TARGET_NR_faccessat            (TARGET_NR_Linux + 300)
-#define TARGET_NR_pselect6             (TARGET_NR_Linux + 301)
-#define TARGET_NR_ppoll                        (TARGET_NR_Linux + 302)
-#define TARGET_NR_unshare              (TARGET_NR_Linux + 303)
-#define TARGET_NR_splice               (TARGET_NR_Linux + 304)
-#define TARGET_NR_sync_file_range      (TARGET_NR_Linux + 305)
-#define TARGET_NR_tee                  (TARGET_NR_Linux + 306)
-#define TARGET_NR_vmsplice             (TARGET_NR_Linux + 307)
-#define TARGET_NR_move_pages           (TARGET_NR_Linux + 308)
-#define TARGET_NR_set_robust_list      (TARGET_NR_Linux + 309)
-#define TARGET_NR_get_robust_list      (TARGET_NR_Linux + 310)
-#define TARGET_NR_kexec_load           (TARGET_NR_Linux + 311)
-#define TARGET_NR_getcpu               (TARGET_NR_Linux + 312)
-#define TARGET_NR_epoll_pwait          (TARGET_NR_Linux + 313)
-#define TARGET_NR_ioprio_set           (TARGET_NR_Linux + 314)
-#define TARGET_NR_ioprio_get           (TARGET_NR_Linux + 315)
-#define TARGET_NR_utimensat            (TARGET_NR_Linux + 316)
-#define TARGET_NR_signalfd             (TARGET_NR_Linux + 317)
-#define TARGET_NR_timerfd              (TARGET_NR_Linux + 318)
-#define TARGET_NR_eventfd              (TARGET_NR_Linux + 319)
-#define TARGET_NR_fallocate            (TARGET_NR_Linux + 320)
-#define TARGET_NR_timerfd_create       (TARGET_NR_Linux + 321)
-#define TARGET_NR_timerfd_gettime      (TARGET_NR_Linux + 322)
-#define TARGET_NR_timerfd_settime      (TARGET_NR_Linux + 323)
-#define TARGET_NR_signalfd4            (TARGET_NR_Linux + 324)
-#define TARGET_NR_eventfd2             (TARGET_NR_Linux + 325)
-#define TARGET_NR_epoll_create1        (TARGET_NR_Linux + 326)
-#define TARGET_NR_dup3                 (TARGET_NR_Linux + 327)
-#define TARGET_NR_pipe2                (TARGET_NR_Linux + 328)
-#define TARGET_NR_inotify_init1        (TARGET_NR_Linux + 329)
-#define TARGET_NR_preadv                (TARGET_NR_Linux + 330)
-#define TARGET_NR_pwritev               (TARGET_NR_Linux + 331)
-#define TARGET_NR_rt_tgsigqueueinfo     (TARGET_NR_Linux + 332)
-#define TARGET_NR_perf_event_open       (TARGET_NR_Linux + 333)
-#define TARGET_NR_accept4               (TARGET_NR_Linux + 334)
-#define TARGET_NR_recvmmsg              (TARGET_NR_Linux + 335)
-#define TARGET_NR_fanotify_init         (TARGET_NR_Linux + 336)
-#define TARGET_NR_fanotify_mark         (TARGET_NR_Linux + 337)
-#define TARGET_NR_prlimit64             (TARGET_NR_Linux + 338)
-#define TARGET_NR_name_to_handle_at     (TARGET_NR_Linux + 339)
-#define TARGET_NR_open_by_handle_at     (TARGET_NR_Linux + 340)
-#define TARGET_NR_clock_adjtime         (TARGET_NR_Linux + 341)
-#define TARGET_NR_syncfs                (TARGET_NR_Linux + 342)
-#define TARGET_NR_sendmmsg              (TARGET_NR_Linux + 343)
-#define TARGET_NR_setns                 (TARGET_NR_Linux + 344)
-#define TARGET_NR_process_vm_readv      (TARGET_NR_Linux + 345)
-#define TARGET_NR_process_vm_writev     (TARGET_NR_Linux + 346)
-#define TARGET_NR_kcmp                  (TARGET_NR_Linux + 347)
-#define TARGET_NR_finit_module          (TARGET_NR_Linux + 348)
-
-#define TARGET_NR_sched_setattr         (TARGET_NR_Linux + 349)
-#define TARGET_NR_sched_getattr         (TARGET_NR_Linux + 350)
-#define TARGET_NR_renameat2             (TARGET_NR_Linux + 351)
-#define TARGET_NR_seccomp               (TARGET_NR_Linux + 352)
-#define TARGET_NR_getrandom             (TARGET_NR_Linux + 353)
-#define TARGET_NR_memfd_create          (TARGET_NR_Linux + 354)
-#define TARGET_NR_bpf                   (TARGET_NR_Linux + 355)
-#define TARGET_NR_execveat              (TARGET_NR_Linux + 356)
-#define TARGET_NR_userfaultfd           (TARGET_NR_Linux + 357)
-#define TARGET_NR_membarrier            (TARGET_NR_Linux + 358)
-#define TARGET_NR_mlock2                (TARGET_NR_Linux + 359)
-#define TARGET_NR_copy_file_range       (TARGET_NR_Linux + 360)
-#define TARGET_NR_preadv2               (TARGET_NR_Linux + 361)
-#define TARGET_NR_pwritev2              (TARGET_NR_Linux + 362)
-#define TARGET_NR_pkey_mprotect         (TARGET_NR_Linux + 363)
-#define TARGET_NR_pkey_alloc            (TARGET_NR_Linux + 364)
-#define TARGET_NR_pkey_free             (TARGET_NR_Linux + 365)
-#define TARGET_NR_statx                 (TARGET_NR_Linux + 366)
-#define TARGET_NR_rseq                  (TARGET_NR_Linux + 367)
-#define TARGET_NR_io_pgetevents         (TARGET_NR_Linux + 368)
-/* room for arch specific calls */
-#define TARGET_NR_semget                (TARGET_NR_Linux + 393)
-#define TARGET_NR_semctl                (TARGET_NR_Linux + 394)
-#define TARGET_NR_shmget                (TARGET_NR_Linux + 395)
-#define TARGET_NR_shmctl                (TARGET_NR_Linux + 396)
-#define TARGET_NR_shmat                 (TARGET_NR_Linux + 397)
-#define TARGET_NR_shmdt                 (TARGET_NR_Linux + 398)
-#define TARGET_NR_msgget                (TARGET_NR_Linux + 399)
-#define TARGET_NR_msgsnd                (TARGET_NR_Linux + 400)
-#define TARGET_NR_msgrcv                (TARGET_NR_Linux + 401)
-#define TARGET_NR_msgctl                (TARGET_NR_Linux + 402)
-/* 403-423 common for 32-bit archs */
-#define TARGET_NR_clock_gettime64              (TARGET_NR_Linux + 403)
-#define TARGET_NR_clock_settime64              (TARGET_NR_Linux + 404)
-#define TARGET_NR_clock_adjtime64              (TARGET_NR_Linux + 405)
-#define TARGET_NR_clock_getres_time64          (TARGET_NR_Linux + 406)
-#define TARGET_NR_clock_nanosleep_time64       (TARGET_NR_Linux + 407)
-#define TARGET_NR_timer_gettime64              (TARGET_NR_Linux + 408)
-#define TARGET_NR_timer_settime64              (TARGET_NR_Linux + 409)
-#define TARGET_NR_timerfd_gettime64            (TARGET_NR_Linux + 410)
-#define TARGET_NR_timerfd_settime64            (TARGET_NR_Linux + 411)
-#define TARGET_NR_utimensat_time64             (TARGET_NR_Linux + 412)
-#define TARGET_NR_pselect6_time64              (TARGET_NR_Linux + 413)
-#define TARGET_NR_ppoll_time64                 (TARGET_NR_Linux + 414)
-#define TARGET_NR_io_pgetevents_time64         (TARGET_NR_Linux + 416)
-#define TARGET_NR_recvmmsg_time64              (TARGET_NR_Linux + 417)
-#define TARGET_NR_mq_timedsend_time64          (TARGET_NR_Linux + 418)
-#define TARGET_NR_mq_timedreceive_time64       (TARGET_NR_Linux + 419)
-#define TARGET_NR_semtimedop_time64            (TARGET_NR_Linux + 420)
-#define TARGET_NR_rt_sigtimedwait_time64       (TARGET_NR_Linux + 421)
-#define TARGET_NR_futex_time64                 (TARGET_NR_Linux + 422)
-#define TARGET_NR_sched_rr_get_interval_time64 (TARGET_NR_Linux + 423)
-/* 424 onwards common for all archs */
-#define TARGET_NR_pidfd_send_signal            (TARGET_NR_Linux + 424)
-#define TARGET_NR_io_uring_setup               (TARGET_NR_Linux + 425)
-#define TARGET_NR_io_uring_enter               (TARGET_NR_Linux + 426)
-#define TARGET_NR_io_uring_register            (TARGET_NR_Linux + 427)
-#define TARGET_NR_open_tree                    (TARGET_NR_Linux + 428)
-#define TARGET_NR_move_mount                   (TARGET_NR_Linux + 429)
-#define TARGET_NR_fsopen                       (TARGET_NR_Linux + 430)
-#define TARGET_NR_fsconfig                     (TARGET_NR_Linux + 431)
-#define TARGET_NR_fsmount                      (TARGET_NR_Linux + 432)
-#define TARGET_NR_fspick                       (TARGET_NR_Linux + 433)
-#define TARGET_NR_pidfd_open                   (TARGET_NR_Linux + 434)
-#define TARGET_NR_clone3                       (TARGET_NR_Linux + 435)
-
-#endif
diff --git a/linux-user/mips/syscall_o32.tbl b/linux-user/mips/syscall_o32.tbl
new file mode 100644 (file)
index 0000000..ac58677
--- /dev/null
@@ -0,0 +1,427 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for mips
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> is always "o32" for this file.
+#
+0      o32     syscall                         sys_syscall                     sys32_syscall
+1      o32     exit                            sys_exit
+2      o32     fork                            __sys_fork
+3      o32     read                            sys_read
+4      o32     write                           sys_write
+5      o32     open                            sys_open                        compat_sys_open
+6      o32     close                           sys_close
+7      o32     waitpid                         sys_waitpid
+8      o32     creat                           sys_creat
+9      o32     link                            sys_link
+10     o32     unlink                          sys_unlink
+11     o32     execve                          sys_execve                      compat_sys_execve
+12     o32     chdir                           sys_chdir
+13     o32     time                            sys_time32
+14     o32     mknod                           sys_mknod
+15     o32     chmod                           sys_chmod
+16     o32     lchown                          sys_lchown
+17     o32     break                           sys_ni_syscall
+# 18 was sys_stat
+18     o32     unused18                        sys_ni_syscall
+19     o32     lseek                           sys_lseek
+20     o32     getpid                          sys_getpid
+21     o32     mount                           sys_mount                       compat_sys_mount
+22     o32     umount                          sys_oldumount
+23     o32     setuid                          sys_setuid
+24     o32     getuid                          sys_getuid
+25     o32     stime                           sys_stime32
+26     o32     ptrace                          sys_ptrace                      compat_sys_ptrace
+27     o32     alarm                           sys_alarm
+# 28 was sys_fstat
+28     o32     unused28                        sys_ni_syscall
+29     o32     pause                           sys_pause
+30     o32     utime                           sys_utime32
+31     o32     stty                            sys_ni_syscall
+32     o32     gtty                            sys_ni_syscall
+33     o32     access                          sys_access
+34     o32     nice                            sys_nice
+35     o32     ftime                           sys_ni_syscall
+36     o32     sync                            sys_sync
+37     o32     kill                            sys_kill
+38     o32     rename                          sys_rename
+39     o32     mkdir                           sys_mkdir
+40     o32     rmdir                           sys_rmdir
+41     o32     dup                             sys_dup
+42     o32     pipe                            sysm_pipe
+43     o32     times                           sys_times                       compat_sys_times
+44     o32     prof                            sys_ni_syscall
+45     o32     brk                             sys_brk
+46     o32     setgid                          sys_setgid
+47     o32     getgid                          sys_getgid
+48     o32     signal                          sys_ni_syscall
+49     o32     geteuid                         sys_geteuid
+50     o32     getegid                         sys_getegid
+51     o32     acct                            sys_acct
+52     o32     umount2                         sys_umount
+53     o32     lock                            sys_ni_syscall
+54     o32     ioctl                           sys_ioctl                       compat_sys_ioctl
+55     o32     fcntl                           sys_fcntl                       compat_sys_fcntl
+56     o32     mpx                             sys_ni_syscall
+57     o32     setpgid                         sys_setpgid
+58     o32     ulimit                          sys_ni_syscall
+59     o32     unused59                        sys_olduname
+60     o32     umask                           sys_umask
+61     o32     chroot                          sys_chroot
+62     o32     ustat                           sys_ustat                       compat_sys_ustat
+63     o32     dup2                            sys_dup2
+64     o32     getppid                         sys_getppid
+65     o32     getpgrp                         sys_getpgrp
+66     o32     setsid                          sys_setsid
+67     o32     sigaction                       sys_sigaction                   sys_32_sigaction
+68     o32     sgetmask                        sys_sgetmask
+69     o32     ssetmask                        sys_ssetmask
+70     o32     setreuid                        sys_setreuid
+71     o32     setregid                        sys_setregid
+72     o32     sigsuspend                      sys_sigsuspend                  sys32_sigsuspend
+73     o32     sigpending                      sys_sigpending                  compat_sys_sigpending
+74     o32     sethostname                     sys_sethostname
+75     o32     setrlimit                       sys_setrlimit                   compat_sys_setrlimit
+76     o32     getrlimit                       sys_getrlimit                   compat_sys_getrlimit
+77     o32     getrusage                       sys_getrusage                   compat_sys_getrusage
+78     o32     gettimeofday                    sys_gettimeofday                compat_sys_gettimeofday
+79     o32     settimeofday                    sys_settimeofday                compat_sys_settimeofday
+80     o32     getgroups                       sys_getgroups
+81     o32     setgroups                       sys_setgroups
+# 82 was old_select
+82     o32     reserved82                      sys_ni_syscall
+83     o32     symlink                         sys_symlink
+# 84 was sys_lstat
+84     o32     unused84                        sys_ni_syscall
+85     o32     readlink                        sys_readlink
+86     o32     uselib                          sys_uselib
+87     o32     swapon                          sys_swapon
+88     o32     reboot                          sys_reboot
+89     o32     readdir                         sys_old_readdir                 compat_sys_old_readdir
+90     o32     mmap                            sys_mips_mmap
+91     o32     munmap                          sys_munmap
+92     o32     truncate                        sys_truncate                    compat_sys_truncate
+93     o32     ftruncate                       sys_ftruncate                   compat_sys_ftruncate
+94     o32     fchmod                          sys_fchmod
+95     o32     fchown                          sys_fchown
+96     o32     getpriority                     sys_getpriority
+97     o32     setpriority                     sys_setpriority
+98     o32     profil                          sys_ni_syscall
+99     o32     statfs                          sys_statfs                      compat_sys_statfs
+100    o32     fstatfs                         sys_fstatfs                     compat_sys_fstatfs
+101    o32     ioperm                          sys_ni_syscall
+102    o32     socketcall                      sys_socketcall                  compat_sys_socketcall
+103    o32     syslog                          sys_syslog
+104    o32     setitimer                       sys_setitimer                   compat_sys_setitimer
+105    o32     getitimer                       sys_getitimer                   compat_sys_getitimer
+106    o32     stat                            sys_newstat                     compat_sys_newstat
+107    o32     lstat                           sys_newlstat                    compat_sys_newlstat
+108    o32     fstat                           sys_newfstat                    compat_sys_newfstat
+109    o32     unused109                       sys_uname
+110    o32     iopl                            sys_ni_syscall
+111    o32     vhangup                         sys_vhangup
+112    o32     idle                            sys_ni_syscall
+113    o32     vm86                            sys_ni_syscall
+114    o32     wait4                           sys_wait4                       compat_sys_wait4
+115    o32     swapoff                         sys_swapoff
+116    o32     sysinfo                         sys_sysinfo                     compat_sys_sysinfo
+117    o32     ipc                             sys_ipc                         compat_sys_ipc
+118    o32     fsync                           sys_fsync
+119    o32     sigreturn                       sys_sigreturn                   sys32_sigreturn
+120    o32     clone                           __sys_clone
+121    o32     setdomainname                   sys_setdomainname
+122    o32     uname                           sys_newuname
+123    o32     modify_ldt                      sys_ni_syscall
+124    o32     adjtimex                        sys_adjtimex_time32
+125    o32     mprotect                        sys_mprotect
+126    o32     sigprocmask                     sys_sigprocmask                 compat_sys_sigprocmask
+127    o32     create_module                   sys_ni_syscall
+128    o32     init_module                     sys_init_module
+129    o32     delete_module                   sys_delete_module
+130    o32     get_kernel_syms                 sys_ni_syscall
+131    o32     quotactl                        sys_quotactl
+132    o32     getpgid                         sys_getpgid
+133    o32     fchdir                          sys_fchdir
+134    o32     bdflush                         sys_bdflush
+135    o32     sysfs                           sys_sysfs
+136    o32     personality                     sys_personality                 sys_32_personality
+137    o32     afs_syscall                     sys_ni_syscall
+138    o32     setfsuid                        sys_setfsuid
+139    o32     setfsgid                        sys_setfsgid
+140    o32     _llseek                         sys_llseek                      sys_32_llseek
+141    o32     getdents                        sys_getdents                    compat_sys_getdents
+142    o32     _newselect                      sys_select                      compat_sys_select
+143    o32     flock                           sys_flock
+144    o32     msync                           sys_msync
+145    o32     readv                           sys_readv                       compat_sys_readv
+146    o32     writev                          sys_writev                      compat_sys_writev
+147    o32     cacheflush                      sys_cacheflush
+148    o32     cachectl                        sys_cachectl
+149    o32     sysmips                         __sys_sysmips
+150    o32     unused150                       sys_ni_syscall
+151    o32     getsid                          sys_getsid
+152    o32     fdatasync                       sys_fdatasync
+153    o32     _sysctl                         sys_sysctl                      compat_sys_sysctl
+154    o32     mlock                           sys_mlock
+155    o32     munlock                         sys_munlock
+156    o32     mlockall                        sys_mlockall
+157    o32     munlockall                      sys_munlockall
+158    o32     sched_setparam                  sys_sched_setparam
+159    o32     sched_getparam                  sys_sched_getparam
+160    o32     sched_setscheduler              sys_sched_setscheduler
+161    o32     sched_getscheduler              sys_sched_getscheduler
+162    o32     sched_yield                     sys_sched_yield
+163    o32     sched_get_priority_max          sys_sched_get_priority_max
+164    o32     sched_get_priority_min          sys_sched_get_priority_min
+165    o32     sched_rr_get_interval           sys_sched_rr_get_interval_time32
+166    o32     nanosleep                       sys_nanosleep_time32
+167    o32     mremap                          sys_mremap
+168    o32     accept                          sys_accept
+169    o32     bind                            sys_bind
+170    o32     connect                         sys_connect
+171    o32     getpeername                     sys_getpeername
+172    o32     getsockname                     sys_getsockname
+173    o32     getsockopt                      sys_getsockopt                  compat_sys_getsockopt
+174    o32     listen                          sys_listen
+175    o32     recv                            sys_recv                        compat_sys_recv
+176    o32     recvfrom                        sys_recvfrom                    compat_sys_recvfrom
+177    o32     recvmsg                         sys_recvmsg                     compat_sys_recvmsg
+178    o32     send                            sys_send
+179    o32     sendmsg                         sys_sendmsg                     compat_sys_sendmsg
+180    o32     sendto                          sys_sendto
+181    o32     setsockopt                      sys_setsockopt                  compat_sys_setsockopt
+182    o32     shutdown                        sys_shutdown
+183    o32     socket                          sys_socket
+184    o32     socketpair                      sys_socketpair
+185    o32     setresuid                       sys_setresuid
+186    o32     getresuid                       sys_getresuid
+187    o32     query_module                    sys_ni_syscall
+188    o32     poll                            sys_poll
+189    o32     nfsservctl                      sys_ni_syscall
+190    o32     setresgid                       sys_setresgid
+191    o32     getresgid                       sys_getresgid
+192    o32     prctl                           sys_prctl
+193    o32     rt_sigreturn                    sys_rt_sigreturn                sys32_rt_sigreturn
+194    o32     rt_sigaction                    sys_rt_sigaction                compat_sys_rt_sigaction
+195    o32     rt_sigprocmask                  sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+196    o32     rt_sigpending                   sys_rt_sigpending               compat_sys_rt_sigpending
+197    o32     rt_sigtimedwait                 sys_rt_sigtimedwait_time32      compat_sys_rt_sigtimedwait_time32
+198    o32     rt_sigqueueinfo                 sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+199    o32     rt_sigsuspend                   sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+200    o32     pread64                         sys_pread64                     sys_32_pread
+201    o32     pwrite64                        sys_pwrite64                    sys_32_pwrite
+202    o32     chown                           sys_chown
+203    o32     getcwd                          sys_getcwd
+204    o32     capget                          sys_capget
+205    o32     capset                          sys_capset
+206    o32     sigaltstack                     sys_sigaltstack                 compat_sys_sigaltstack
+207    o32     sendfile                        sys_sendfile                    compat_sys_sendfile
+208    o32     getpmsg                         sys_ni_syscall
+209    o32     putpmsg                         sys_ni_syscall
+210    o32     mmap2                           sys_mips_mmap2
+211    o32     truncate64                      sys_truncate64                  sys_32_truncate64
+212    o32     ftruncate64                     sys_ftruncate64                 sys_32_ftruncate64
+213    o32     stat64                          sys_stat64                      sys_newstat
+214    o32     lstat64                         sys_lstat64                     sys_newlstat
+215    o32     fstat64                         sys_fstat64                     sys_newfstat
+216    o32     pivot_root                      sys_pivot_root
+217    o32     mincore                         sys_mincore
+218    o32     madvise                         sys_madvise
+219    o32     getdents64                      sys_getdents64
+220    o32     fcntl64                         sys_fcntl64                     compat_sys_fcntl64
+221    o32     reserved221                     sys_ni_syscall
+222    o32     gettid                          sys_gettid
+223    o32     readahead                       sys_readahead                   sys32_readahead
+224    o32     setxattr                        sys_setxattr
+225    o32     lsetxattr                       sys_lsetxattr
+226    o32     fsetxattr                       sys_fsetxattr
+227    o32     getxattr                        sys_getxattr
+228    o32     lgetxattr                       sys_lgetxattr
+229    o32     fgetxattr                       sys_fgetxattr
+230    o32     listxattr                       sys_listxattr
+231    o32     llistxattr                      sys_llistxattr
+232    o32     flistxattr                      sys_flistxattr
+233    o32     removexattr                     sys_removexattr
+234    o32     lremovexattr                    sys_lremovexattr
+235    o32     fremovexattr                    sys_fremovexattr
+236    o32     tkill                           sys_tkill
+237    o32     sendfile64                      sys_sendfile64
+238    o32     futex                           sys_futex_time32
+239    o32     sched_setaffinity               sys_sched_setaffinity           compat_sys_sched_setaffinity
+240    o32     sched_getaffinity               sys_sched_getaffinity           compat_sys_sched_getaffinity
+241    o32     io_setup                        sys_io_setup                    compat_sys_io_setup
+242    o32     io_destroy                      sys_io_destroy
+243    o32     io_getevents                    sys_io_getevents_time32
+244    o32     io_submit                       sys_io_submit                   compat_sys_io_submit
+245    o32     io_cancel                       sys_io_cancel
+246    o32     exit_group                      sys_exit_group
+247    o32     lookup_dcookie                  sys_lookup_dcookie              compat_sys_lookup_dcookie
+248    o32     epoll_create                    sys_epoll_create
+249    o32     epoll_ctl                       sys_epoll_ctl
+250    o32     epoll_wait                      sys_epoll_wait
+251    o32     remap_file_pages                sys_remap_file_pages
+252    o32     set_tid_address                 sys_set_tid_address
+253    o32     restart_syscall                 sys_restart_syscall
+254    o32     fadvise64                       sys_fadvise64_64                sys32_fadvise64_64
+255    o32     statfs64                        sys_statfs64                    compat_sys_statfs64
+256    o32     fstatfs64                       sys_fstatfs64                   compat_sys_fstatfs64
+257    o32     timer_create                    sys_timer_create                compat_sys_timer_create
+258    o32     timer_settime                   sys_timer_settime32
+259    o32     timer_gettime                   sys_timer_gettime32
+260    o32     timer_getoverrun                sys_timer_getoverrun
+261    o32     timer_delete                    sys_timer_delete
+262    o32     clock_settime                   sys_clock_settime32
+263    o32     clock_gettime                   sys_clock_gettime32
+264    o32     clock_getres                    sys_clock_getres_time32
+265    o32     clock_nanosleep                 sys_clock_nanosleep_time32
+266    o32     tgkill                          sys_tgkill
+267    o32     utimes                          sys_utimes_time32
+268    o32     mbind                           sys_mbind                       compat_sys_mbind
+269    o32     get_mempolicy                   sys_get_mempolicy               compat_sys_get_mempolicy
+270    o32     set_mempolicy                   sys_set_mempolicy               compat_sys_set_mempolicy
+271    o32     mq_open                         sys_mq_open                     compat_sys_mq_open
+272    o32     mq_unlink                       sys_mq_unlink
+273    o32     mq_timedsend                    sys_mq_timedsend_time32
+274    o32     mq_timedreceive                 sys_mq_timedreceive_time32
+275    o32     mq_notify                       sys_mq_notify                   compat_sys_mq_notify
+276    o32     mq_getsetattr                   sys_mq_getsetattr               compat_sys_mq_getsetattr
+277    o32     vserver                         sys_ni_syscall
+278    o32     waitid                          sys_waitid                      compat_sys_waitid
+# 279 was sys_setaltroot
+280    o32     add_key                         sys_add_key
+281    o32     request_key                     sys_request_key
+282    o32     keyctl                          sys_keyctl                      compat_sys_keyctl
+283    o32     set_thread_area                 sys_set_thread_area
+284    o32     inotify_init                    sys_inotify_init
+285    o32     inotify_add_watch               sys_inotify_add_watch
+286    o32     inotify_rm_watch                sys_inotify_rm_watch
+287    o32     migrate_pages                   sys_migrate_pages               compat_sys_migrate_pages
+288    o32     openat                          sys_openat                      compat_sys_openat
+289    o32     mkdirat                         sys_mkdirat
+290    o32     mknodat                         sys_mknodat
+291    o32     fchownat                        sys_fchownat
+292    o32     futimesat                       sys_futimesat_time32
+293    o32     fstatat64                       sys_fstatat64                   sys_newfstatat
+294    o32     unlinkat                        sys_unlinkat
+295    o32     renameat                        sys_renameat
+296    o32     linkat                          sys_linkat
+297    o32     symlinkat                       sys_symlinkat
+298    o32     readlinkat                      sys_readlinkat
+299    o32     fchmodat                        sys_fchmodat
+300    o32     faccessat                       sys_faccessat
+301    o32     pselect6                        sys_pselect6_time32             compat_sys_pselect6_time32
+302    o32     ppoll                           sys_ppoll_time32                compat_sys_ppoll_time32
+303    o32     unshare                         sys_unshare
+304    o32     splice                          sys_splice
+305    o32     sync_file_range                 sys_sync_file_range             sys32_sync_file_range
+306    o32     tee                             sys_tee
+307    o32     vmsplice                        sys_vmsplice                    compat_sys_vmsplice
+308    o32     move_pages                      sys_move_pages                  compat_sys_move_pages
+309    o32     set_robust_list                 sys_set_robust_list             compat_sys_set_robust_list
+310    o32     get_robust_list                 sys_get_robust_list             compat_sys_get_robust_list
+311    o32     kexec_load                      sys_kexec_load                  compat_sys_kexec_load
+312    o32     getcpu                          sys_getcpu
+313    o32     epoll_pwait                     sys_epoll_pwait                 compat_sys_epoll_pwait
+314    o32     ioprio_set                      sys_ioprio_set
+315    o32     ioprio_get                      sys_ioprio_get
+316    o32     utimensat                       sys_utimensat_time32
+317    o32     signalfd                        sys_signalfd                    compat_sys_signalfd
+318    o32     timerfd                         sys_ni_syscall
+319    o32     eventfd                         sys_eventfd
+320    o32     fallocate                       sys_fallocate                   sys32_fallocate
+321    o32     timerfd_create                  sys_timerfd_create
+322    o32     timerfd_gettime                 sys_timerfd_gettime32
+323    o32     timerfd_settime                 sys_timerfd_settime32
+324    o32     signalfd4                       sys_signalfd4                   compat_sys_signalfd4
+325    o32     eventfd2                        sys_eventfd2
+326    o32     epoll_create1                   sys_epoll_create1
+327    o32     dup3                            sys_dup3
+328    o32     pipe2                           sys_pipe2
+329    o32     inotify_init1                   sys_inotify_init1
+330    o32     preadv                          sys_preadv                      compat_sys_preadv
+331    o32     pwritev                         sys_pwritev                     compat_sys_pwritev
+332    o32     rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+333    o32     perf_event_open                 sys_perf_event_open
+334    o32     accept4                         sys_accept4
+335    o32     recvmmsg                        sys_recvmmsg_time32             compat_sys_recvmmsg_time32
+336    o32     fanotify_init                   sys_fanotify_init
+337    o32     fanotify_mark                   sys_fanotify_mark               compat_sys_fanotify_mark
+338    o32     prlimit64                       sys_prlimit64
+339    o32     name_to_handle_at               sys_name_to_handle_at
+340    o32     open_by_handle_at               sys_open_by_handle_at           compat_sys_open_by_handle_at
+341    o32     clock_adjtime                   sys_clock_adjtime32
+342    o32     syncfs                          sys_syncfs
+343    o32     sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
+344    o32     setns                           sys_setns
+345    o32     process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
+346    o32     process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+347    o32     kcmp                            sys_kcmp
+348    o32     finit_module                    sys_finit_module
+349    o32     sched_setattr                   sys_sched_setattr
+350    o32     sched_getattr                   sys_sched_getattr
+351    o32     renameat2                       sys_renameat2
+352    o32     seccomp                         sys_seccomp
+353    o32     getrandom                       sys_getrandom
+354    o32     memfd_create                    sys_memfd_create
+355    o32     bpf                             sys_bpf
+356    o32     execveat                        sys_execveat                    compat_sys_execveat
+357    o32     userfaultfd                     sys_userfaultfd
+358    o32     membarrier                      sys_membarrier
+359    o32     mlock2                          sys_mlock2
+360    o32     copy_file_range                 sys_copy_file_range
+361    o32     preadv2                         sys_preadv2                     compat_sys_preadv2
+362    o32     pwritev2                        sys_pwritev2                    compat_sys_pwritev2
+363    o32     pkey_mprotect                   sys_pkey_mprotect
+364    o32     pkey_alloc                      sys_pkey_alloc
+365    o32     pkey_free                       sys_pkey_free
+366    o32     statx                           sys_statx
+367    o32     rseq                            sys_rseq
+368    o32     io_pgetevents                   sys_io_pgetevents_time32        compat_sys_io_pgetevents
+# room for arch specific calls
+393    o32     semget                          sys_semget
+394    o32     semctl                          sys_semctl                      compat_sys_semctl
+395    o32     shmget                          sys_shmget
+396    o32     shmctl                          sys_shmctl                      compat_sys_shmctl
+397    o32     shmat                           sys_shmat                       compat_sys_shmat
+398    o32     shmdt                           sys_shmdt
+399    o32     msgget                          sys_msgget
+400    o32     msgsnd                          sys_msgsnd                      compat_sys_msgsnd
+401    o32     msgrcv                          sys_msgrcv                      compat_sys_msgrcv
+402    o32     msgctl                          sys_msgctl                      compat_sys_msgctl
+403    o32     clock_gettime64                 sys_clock_gettime               sys_clock_gettime
+404    o32     clock_settime64                 sys_clock_settime               sys_clock_settime
+405    o32     clock_adjtime64                 sys_clock_adjtime               sys_clock_adjtime
+406    o32     clock_getres_time64             sys_clock_getres                sys_clock_getres
+407    o32     clock_nanosleep_time64          sys_clock_nanosleep             sys_clock_nanosleep
+408    o32     timer_gettime64                 sys_timer_gettime               sys_timer_gettime
+409    o32     timer_settime64                 sys_timer_settime               sys_timer_settime
+410    o32     timerfd_gettime64               sys_timerfd_gettime             sys_timerfd_gettime
+411    o32     timerfd_settime64               sys_timerfd_settime             sys_timerfd_settime
+412    o32     utimensat_time64                sys_utimensat                   sys_utimensat
+413    o32     pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
+414    o32     ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
+416    o32     io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+417    o32     recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
+418    o32     mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
+419    o32     mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
+420    o32     semtimedop_time64               sys_semtimedop                  sys_semtimedop
+421    o32     rt_sigtimedwait_time64          sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait_time64
+422    o32     futex_time64                    sys_futex                       sys_futex
+423    o32     sched_rr_get_interval_time64    sys_sched_rr_get_interval       sys_sched_rr_get_interval
+424    o32     pidfd_send_signal               sys_pidfd_send_signal
+425    o32     io_uring_setup                  sys_io_uring_setup
+426    o32     io_uring_enter                  sys_io_uring_enter
+427    o32     io_uring_register               sys_io_uring_register
+428    o32     open_tree                       sys_open_tree
+429    o32     move_mount                      sys_move_mount
+430    o32     fsopen                          sys_fsopen
+431    o32     fsconfig                        sys_fsconfig
+432    o32     fsmount                         sys_fsmount
+433    o32     fspick                          sys_fspick
+434    o32     pidfd_open                      sys_pidfd_open
+435    o32     clone3                          __sys_clone3
+437    o32     openat2                         sys_openat2
+438    o32     pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/mips/syscallhdr.sh b/linux-user/mips/syscallhdr.sh
new file mode 100644 (file)
index 0000000..761e3e4
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_MIPS_`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 compat ; do
+        if [ "$name" = "fadvise64" ] ; then
+            name="fadvise64_64"
+        fi
+        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 */" "${fileguard}"
+    printf "\n"
+) > "$out"
diff --git a/linux-user/mips64/Makefile.objs b/linux-user/mips64/Makefile.objs
new file mode 100644 (file)
index 0000000..573448f
--- /dev/null
@@ -0,0 +1,12 @@
+generated-files-y += linux-user/$(TARGET_ABI_DIR)/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)/syscallhdr.sh
+
+ifeq ($(TARGET_SYSTBL_ABI),n32)
+%/syscall_nr.h: $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)/syscall_n32.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ n32 "" 6000,"GEN","$@")
+endif
+ifeq ($(TARGET_SYSTBL_ABI),n64)
+%/syscall_nr.h: $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)/syscall_n64.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ n64 "" 5000,"GEN","$@")
+endif
diff --git a/linux-user/mips64/syscall_n32.tbl b/linux-user/mips64/syscall_n32.tbl
new file mode 100644 (file)
index 0000000..1f9e8ad
--- /dev/null
@@ -0,0 +1,378 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for mips
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> is always "n32" for this file.
+#
+0      n32     read                            sys_read
+1      n32     write                           sys_write
+2      n32     open                            sys_open
+3      n32     close                           sys_close
+4      n32     stat                            sys_newstat
+5      n32     fstat                           sys_newfstat
+6      n32     lstat                           sys_newlstat
+7      n32     poll                            sys_poll
+8      n32     lseek                           sys_lseek
+9      n32     mmap                            sys_mips_mmap
+10     n32     mprotect                        sys_mprotect
+11     n32     munmap                          sys_munmap
+12     n32     brk                             sys_brk
+13     n32     rt_sigaction                    compat_sys_rt_sigaction
+14     n32     rt_sigprocmask                  compat_sys_rt_sigprocmask
+15     n32     ioctl                           compat_sys_ioctl
+16     n32     pread64                         sys_pread64
+17     n32     pwrite64                        sys_pwrite64
+18     n32     readv                           compat_sys_readv
+19     n32     writev                          compat_sys_writev
+20     n32     access                          sys_access
+21     n32     pipe                            sysm_pipe
+22     n32     _newselect                      compat_sys_select
+23     n32     sched_yield                     sys_sched_yield
+24     n32     mremap                          sys_mremap
+25     n32     msync                           sys_msync
+26     n32     mincore                         sys_mincore
+27     n32     madvise                         sys_madvise
+28     n32     shmget                          sys_shmget
+29     n32     shmat                           sys_shmat
+30     n32     shmctl                          compat_sys_old_shmctl
+31     n32     dup                             sys_dup
+32     n32     dup2                            sys_dup2
+33     n32     pause                           sys_pause
+34     n32     nanosleep                       sys_nanosleep_time32
+35     n32     getitimer                       compat_sys_getitimer
+36     n32     setitimer                       compat_sys_setitimer
+37     n32     alarm                           sys_alarm
+38     n32     getpid                          sys_getpid
+39     n32     sendfile                        compat_sys_sendfile
+40     n32     socket                          sys_socket
+41     n32     connect                         sys_connect
+42     n32     accept                          sys_accept
+43     n32     sendto                          sys_sendto
+44     n32     recvfrom                        compat_sys_recvfrom
+45     n32     sendmsg                         compat_sys_sendmsg
+46     n32     recvmsg                         compat_sys_recvmsg
+47     n32     shutdown                        sys_shutdown
+48     n32     bind                            sys_bind
+49     n32     listen                          sys_listen
+50     n32     getsockname                     sys_getsockname
+51     n32     getpeername                     sys_getpeername
+52     n32     socketpair                      sys_socketpair
+53     n32     setsockopt                      compat_sys_setsockopt
+54     n32     getsockopt                      compat_sys_getsockopt
+55     n32     clone                           __sys_clone
+56     n32     fork                            __sys_fork
+57     n32     execve                          compat_sys_execve
+58     n32     exit                            sys_exit
+59     n32     wait4                           compat_sys_wait4
+60     n32     kill                            sys_kill
+61     n32     uname                           sys_newuname
+62     n32     semget                          sys_semget
+63     n32     semop                           sys_semop
+64     n32     semctl                          compat_sys_old_semctl
+65     n32     shmdt                           sys_shmdt
+66     n32     msgget                          sys_msgget
+67     n32     msgsnd                          compat_sys_msgsnd
+68     n32     msgrcv                          compat_sys_msgrcv
+69     n32     msgctl                          compat_sys_old_msgctl
+70     n32     fcntl                           compat_sys_fcntl
+71     n32     flock                           sys_flock
+72     n32     fsync                           sys_fsync
+73     n32     fdatasync                       sys_fdatasync
+74     n32     truncate                        sys_truncate
+75     n32     ftruncate                       sys_ftruncate
+76     n32     getdents                        compat_sys_getdents
+77     n32     getcwd                          sys_getcwd
+78     n32     chdir                           sys_chdir
+79     n32     fchdir                          sys_fchdir
+80     n32     rename                          sys_rename
+81     n32     mkdir                           sys_mkdir
+82     n32     rmdir                           sys_rmdir
+83     n32     creat                           sys_creat
+84     n32     link                            sys_link
+85     n32     unlink                          sys_unlink
+86     n32     symlink                         sys_symlink
+87     n32     readlink                        sys_readlink
+88     n32     chmod                           sys_chmod
+89     n32     fchmod                          sys_fchmod
+90     n32     chown                           sys_chown
+91     n32     fchown                          sys_fchown
+92     n32     lchown                          sys_lchown
+93     n32     umask                           sys_umask
+94     n32     gettimeofday                    compat_sys_gettimeofday
+95     n32     getrlimit                       compat_sys_getrlimit
+96     n32     getrusage                       compat_sys_getrusage
+97     n32     sysinfo                         compat_sys_sysinfo
+98     n32     times                           compat_sys_times
+99     n32     ptrace                          compat_sys_ptrace
+100    n32     getuid                          sys_getuid
+101    n32     syslog                          sys_syslog
+102    n32     getgid                          sys_getgid
+103    n32     setuid                          sys_setuid
+104    n32     setgid                          sys_setgid
+105    n32     geteuid                         sys_geteuid
+106    n32     getegid                         sys_getegid
+107    n32     setpgid                         sys_setpgid
+108    n32     getppid                         sys_getppid
+109    n32     getpgrp                         sys_getpgrp
+110    n32     setsid                          sys_setsid
+111    n32     setreuid                        sys_setreuid
+112    n32     setregid                        sys_setregid
+113    n32     getgroups                       sys_getgroups
+114    n32     setgroups                       sys_setgroups
+115    n32     setresuid                       sys_setresuid
+116    n32     getresuid                       sys_getresuid
+117    n32     setresgid                       sys_setresgid
+118    n32     getresgid                       sys_getresgid
+119    n32     getpgid                         sys_getpgid
+120    n32     setfsuid                        sys_setfsuid
+121    n32     setfsgid                        sys_setfsgid
+122    n32     getsid                          sys_getsid
+123    n32     capget                          sys_capget
+124    n32     capset                          sys_capset
+125    n32     rt_sigpending                   compat_sys_rt_sigpending
+126    n32     rt_sigtimedwait                 compat_sys_rt_sigtimedwait_time32
+127    n32     rt_sigqueueinfo                 compat_sys_rt_sigqueueinfo
+128    n32     rt_sigsuspend                   compat_sys_rt_sigsuspend
+129    n32     sigaltstack                     compat_sys_sigaltstack
+130    n32     utime                           sys_utime32
+131    n32     mknod                           sys_mknod
+132    n32     personality                     sys_32_personality
+133    n32     ustat                           compat_sys_ustat
+134    n32     statfs                          compat_sys_statfs
+135    n32     fstatfs                         compat_sys_fstatfs
+136    n32     sysfs                           sys_sysfs
+137    n32     getpriority                     sys_getpriority
+138    n32     setpriority                     sys_setpriority
+139    n32     sched_setparam                  sys_sched_setparam
+140    n32     sched_getparam                  sys_sched_getparam
+141    n32     sched_setscheduler              sys_sched_setscheduler
+142    n32     sched_getscheduler              sys_sched_getscheduler
+143    n32     sched_get_priority_max          sys_sched_get_priority_max
+144    n32     sched_get_priority_min          sys_sched_get_priority_min
+145    n32     sched_rr_get_interval           sys_sched_rr_get_interval_time32
+146    n32     mlock                           sys_mlock
+147    n32     munlock                         sys_munlock
+148    n32     mlockall                        sys_mlockall
+149    n32     munlockall                      sys_munlockall
+150    n32     vhangup                         sys_vhangup
+151    n32     pivot_root                      sys_pivot_root
+152    n32     _sysctl                         compat_sys_sysctl
+153    n32     prctl                           sys_prctl
+154    n32     adjtimex                        sys_adjtimex_time32
+155    n32     setrlimit                       compat_sys_setrlimit
+156    n32     chroot                          sys_chroot
+157    n32     sync                            sys_sync
+158    n32     acct                            sys_acct
+159    n32     settimeofday                    compat_sys_settimeofday
+160    n32     mount                           compat_sys_mount
+161    n32     umount2                         sys_umount
+162    n32     swapon                          sys_swapon
+163    n32     swapoff                         sys_swapoff
+164    n32     reboot                          sys_reboot
+165    n32     sethostname                     sys_sethostname
+166    n32     setdomainname                   sys_setdomainname
+167    n32     create_module                   sys_ni_syscall
+168    n32     init_module                     sys_init_module
+169    n32     delete_module                   sys_delete_module
+170    n32     get_kernel_syms                 sys_ni_syscall
+171    n32     query_module                    sys_ni_syscall
+172    n32     quotactl                        sys_quotactl
+173    n32     nfsservctl                      sys_ni_syscall
+174    n32     getpmsg                         sys_ni_syscall
+175    n32     putpmsg                         sys_ni_syscall
+176    n32     afs_syscall                     sys_ni_syscall
+# 177 reserved for security
+177    n32     reserved177                     sys_ni_syscall
+178    n32     gettid                          sys_gettid
+179    n32     readahead                       sys_readahead
+180    n32     setxattr                        sys_setxattr
+181    n32     lsetxattr                       sys_lsetxattr
+182    n32     fsetxattr                       sys_fsetxattr
+183    n32     getxattr                        sys_getxattr
+184    n32     lgetxattr                       sys_lgetxattr
+185    n32     fgetxattr                       sys_fgetxattr
+186    n32     listxattr                       sys_listxattr
+187    n32     llistxattr                      sys_llistxattr
+188    n32     flistxattr                      sys_flistxattr
+189    n32     removexattr                     sys_removexattr
+190    n32     lremovexattr                    sys_lremovexattr
+191    n32     fremovexattr                    sys_fremovexattr
+192    n32     tkill                           sys_tkill
+193    n32     reserved193                     sys_ni_syscall
+194    n32     futex                           sys_futex_time32
+195    n32     sched_setaffinity               compat_sys_sched_setaffinity
+196    n32     sched_getaffinity               compat_sys_sched_getaffinity
+197    n32     cacheflush                      sys_cacheflush
+198    n32     cachectl                        sys_cachectl
+199    n32     sysmips                         __sys_sysmips
+200    n32     io_setup                        compat_sys_io_setup
+201    n32     io_destroy                      sys_io_destroy
+202    n32     io_getevents                    sys_io_getevents_time32
+203    n32     io_submit                       compat_sys_io_submit
+204    n32     io_cancel                       sys_io_cancel
+205    n32     exit_group                      sys_exit_group
+206    n32     lookup_dcookie                  sys_lookup_dcookie
+207    n32     epoll_create                    sys_epoll_create
+208    n32     epoll_ctl                       sys_epoll_ctl
+209    n32     epoll_wait                      sys_epoll_wait
+210    n32     remap_file_pages                sys_remap_file_pages
+211    n32     rt_sigreturn                    sysn32_rt_sigreturn
+212    n32     fcntl64                         compat_sys_fcntl64
+213    n32     set_tid_address                 sys_set_tid_address
+214    n32     restart_syscall                 sys_restart_syscall
+215    n32     semtimedop                      sys_semtimedop_time32
+216    n32     fadvise64                       sys_fadvise64_64
+217    n32     statfs64                        compat_sys_statfs64
+218    n32     fstatfs64                       compat_sys_fstatfs64
+219    n32     sendfile64                      sys_sendfile64
+220    n32     timer_create                    compat_sys_timer_create
+221    n32     timer_settime                   sys_timer_settime32
+222    n32     timer_gettime                   sys_timer_gettime32
+223    n32     timer_getoverrun                sys_timer_getoverrun
+224    n32     timer_delete                    sys_timer_delete
+225    n32     clock_settime                   sys_clock_settime32
+226    n32     clock_gettime                   sys_clock_gettime32
+227    n32     clock_getres                    sys_clock_getres_time32
+228    n32     clock_nanosleep                 sys_clock_nanosleep_time32
+229    n32     tgkill                          sys_tgkill
+230    n32     utimes                          sys_utimes_time32
+231    n32     mbind                           compat_sys_mbind
+232    n32     get_mempolicy                   compat_sys_get_mempolicy
+233    n32     set_mempolicy                   compat_sys_set_mempolicy
+234    n32     mq_open                         compat_sys_mq_open
+235    n32     mq_unlink                       sys_mq_unlink
+236    n32     mq_timedsend                    sys_mq_timedsend_time32
+237    n32     mq_timedreceive                 sys_mq_timedreceive_time32
+238    n32     mq_notify                       compat_sys_mq_notify
+239    n32     mq_getsetattr                   compat_sys_mq_getsetattr
+240    n32     vserver                         sys_ni_syscall
+241    n32     waitid                          compat_sys_waitid
+# 242 was sys_setaltroot
+243    n32     add_key                         sys_add_key
+244    n32     request_key                     sys_request_key
+245    n32     keyctl                          compat_sys_keyctl
+246    n32     set_thread_area                 sys_set_thread_area
+247    n32     inotify_init                    sys_inotify_init
+248    n32     inotify_add_watch               sys_inotify_add_watch
+249    n32     inotify_rm_watch                sys_inotify_rm_watch
+250    n32     migrate_pages                   compat_sys_migrate_pages
+251    n32     openat                          sys_openat
+252    n32     mkdirat                         sys_mkdirat
+253    n32     mknodat                         sys_mknodat
+254    n32     fchownat                        sys_fchownat
+255    n32     futimesat                       sys_futimesat_time32
+256    n32     newfstatat                      sys_newfstatat
+257    n32     unlinkat                        sys_unlinkat
+258    n32     renameat                        sys_renameat
+259    n32     linkat                          sys_linkat
+260    n32     symlinkat                       sys_symlinkat
+261    n32     readlinkat                      sys_readlinkat
+262    n32     fchmodat                        sys_fchmodat
+263    n32     faccessat                       sys_faccessat
+264    n32     pselect6                        compat_sys_pselect6_time32
+265    n32     ppoll                           compat_sys_ppoll_time32
+266    n32     unshare                         sys_unshare
+267    n32     splice                          sys_splice
+268    n32     sync_file_range                 sys_sync_file_range
+269    n32     tee                             sys_tee
+270    n32     vmsplice                        compat_sys_vmsplice
+271    n32     move_pages                      compat_sys_move_pages
+272    n32     set_robust_list                 compat_sys_set_robust_list
+273    n32     get_robust_list                 compat_sys_get_robust_list
+274    n32     kexec_load                      compat_sys_kexec_load
+275    n32     getcpu                          sys_getcpu
+276    n32     epoll_pwait                     compat_sys_epoll_pwait
+277    n32     ioprio_set                      sys_ioprio_set
+278    n32     ioprio_get                      sys_ioprio_get
+279    n32     utimensat                       sys_utimensat_time32
+280    n32     signalfd                        compat_sys_signalfd
+281    n32     timerfd                         sys_ni_syscall
+282    n32     eventfd                         sys_eventfd
+283    n32     fallocate                       sys_fallocate
+284    n32     timerfd_create                  sys_timerfd_create
+285    n32     timerfd_gettime                 sys_timerfd_gettime32
+286    n32     timerfd_settime                 sys_timerfd_settime32
+287    n32     signalfd4                       compat_sys_signalfd4
+288    n32     eventfd2                        sys_eventfd2
+289    n32     epoll_create1                   sys_epoll_create1
+290    n32     dup3                            sys_dup3
+291    n32     pipe2                           sys_pipe2
+292    n32     inotify_init1                   sys_inotify_init1
+293    n32     preadv                          compat_sys_preadv
+294    n32     pwritev                         compat_sys_pwritev
+295    n32     rt_tgsigqueueinfo               compat_sys_rt_tgsigqueueinfo
+296    n32     perf_event_open                 sys_perf_event_open
+297    n32     accept4                         sys_accept4
+298    n32     recvmmsg                        compat_sys_recvmmsg_time32
+299    n32     getdents64                      sys_getdents64
+300    n32     fanotify_init                   sys_fanotify_init
+301    n32     fanotify_mark                   sys_fanotify_mark
+302    n32     prlimit64                       sys_prlimit64
+303    n32     name_to_handle_at               sys_name_to_handle_at
+304    n32     open_by_handle_at               sys_open_by_handle_at
+305    n32     clock_adjtime                   sys_clock_adjtime32
+306    n32     syncfs                          sys_syncfs
+307    n32     sendmmsg                        compat_sys_sendmmsg
+308    n32     setns                           sys_setns
+309    n32     process_vm_readv                compat_sys_process_vm_readv
+310    n32     process_vm_writev               compat_sys_process_vm_writev
+311    n32     kcmp                            sys_kcmp
+312    n32     finit_module                    sys_finit_module
+313    n32     sched_setattr                   sys_sched_setattr
+314    n32     sched_getattr                   sys_sched_getattr
+315    n32     renameat2                       sys_renameat2
+316    n32     seccomp                         sys_seccomp
+317    n32     getrandom                       sys_getrandom
+318    n32     memfd_create                    sys_memfd_create
+319    n32     bpf                             sys_bpf
+320    n32     execveat                        compat_sys_execveat
+321    n32     userfaultfd                     sys_userfaultfd
+322    n32     membarrier                      sys_membarrier
+323    n32     mlock2                          sys_mlock2
+324    n32     copy_file_range                 sys_copy_file_range
+325    n32     preadv2                         compat_sys_preadv2
+326    n32     pwritev2                        compat_sys_pwritev2
+327    n32     pkey_mprotect                   sys_pkey_mprotect
+328    n32     pkey_alloc                      sys_pkey_alloc
+329    n32     pkey_free                       sys_pkey_free
+330    n32     statx                           sys_statx
+331    n32     rseq                            sys_rseq
+332    n32     io_pgetevents                   compat_sys_io_pgetevents
+# 333 through 402 are unassigned to sync up with generic numbers
+403    n32     clock_gettime64                 sys_clock_gettime
+404    n32     clock_settime64                 sys_clock_settime
+405    n32     clock_adjtime64                 sys_clock_adjtime
+406    n32     clock_getres_time64             sys_clock_getres
+407    n32     clock_nanosleep_time64          sys_clock_nanosleep
+408    n32     timer_gettime64                 sys_timer_gettime
+409    n32     timer_settime64                 sys_timer_settime
+410    n32     timerfd_gettime64               sys_timerfd_gettime
+411    n32     timerfd_settime64               sys_timerfd_settime
+412    n32     utimensat_time64                sys_utimensat
+413    n32     pselect6_time64                 compat_sys_pselect6_time64
+414    n32     ppoll_time64                    compat_sys_ppoll_time64
+416    n32     io_pgetevents_time64            sys_io_pgetevents
+417    n32     recvmmsg_time64                 compat_sys_recvmmsg_time64
+418    n32     mq_timedsend_time64             sys_mq_timedsend
+419    n32     mq_timedreceive_time64          sys_mq_timedreceive
+420    n32     semtimedop_time64               sys_semtimedop
+421    n32     rt_sigtimedwait_time64          compat_sys_rt_sigtimedwait_time64
+422    n32     futex_time64                    sys_futex
+423    n32     sched_rr_get_interval_time64    sys_sched_rr_get_interval
+424    n32     pidfd_send_signal               sys_pidfd_send_signal
+425    n32     io_uring_setup                  sys_io_uring_setup
+426    n32     io_uring_enter                  sys_io_uring_enter
+427    n32     io_uring_register               sys_io_uring_register
+428    n32     open_tree                       sys_open_tree
+429    n32     move_mount                      sys_move_mount
+430    n32     fsopen                          sys_fsopen
+431    n32     fsconfig                        sys_fsconfig
+432    n32     fsmount                         sys_fsmount
+433    n32     fspick                          sys_fspick
+434    n32     pidfd_open                      sys_pidfd_open
+435    n32     clone3                          __sys_clone3
+437    n32     openat2                         sys_openat2
+438    n32     pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/mips64/syscall_n64.tbl b/linux-user/mips64/syscall_n64.tbl
new file mode 100644 (file)
index 0000000..c0b9d80
--- /dev/null
@@ -0,0 +1,354 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for mips
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "n64" for this file.
+#
+0      n64     read                            sys_read
+1      n64     write                           sys_write
+2      n64     open                            sys_open
+3      n64     close                           sys_close
+4      n64     stat                            sys_newstat
+5      n64     fstat                           sys_newfstat
+6      n64     lstat                           sys_newlstat
+7      n64     poll                            sys_poll
+8      n64     lseek                           sys_lseek
+9      n64     mmap                            sys_mips_mmap
+10     n64     mprotect                        sys_mprotect
+11     n64     munmap                          sys_munmap
+12     n64     brk                             sys_brk
+13     n64     rt_sigaction                    sys_rt_sigaction
+14     n64     rt_sigprocmask                  sys_rt_sigprocmask
+15     n64     ioctl                           sys_ioctl
+16     n64     pread64                         sys_pread64
+17     n64     pwrite64                        sys_pwrite64
+18     n64     readv                           sys_readv
+19     n64     writev                          sys_writev
+20     n64     access                          sys_access
+21     n64     pipe                            sysm_pipe
+22     n64     _newselect                      sys_select
+23     n64     sched_yield                     sys_sched_yield
+24     n64     mremap                          sys_mremap
+25     n64     msync                           sys_msync
+26     n64     mincore                         sys_mincore
+27     n64     madvise                         sys_madvise
+28     n64     shmget                          sys_shmget
+29     n64     shmat                           sys_shmat
+30     n64     shmctl                          sys_old_shmctl
+31     n64     dup                             sys_dup
+32     n64     dup2                            sys_dup2
+33     n64     pause                           sys_pause
+34     n64     nanosleep                       sys_nanosleep
+35     n64     getitimer                       sys_getitimer
+36     n64     setitimer                       sys_setitimer
+37     n64     alarm                           sys_alarm
+38     n64     getpid                          sys_getpid
+39     n64     sendfile                        sys_sendfile64
+40     n64     socket                          sys_socket
+41     n64     connect                         sys_connect
+42     n64     accept                          sys_accept
+43     n64     sendto                          sys_sendto
+44     n64     recvfrom                        sys_recvfrom
+45     n64     sendmsg                         sys_sendmsg
+46     n64     recvmsg                         sys_recvmsg
+47     n64     shutdown                        sys_shutdown
+48     n64     bind                            sys_bind
+49     n64     listen                          sys_listen
+50     n64     getsockname                     sys_getsockname
+51     n64     getpeername                     sys_getpeername
+52     n64     socketpair                      sys_socketpair
+53     n64     setsockopt                      sys_setsockopt
+54     n64     getsockopt                      sys_getsockopt
+55     n64     clone                           __sys_clone
+56     n64     fork                            __sys_fork
+57     n64     execve                          sys_execve
+58     n64     exit                            sys_exit
+59     n64     wait4                           sys_wait4
+60     n64     kill                            sys_kill
+61     n64     uname                           sys_newuname
+62     n64     semget                          sys_semget
+63     n64     semop                           sys_semop
+64     n64     semctl                          sys_old_semctl
+65     n64     shmdt                           sys_shmdt
+66     n64     msgget                          sys_msgget
+67     n64     msgsnd                          sys_msgsnd
+68     n64     msgrcv                          sys_msgrcv
+69     n64     msgctl                          sys_old_msgctl
+70     n64     fcntl                           sys_fcntl
+71     n64     flock                           sys_flock
+72     n64     fsync                           sys_fsync
+73     n64     fdatasync                       sys_fdatasync
+74     n64     truncate                        sys_truncate
+75     n64     ftruncate                       sys_ftruncate
+76     n64     getdents                        sys_getdents
+77     n64     getcwd                          sys_getcwd
+78     n64     chdir                           sys_chdir
+79     n64     fchdir                          sys_fchdir
+80     n64     rename                          sys_rename
+81     n64     mkdir                           sys_mkdir
+82     n64     rmdir                           sys_rmdir
+83     n64     creat                           sys_creat
+84     n64     link                            sys_link
+85     n64     unlink                          sys_unlink
+86     n64     symlink                         sys_symlink
+87     n64     readlink                        sys_readlink
+88     n64     chmod                           sys_chmod
+89     n64     fchmod                          sys_fchmod
+90     n64     chown                           sys_chown
+91     n64     fchown                          sys_fchown
+92     n64     lchown                          sys_lchown
+93     n64     umask                           sys_umask
+94     n64     gettimeofday                    sys_gettimeofday
+95     n64     getrlimit                       sys_getrlimit
+96     n64     getrusage                       sys_getrusage
+97     n64     sysinfo                         sys_sysinfo
+98     n64     times                           sys_times
+99     n64     ptrace                          sys_ptrace
+100    n64     getuid                          sys_getuid
+101    n64     syslog                          sys_syslog
+102    n64     getgid                          sys_getgid
+103    n64     setuid                          sys_setuid
+104    n64     setgid                          sys_setgid
+105    n64     geteuid                         sys_geteuid
+106    n64     getegid                         sys_getegid
+107    n64     setpgid                         sys_setpgid
+108    n64     getppid                         sys_getppid
+109    n64     getpgrp                         sys_getpgrp
+110    n64     setsid                          sys_setsid
+111    n64     setreuid                        sys_setreuid
+112    n64     setregid                        sys_setregid
+113    n64     getgroups                       sys_getgroups
+114    n64     setgroups                       sys_setgroups
+115    n64     setresuid                       sys_setresuid
+116    n64     getresuid                       sys_getresuid
+117    n64     setresgid                       sys_setresgid
+118    n64     getresgid                       sys_getresgid
+119    n64     getpgid                         sys_getpgid
+120    n64     setfsuid                        sys_setfsuid
+121    n64     setfsgid                        sys_setfsgid
+122    n64     getsid                          sys_getsid
+123    n64     capget                          sys_capget
+124    n64     capset                          sys_capset
+125    n64     rt_sigpending                   sys_rt_sigpending
+126    n64     rt_sigtimedwait                 sys_rt_sigtimedwait
+127    n64     rt_sigqueueinfo                 sys_rt_sigqueueinfo
+128    n64     rt_sigsuspend                   sys_rt_sigsuspend
+129    n64     sigaltstack                     sys_sigaltstack
+130    n64     utime                           sys_utime
+131    n64     mknod                           sys_mknod
+132    n64     personality                     sys_personality
+133    n64     ustat                           sys_ustat
+134    n64     statfs                          sys_statfs
+135    n64     fstatfs                         sys_fstatfs
+136    n64     sysfs                           sys_sysfs
+137    n64     getpriority                     sys_getpriority
+138    n64     setpriority                     sys_setpriority
+139    n64     sched_setparam                  sys_sched_setparam
+140    n64     sched_getparam                  sys_sched_getparam
+141    n64     sched_setscheduler              sys_sched_setscheduler
+142    n64     sched_getscheduler              sys_sched_getscheduler
+143    n64     sched_get_priority_max          sys_sched_get_priority_max
+144    n64     sched_get_priority_min          sys_sched_get_priority_min
+145    n64     sched_rr_get_interval           sys_sched_rr_get_interval
+146    n64     mlock                           sys_mlock
+147    n64     munlock                         sys_munlock
+148    n64     mlockall                        sys_mlockall
+149    n64     munlockall                      sys_munlockall
+150    n64     vhangup                         sys_vhangup
+151    n64     pivot_root                      sys_pivot_root
+152    n64     _sysctl                         sys_sysctl
+153    n64     prctl                           sys_prctl
+154    n64     adjtimex                        sys_adjtimex
+155    n64     setrlimit                       sys_setrlimit
+156    n64     chroot                          sys_chroot
+157    n64     sync                            sys_sync
+158    n64     acct                            sys_acct
+159    n64     settimeofday                    sys_settimeofday
+160    n64     mount                           sys_mount
+161    n64     umount2                         sys_umount
+162    n64     swapon                          sys_swapon
+163    n64     swapoff                         sys_swapoff
+164    n64     reboot                          sys_reboot
+165    n64     sethostname                     sys_sethostname
+166    n64     setdomainname                   sys_setdomainname
+167    n64     create_module                   sys_ni_syscall
+168    n64     init_module                     sys_init_module
+169    n64     delete_module                   sys_delete_module
+170    n64     get_kernel_syms                 sys_ni_syscall
+171    n64     query_module                    sys_ni_syscall
+172    n64     quotactl                        sys_quotactl
+173    n64     nfsservctl                      sys_ni_syscall
+174    n64     getpmsg                         sys_ni_syscall
+175    n64     putpmsg                         sys_ni_syscall
+176    n64     afs_syscall                     sys_ni_syscall
+# 177 reserved for security
+177    n64     reserved177                     sys_ni_syscall
+178    n64     gettid                          sys_gettid
+179    n64     readahead                       sys_readahead
+180    n64     setxattr                        sys_setxattr
+181    n64     lsetxattr                       sys_lsetxattr
+182    n64     fsetxattr                       sys_fsetxattr
+183    n64     getxattr                        sys_getxattr
+184    n64     lgetxattr                       sys_lgetxattr
+185    n64     fgetxattr                       sys_fgetxattr
+186    n64     listxattr                       sys_listxattr
+187    n64     llistxattr                      sys_llistxattr
+188    n64     flistxattr                      sys_flistxattr
+189    n64     removexattr                     sys_removexattr
+190    n64     lremovexattr                    sys_lremovexattr
+191    n64     fremovexattr                    sys_fremovexattr
+192    n64     tkill                           sys_tkill
+193    n64     reserved193                     sys_ni_syscall
+194    n64     futex                           sys_futex
+195    n64     sched_setaffinity               sys_sched_setaffinity
+196    n64     sched_getaffinity               sys_sched_getaffinity
+197    n64     cacheflush                      sys_cacheflush
+198    n64     cachectl                        sys_cachectl
+199    n64     sysmips                         __sys_sysmips
+200    n64     io_setup                        sys_io_setup
+201    n64     io_destroy                      sys_io_destroy
+202    n64     io_getevents                    sys_io_getevents
+203    n64     io_submit                       sys_io_submit
+204    n64     io_cancel                       sys_io_cancel
+205    n64     exit_group                      sys_exit_group
+206    n64     lookup_dcookie                  sys_lookup_dcookie
+207    n64     epoll_create                    sys_epoll_create
+208    n64     epoll_ctl                       sys_epoll_ctl
+209    n64     epoll_wait                      sys_epoll_wait
+210    n64     remap_file_pages                sys_remap_file_pages
+211    n64     rt_sigreturn                    sys_rt_sigreturn
+212    n64     set_tid_address                 sys_set_tid_address
+213    n64     restart_syscall                 sys_restart_syscall
+214    n64     semtimedop                      sys_semtimedop
+215    n64     fadvise64                       sys_fadvise64_64
+216    n64     timer_create                    sys_timer_create
+217    n64     timer_settime                   sys_timer_settime
+218    n64     timer_gettime                   sys_timer_gettime
+219    n64     timer_getoverrun                sys_timer_getoverrun
+220    n64     timer_delete                    sys_timer_delete
+221    n64     clock_settime                   sys_clock_settime
+222    n64     clock_gettime                   sys_clock_gettime
+223    n64     clock_getres                    sys_clock_getres
+224    n64     clock_nanosleep                 sys_clock_nanosleep
+225    n64     tgkill                          sys_tgkill
+226    n64     utimes                          sys_utimes
+227    n64     mbind                           sys_mbind
+228    n64     get_mempolicy                   sys_get_mempolicy
+229    n64     set_mempolicy                   sys_set_mempolicy
+230    n64     mq_open                         sys_mq_open
+231    n64     mq_unlink                       sys_mq_unlink
+232    n64     mq_timedsend                    sys_mq_timedsend
+233    n64     mq_timedreceive                 sys_mq_timedreceive
+234    n64     mq_notify                       sys_mq_notify
+235    n64     mq_getsetattr                   sys_mq_getsetattr
+236    n64     vserver                         sys_ni_syscall
+237    n64     waitid                          sys_waitid
+# 238 was sys_setaltroot
+239    n64     add_key                         sys_add_key
+240    n64     request_key                     sys_request_key
+241    n64     keyctl                          sys_keyctl
+242    n64     set_thread_area                 sys_set_thread_area
+243    n64     inotify_init                    sys_inotify_init
+244    n64     inotify_add_watch               sys_inotify_add_watch
+245    n64     inotify_rm_watch                sys_inotify_rm_watch
+246    n64     migrate_pages                   sys_migrate_pages
+247    n64     openat                          sys_openat
+248    n64     mkdirat                         sys_mkdirat
+249    n64     mknodat                         sys_mknodat
+250    n64     fchownat                        sys_fchownat
+251    n64     futimesat                       sys_futimesat
+252    n64     newfstatat                      sys_newfstatat
+253    n64     unlinkat                        sys_unlinkat
+254    n64     renameat                        sys_renameat
+255    n64     linkat                          sys_linkat
+256    n64     symlinkat                       sys_symlinkat
+257    n64     readlinkat                      sys_readlinkat
+258    n64     fchmodat                        sys_fchmodat
+259    n64     faccessat                       sys_faccessat
+260    n64     pselect6                        sys_pselect6
+261    n64     ppoll                           sys_ppoll
+262    n64     unshare                         sys_unshare
+263    n64     splice                          sys_splice
+264    n64     sync_file_range                 sys_sync_file_range
+265    n64     tee                             sys_tee
+266    n64     vmsplice                        sys_vmsplice
+267    n64     move_pages                      sys_move_pages
+268    n64     set_robust_list                 sys_set_robust_list
+269    n64     get_robust_list                 sys_get_robust_list
+270    n64     kexec_load                      sys_kexec_load
+271    n64     getcpu                          sys_getcpu
+272    n64     epoll_pwait                     sys_epoll_pwait
+273    n64     ioprio_set                      sys_ioprio_set
+274    n64     ioprio_get                      sys_ioprio_get
+275    n64     utimensat                       sys_utimensat
+276    n64     signalfd                        sys_signalfd
+277    n64     timerfd                         sys_ni_syscall
+278    n64     eventfd                         sys_eventfd
+279    n64     fallocate                       sys_fallocate
+280    n64     timerfd_create                  sys_timerfd_create
+281    n64     timerfd_gettime                 sys_timerfd_gettime
+282    n64     timerfd_settime                 sys_timerfd_settime
+283    n64     signalfd4                       sys_signalfd4
+284    n64     eventfd2                        sys_eventfd2
+285    n64     epoll_create1                   sys_epoll_create1
+286    n64     dup3                            sys_dup3
+287    n64     pipe2                           sys_pipe2
+288    n64     inotify_init1                   sys_inotify_init1
+289    n64     preadv                          sys_preadv
+290    n64     pwritev                         sys_pwritev
+291    n64     rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+292    n64     perf_event_open                 sys_perf_event_open
+293    n64     accept4                         sys_accept4
+294    n64     recvmmsg                        sys_recvmmsg
+295    n64     fanotify_init                   sys_fanotify_init
+296    n64     fanotify_mark                   sys_fanotify_mark
+297    n64     prlimit64                       sys_prlimit64
+298    n64     name_to_handle_at               sys_name_to_handle_at
+299    n64     open_by_handle_at               sys_open_by_handle_at
+300    n64     clock_adjtime                   sys_clock_adjtime
+301    n64     syncfs                          sys_syncfs
+302    n64     sendmmsg                        sys_sendmmsg
+303    n64     setns                           sys_setns
+304    n64     process_vm_readv                sys_process_vm_readv
+305    n64     process_vm_writev               sys_process_vm_writev
+306    n64     kcmp                            sys_kcmp
+307    n64     finit_module                    sys_finit_module
+308    n64     getdents64                      sys_getdents64
+309    n64     sched_setattr                   sys_sched_setattr
+310    n64     sched_getattr                   sys_sched_getattr
+311    n64     renameat2                       sys_renameat2
+312    n64     seccomp                         sys_seccomp
+313    n64     getrandom                       sys_getrandom
+314    n64     memfd_create                    sys_memfd_create
+315    n64     bpf                             sys_bpf
+316    n64     execveat                        sys_execveat
+317    n64     userfaultfd                     sys_userfaultfd
+318    n64     membarrier                      sys_membarrier
+319    n64     mlock2                          sys_mlock2
+320    n64     copy_file_range                 sys_copy_file_range
+321    n64     preadv2                         sys_preadv2
+322    n64     pwritev2                        sys_pwritev2
+323    n64     pkey_mprotect                   sys_pkey_mprotect
+324    n64     pkey_alloc                      sys_pkey_alloc
+325    n64     pkey_free                       sys_pkey_free
+326    n64     statx                           sys_statx
+327    n64     rseq                            sys_rseq
+328    n64     io_pgetevents                   sys_io_pgetevents
+# 329 through 423 are reserved to sync up with other architectures
+424    n64     pidfd_send_signal               sys_pidfd_send_signal
+425    n64     io_uring_setup                  sys_io_uring_setup
+426    n64     io_uring_enter                  sys_io_uring_enter
+427    n64     io_uring_register               sys_io_uring_register
+428    n64     open_tree                       sys_open_tree
+429    n64     move_mount                      sys_move_mount
+430    n64     fsopen                          sys_fsopen
+431    n64     fsconfig                        sys_fsconfig
+432    n64     fsmount                         sys_fsmount
+433    n64     fspick                          sys_fspick
+434    n64     pidfd_open                      sys_pidfd_open
+435    n64     clone3                          __sys_clone3
+437    n64     openat2                         sys_openat2
+438    n64     pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/mips64/syscall_nr.h b/linux-user/mips64/syscall_nr.h
deleted file mode 100644 (file)
index 6e23e9f..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-#ifndef LINUX_USER_MIPS64_SYSCALL_NR_H
-#define LINUX_USER_MIPS64_SYSCALL_NR_H
-
-#ifdef TARGET_ABI32
-/*
- * Linux N32 syscalls are in the range from 6000 to 6999.
- */
-#define TARGET_NR_Linux                 6000
-#define TARGET_NR_read                  (TARGET_NR_Linux +   0)
-#define TARGET_NR_write                 (TARGET_NR_Linux +   1)
-#define TARGET_NR_open                  (TARGET_NR_Linux +   2)
-#define TARGET_NR_close                 (TARGET_NR_Linux +   3)
-#define TARGET_NR_stat                  (TARGET_NR_Linux +   4)
-#define TARGET_NR_fstat                 (TARGET_NR_Linux +   5)
-#define TARGET_NR_lstat                 (TARGET_NR_Linux +   6)
-#define TARGET_NR_poll                  (TARGET_NR_Linux +   7)
-#define TARGET_NR_lseek                 (TARGET_NR_Linux +   8)
-#define TARGET_NR_mmap                  (TARGET_NR_Linux +   9)
-#define TARGET_NR_mprotect              (TARGET_NR_Linux +  10)
-#define TARGET_NR_munmap                (TARGET_NR_Linux +  11)
-#define TARGET_NR_brk                   (TARGET_NR_Linux +  12)
-#define TARGET_NR_rt_sigaction          (TARGET_NR_Linux +  13)
-#define TARGET_NR_rt_sigprocmask        (TARGET_NR_Linux +  14)
-#define TARGET_NR_ioctl                 (TARGET_NR_Linux +  15)
-#define TARGET_NR_pread64               (TARGET_NR_Linux +  16)
-#define TARGET_NR_pwrite64              (TARGET_NR_Linux +  17)
-#define TARGET_NR_readv                 (TARGET_NR_Linux +  18)
-#define TARGET_NR_writev                (TARGET_NR_Linux +  19)
-#define TARGET_NR_access                (TARGET_NR_Linux +  20)
-#define TARGET_NR_pipe                  (TARGET_NR_Linux +  21)
-#define TARGET_NR__newselect            (TARGET_NR_Linux +  22)
-#define TARGET_NR_sched_yield           (TARGET_NR_Linux +  23)
-#define TARGET_NR_mremap                (TARGET_NR_Linux +  24)
-#define TARGET_NR_msync                 (TARGET_NR_Linux +  25)
-#define TARGET_NR_mincore               (TARGET_NR_Linux +  26)
-#define TARGET_NR_madvise               (TARGET_NR_Linux +  27)
-#define TARGET_NR_shmget                (TARGET_NR_Linux +  28)
-#define TARGET_NR_shmat                 (TARGET_NR_Linux +  29)
-#define TARGET_NR_shmctl                (TARGET_NR_Linux +  30)
-#define TARGET_NR_dup                   (TARGET_NR_Linux +  31)
-#define TARGET_NR_dup2                  (TARGET_NR_Linux +  32)
-#define TARGET_NR_pause                 (TARGET_NR_Linux +  33)
-#define TARGET_NR_nanosleep             (TARGET_NR_Linux +  34)
-#define TARGET_NR_getitimer             (TARGET_NR_Linux +  35)
-#define TARGET_NR_setitimer             (TARGET_NR_Linux +  36)
-#define TARGET_NR_alarm                 (TARGET_NR_Linux +  37)
-#define TARGET_NR_getpid                (TARGET_NR_Linux +  38)
-#define TARGET_NR_sendfile              (TARGET_NR_Linux +  39)
-#define TARGET_NR_socket                (TARGET_NR_Linux +  40)
-#define TARGET_NR_connect               (TARGET_NR_Linux +  41)
-#define TARGET_NR_accept                (TARGET_NR_Linux +  42)
-#define TARGET_NR_sendto                (TARGET_NR_Linux +  43)
-#define TARGET_NR_recvfrom              (TARGET_NR_Linux +  44)
-#define TARGET_NR_sendmsg               (TARGET_NR_Linux +  45)
-#define TARGET_NR_recvmsg               (TARGET_NR_Linux +  46)
-#define TARGET_NR_shutdown              (TARGET_NR_Linux +  47)
-#define TARGET_NR_bind                  (TARGET_NR_Linux +  48)
-#define TARGET_NR_listen                (TARGET_NR_Linux +  49)
-#define TARGET_NR_getsockname           (TARGET_NR_Linux +  50)
-#define TARGET_NR_getpeername           (TARGET_NR_Linux +  51)
-#define TARGET_NR_socketpair            (TARGET_NR_Linux +  52)
-#define TARGET_NR_setsockopt            (TARGET_NR_Linux +  53)
-#define TARGET_NR_getsockopt            (TARGET_NR_Linux +  54)
-#define TARGET_NR_clone                 (TARGET_NR_Linux +  55)
-#define TARGET_NR_fork                  (TARGET_NR_Linux +  56)
-#define TARGET_NR_execve                (TARGET_NR_Linux +  57)
-#define TARGET_NR_exit                  (TARGET_NR_Linux +  58)
-#define TARGET_NR_wait4                 (TARGET_NR_Linux +  59)
-#define TARGET_NR_kill                  (TARGET_NR_Linux +  60)
-#define TARGET_NR_uname                 (TARGET_NR_Linux +  61)
-#define TARGET_NR_semget                (TARGET_NR_Linux +  62)
-#define TARGET_NR_semop                 (TARGET_NR_Linux +  63)
-#define TARGET_NR_semctl                (TARGET_NR_Linux +  64)
-#define TARGET_NR_shmdt                 (TARGET_NR_Linux +  65)
-#define TARGET_NR_msgget                (TARGET_NR_Linux +  66)
-#define TARGET_NR_msgsnd                (TARGET_NR_Linux +  67)
-#define TARGET_NR_msgrcv                (TARGET_NR_Linux +  68)
-#define TARGET_NR_msgctl                (TARGET_NR_Linux +  69)
-#define TARGET_NR_fcntl                 (TARGET_NR_Linux +  70)
-#define TARGET_NR_flock                 (TARGET_NR_Linux +  71)
-#define TARGET_NR_fsync                 (TARGET_NR_Linux +  72)
-#define TARGET_NR_fdatasync             (TARGET_NR_Linux +  73)
-#define TARGET_NR_truncate              (TARGET_NR_Linux +  74)
-#define TARGET_NR_ftruncate             (TARGET_NR_Linux +  75)
-#define TARGET_NR_getdents              (TARGET_NR_Linux +  76)
-#define TARGET_NR_getcwd                (TARGET_NR_Linux +  77)
-#define TARGET_NR_chdir                 (TARGET_NR_Linux +  78)
-#define TARGET_NR_fchdir                (TARGET_NR_Linux +  79)
-#define TARGET_NR_rename                (TARGET_NR_Linux +  80)
-#define TARGET_NR_mkdir                 (TARGET_NR_Linux +  81)
-#define TARGET_NR_rmdir                 (TARGET_NR_Linux +  82)
-#define TARGET_NR_creat                 (TARGET_NR_Linux +  83)
-#define TARGET_NR_link                  (TARGET_NR_Linux +  84)
-#define TARGET_NR_unlink                (TARGET_NR_Linux +  85)
-#define TARGET_NR_symlink               (TARGET_NR_Linux +  86)
-#define TARGET_NR_readlink              (TARGET_NR_Linux +  87)
-#define TARGET_NR_chmod                 (TARGET_NR_Linux +  88)
-#define TARGET_NR_fchmod                (TARGET_NR_Linux +  89)
-#define TARGET_NR_chown                 (TARGET_NR_Linux +  90)
-#define TARGET_NR_fchown                (TARGET_NR_Linux +  91)
-#define TARGET_NR_lchown                (TARGET_NR_Linux +  92)
-#define TARGET_NR_umask                 (TARGET_NR_Linux +  93)
-#define TARGET_NR_gettimeofday          (TARGET_NR_Linux +  94)
-#define TARGET_NR_getrlimit             (TARGET_NR_Linux +  95)
-#define TARGET_NR_getrusage             (TARGET_NR_Linux +  96)
-#define TARGET_NR_sysinfo               (TARGET_NR_Linux +  97)
-#define TARGET_NR_times                 (TARGET_NR_Linux +  98)
-#define TARGET_NR_ptrace                (TARGET_NR_Linux +  99)
-#define TARGET_NR_getuid                (TARGET_NR_Linux + 100)
-#define TARGET_NR_syslog                (TARGET_NR_Linux + 101)
-#define TARGET_NR_getgid                (TARGET_NR_Linux + 102)
-#define TARGET_NR_setuid                (TARGET_NR_Linux + 103)
-#define TARGET_NR_setgid                (TARGET_NR_Linux + 104)
-#define TARGET_NR_geteuid               (TARGET_NR_Linux + 105)
-#define TARGET_NR_getegid               (TARGET_NR_Linux + 106)
-#define TARGET_NR_setpgid               (TARGET_NR_Linux + 107)
-#define TARGET_NR_getppid               (TARGET_NR_Linux + 108)
-#define TARGET_NR_getpgrp               (TARGET_NR_Linux + 109)
-#define TARGET_NR_setsid                (TARGET_NR_Linux + 110)
-#define TARGET_NR_setreuid              (TARGET_NR_Linux + 111)
-#define TARGET_NR_setregid              (TARGET_NR_Linux + 112)
-#define TARGET_NR_getgroups             (TARGET_NR_Linux + 113)
-#define TARGET_NR_setgroups             (TARGET_NR_Linux + 114)
-#define TARGET_NR_setresuid             (TARGET_NR_Linux + 115)
-#define TARGET_NR_getresuid             (TARGET_NR_Linux + 116)
-#define TARGET_NR_setresgid             (TARGET_NR_Linux + 117)
-#define TARGET_NR_getresgid             (TARGET_NR_Linux + 118)
-#define TARGET_NR_getpgid               (TARGET_NR_Linux + 119)
-#define TARGET_NR_setfsuid              (TARGET_NR_Linux + 120)
-#define TARGET_NR_setfsgid              (TARGET_NR_Linux + 121)
-#define TARGET_NR_getsid                (TARGET_NR_Linux + 122)
-#define TARGET_NR_capget                (TARGET_NR_Linux + 123)
-#define TARGET_NR_capset                (TARGET_NR_Linux + 124)
-#define TARGET_NR_rt_sigpending         (TARGET_NR_Linux + 125)
-#define TARGET_NR_rt_sigtimedwait       (TARGET_NR_Linux + 126)
-#define TARGET_NR_rt_sigqueueinfo       (TARGET_NR_Linux + 127)
-#define TARGET_NR_rt_sigsuspend         (TARGET_NR_Linux + 128)
-#define TARGET_NR_sigaltstack           (TARGET_NR_Linux + 129)
-#define TARGET_NR_utime                 (TARGET_NR_Linux + 130)
-#define TARGET_NR_mknod                 (TARGET_NR_Linux + 131)
-#define TARGET_NR_personality           (TARGET_NR_Linux + 132)
-#define TARGET_NR_ustat                 (TARGET_NR_Linux + 133)
-#define TARGET_NR_statfs                (TARGET_NR_Linux + 134)
-#define TARGET_NR_fstatfs               (TARGET_NR_Linux + 135)
-#define TARGET_NR_sysfs                 (TARGET_NR_Linux + 136)
-#define TARGET_NR_getpriority           (TARGET_NR_Linux + 137)
-#define TARGET_NR_setpriority           (TARGET_NR_Linux + 138)
-#define TARGET_NR_sched_setparam        (TARGET_NR_Linux + 139)
-#define TARGET_NR_sched_getparam        (TARGET_NR_Linux + 140)
-#define TARGET_NR_sched_setscheduler    (TARGET_NR_Linux + 141)
-#define TARGET_NR_sched_getscheduler    (TARGET_NR_Linux + 142)
-#define TARGET_NR_sched_get_priority_max        (TARGET_NR_Linux + 143)
-#define TARGET_NR_sched_get_priority_min        (TARGET_NR_Linux + 144)
-#define TARGET_NR_sched_rr_get_interval (TARGET_NR_Linux + 145)
-#define TARGET_NR_mlock                 (TARGET_NR_Linux + 146)
-#define TARGET_NR_munlock               (TARGET_NR_Linux + 147)
-#define TARGET_NR_mlockall              (TARGET_NR_Linux + 148)
-#define TARGET_NR_munlockall            (TARGET_NR_Linux + 149)
-#define TARGET_NR_vhangup               (TARGET_NR_Linux + 150)
-#define TARGET_NR_pivot_root            (TARGET_NR_Linux + 151)
-#define TARGET_NR__sysctl               (TARGET_NR_Linux + 152)
-#define TARGET_NR_prctl                 (TARGET_NR_Linux + 153)
-#define TARGET_NR_adjtimex              (TARGET_NR_Linux + 154)
-#define TARGET_NR_setrlimit             (TARGET_NR_Linux + 155)
-#define TARGET_NR_chroot                (TARGET_NR_Linux + 156)
-#define TARGET_NR_sync                  (TARGET_NR_Linux + 157)
-#define TARGET_NR_acct                  (TARGET_NR_Linux + 158)
-#define TARGET_NR_settimeofday          (TARGET_NR_Linux + 159)
-#define TARGET_NR_mount                 (TARGET_NR_Linux + 160)
-#define TARGET_NR_umount2               (TARGET_NR_Linux + 161)
-#define TARGET_NR_swapon                (TARGET_NR_Linux + 162)
-#define TARGET_NR_swapoff               (TARGET_NR_Linux + 163)
-#define TARGET_NR_reboot                (TARGET_NR_Linux + 164)
-#define TARGET_NR_sethostname           (TARGET_NR_Linux + 165)
-#define TARGET_NR_setdomainname         (TARGET_NR_Linux + 166)
-#define TARGET_NR_create_module         (TARGET_NR_Linux + 167)
-#define TARGET_NR_init_module           (TARGET_NR_Linux + 168)
-#define TARGET_NR_delete_module         (TARGET_NR_Linux + 169)
-#define TARGET_NR_get_kernel_syms       (TARGET_NR_Linux + 170)
-#define TARGET_NR_query_module          (TARGET_NR_Linux + 171)
-#define TARGET_NR_quotactl              (TARGET_NR_Linux + 172)
-#define TARGET_NR_nfsservctl            (TARGET_NR_Linux + 173)
-#define TARGET_NR_getpmsg               (TARGET_NR_Linux + 174)
-#define TARGET_NR_putpmsg               (TARGET_NR_Linux + 175)
-#define TARGET_NR_afs_syscall           (TARGET_NR_Linux + 176)
-#define TARGET_NR_reserved177           (TARGET_NR_Linux + 177)
-#define TARGET_NR_gettid                (TARGET_NR_Linux + 178)
-#define TARGET_NR_readahead             (TARGET_NR_Linux + 179)
-#define TARGET_NR_setxattr              (TARGET_NR_Linux + 180)
-#define TARGET_NR_lsetxattr             (TARGET_NR_Linux + 181)
-#define TARGET_NR_fsetxattr             (TARGET_NR_Linux + 182)
-#define TARGET_NR_getxattr              (TARGET_NR_Linux + 183)
-#define TARGET_NR_lgetxattr             (TARGET_NR_Linux + 184)
-#define TARGET_NR_fgetxattr             (TARGET_NR_Linux + 185)
-#define TARGET_NR_listxattr             (TARGET_NR_Linux + 186)
-#define TARGET_NR_llistxattr            (TARGET_NR_Linux + 187)
-#define TARGET_NR_flistxattr            (TARGET_NR_Linux + 188)
-#define TARGET_NR_removexattr           (TARGET_NR_Linux + 189)
-#define TARGET_NR_lremovexattr          (TARGET_NR_Linux + 190)
-#define TARGET_NR_fremovexattr          (TARGET_NR_Linux + 191)
-#define TARGET_NR_tkill                 (TARGET_NR_Linux + 192)
-#define TARGET_NR_reserved193           (TARGET_NR_Linux + 193)
-#define TARGET_NR_futex                 (TARGET_NR_Linux + 194)
-#define TARGET_NR_sched_setaffinity     (TARGET_NR_Linux + 195)
-#define TARGET_NR_sched_getaffinity     (TARGET_NR_Linux + 196)
-#define TARGET_NR_cacheflush            (TARGET_NR_Linux + 197)
-#define TARGET_NR_cachectl              (TARGET_NR_Linux + 198)
-#define TARGET_NR_sysmips               (TARGET_NR_Linux + 199)
-#define TARGET_NR_io_setup              (TARGET_NR_Linux + 200)
-#define TARGET_NR_io_destroy            (TARGET_NR_Linux + 201)
-#define TARGET_NR_io_getevents          (TARGET_NR_Linux + 202)
-#define TARGET_NR_io_submit             (TARGET_NR_Linux + 203)
-#define TARGET_NR_io_cancel             (TARGET_NR_Linux + 204)
-#define TARGET_NR_exit_group            (TARGET_NR_Linux + 205)
-#define TARGET_NR_lookup_dcookie        (TARGET_NR_Linux + 206)
-#define TARGET_NR_epoll_create          (TARGET_NR_Linux + 207)
-#define TARGET_NR_epoll_ctl             (TARGET_NR_Linux + 208)
-#define TARGET_NR_epoll_wait            (TARGET_NR_Linux + 209)
-#define TARGET_NR_remap_file_pages      (TARGET_NR_Linux + 210)
-#define TARGET_NR_rt_sigreturn          (TARGET_NR_Linux + 211)
-#define TARGET_NR_fcntl64               (TARGET_NR_Linux + 212)
-#define TARGET_NR_set_tid_address       (TARGET_NR_Linux + 213)
-#define TARGET_NR_restart_syscall       (TARGET_NR_Linux + 214)
-#define TARGET_NR_semtimedop            (TARGET_NR_Linux + 215)
-#define TARGET_NR_fadvise64             (TARGET_NR_Linux + 216)
-#define TARGET_NR_statfs64              (TARGET_NR_Linux + 217)
-#define TARGET_NR_fstatfs64             (TARGET_NR_Linux + 218)
-#define TARGET_NR_sendfile64            (TARGET_NR_Linux + 219)
-#define TARGET_NR_timer_create          (TARGET_NR_Linux + 220)
-#define TARGET_NR_timer_settime         (TARGET_NR_Linux + 221)
-#define TARGET_NR_timer_gettime         (TARGET_NR_Linux + 222)
-#define TARGET_NR_timer_getoverrun      (TARGET_NR_Linux + 223)
-#define TARGET_NR_timer_delete          (TARGET_NR_Linux + 224)
-#define TARGET_NR_clock_settime         (TARGET_NR_Linux + 225)
-#define TARGET_NR_clock_gettime         (TARGET_NR_Linux + 226)
-#define TARGET_NR_clock_getres          (TARGET_NR_Linux + 227)
-#define TARGET_NR_clock_nanosleep       (TARGET_NR_Linux + 228)
-#define TARGET_NR_tgkill                (TARGET_NR_Linux + 229)
-#define TARGET_NR_utimes                (TARGET_NR_Linux + 230)
-#define TARGET_NR_mbind                 (TARGET_NR_Linux + 231)
-#define TARGET_NR_get_mempolicy         (TARGET_NR_Linux + 232)
-#define TARGET_NR_set_mempolicy         (TARGET_NR_Linux + 233)
-#define TARGET_NR_mq_open               (TARGET_NR_Linux + 234)
-#define TARGET_NR_mq_unlink             (TARGET_NR_Linux + 235)
-#define TARGET_NR_mq_timedsend          (TARGET_NR_Linux + 236)
-#define TARGET_NR_mq_timedreceive       (TARGET_NR_Linux + 237)
-#define TARGET_NR_mq_notify             (TARGET_NR_Linux + 238)
-#define TARGET_NR_mq_getsetattr         (TARGET_NR_Linux + 239)
-#define TARGET_NR_vserver               (TARGET_NR_Linux + 240)
-#define TARGET_NR_waitid                (TARGET_NR_Linux + 241)
-/* #define TARGET_NR_sys_setaltroot     (TARGET_NR_Linux + 242) */
-#define TARGET_NR_add_key               (TARGET_NR_Linux + 243)
-#define TARGET_NR_request_key           (TARGET_NR_Linux + 244)
-#define TARGET_NR_keyctl                (TARGET_NR_Linux + 245)
-#define TARGET_NR_set_thread_area       (TARGET_NR_Linux + 246)
-#define TARGET_NR_inotify_init          (TARGET_NR_Linux + 247)
-#define TARGET_NR_inotify_add_watch     (TARGET_NR_Linux + 248)
-#define TARGET_NR_inotify_rm_watch      (TARGET_NR_Linux + 249)
-#define TARGET_NR_migrate_pages         (TARGET_NR_Linux + 250)
-#define TARGET_NR_openat                (TARGET_NR_Linux + 251)
-#define TARGET_NR_mkdirat               (TARGET_NR_Linux + 252)
-#define TARGET_NR_mknodat               (TARGET_NR_Linux + 253)
-#define TARGET_NR_fchownat              (TARGET_NR_Linux + 254)
-#define TARGET_NR_futimesat             (TARGET_NR_Linux + 255)
-#define TARGET_NR_newfstatat            (TARGET_NR_Linux + 256)
-#define TARGET_NR_unlinkat              (TARGET_NR_Linux + 257)
-#define TARGET_NR_renameat              (TARGET_NR_Linux + 258)
-#define TARGET_NR_linkat                (TARGET_NR_Linux + 259)
-#define TARGET_NR_symlinkat             (TARGET_NR_Linux + 260)
-#define TARGET_NR_readlinkat            (TARGET_NR_Linux + 261)
-#define TARGET_NR_fchmodat              (TARGET_NR_Linux + 262)
-#define TARGET_NR_faccessat             (TARGET_NR_Linux + 263)
-#define TARGET_NR_pselect6              (TARGET_NR_Linux + 264)
-#define TARGET_NR_ppoll                 (TARGET_NR_Linux + 265)
-#define TARGET_NR_unshare               (TARGET_NR_Linux + 266)
-#define TARGET_NR_splice                (TARGET_NR_Linux + 267)
-#define TARGET_NR_sync_file_range       (TARGET_NR_Linux + 268)
-#define TARGET_NR_tee                   (TARGET_NR_Linux + 269)
-#define TARGET_NR_vmsplice              (TARGET_NR_Linux + 270)
-#define TARGET_NR_move_pages            (TARGET_NR_Linux + 271)
-#define TARGET_NR_set_robust_list       (TARGET_NR_Linux + 272)
-#define TARGET_NR_get_robust_list       (TARGET_NR_Linux + 273)
-#define TARGET_NR_kexec_load            (TARGET_NR_Linux + 274)
-#define TARGET_NR_getcpu                (TARGET_NR_Linux + 275)
-#define TARGET_NR_epoll_pwait           (TARGET_NR_Linux + 276)
-#define TARGET_NR_ioprio_set            (TARGET_NR_Linux + 277)
-#define TARGET_NR_ioprio_get            (TARGET_NR_Linux + 278)
-#define TARGET_NR_utimensat             (TARGET_NR_Linux + 279)
-#define TARGET_NR_signalfd              (TARGET_NR_Linux + 280)
-#define TARGET_NR_timerfd               (TARGET_NR_Linux + 281)
-#define TARGET_NR_eventfd               (TARGET_NR_Linux + 282)
-#define TARGET_NR_fallocate             (TARGET_NR_Linux + 283)
-#define TARGET_NR_timerfd_create        (TARGET_NR_Linux + 284)
-#define TARGET_NR_timerfd_gettime       (TARGET_NR_Linux + 285)
-#define TARGET_NR_timerfd_settime       (TARGET_NR_Linux + 286)
-#define TARGET_NR_signalfd4             (TARGET_NR_Linux + 287)
-#define TARGET_NR_eventfd2              (TARGET_NR_Linux + 288)
-#define TARGET_NR_epoll_create1         (TARGET_NR_Linux + 289)
-#define TARGET_NR_dup3                  (TARGET_NR_Linux + 290)
-#define TARGET_NR_pipe2                 (TARGET_NR_Linux + 291)
-#define TARGET_NR_inotify_init1         (TARGET_NR_Linux + 292)
-#define TARGET_NR_preadv                (TARGET_NR_Linux + 293)
-#define TARGET_NR_pwritev               (TARGET_NR_Linux + 294)
-#define TARGET_NR_rt_tgsigqueueinfo     (TARGET_NR_Linux + 295)
-#define TARGET_NR_perf_event_open       (TARGET_NR_Linux + 296)
-#define TARGET_NR_accept4               (TARGET_NR_Linux + 297)
-#define TARGET_NR_recvmmsg              (TARGET_NR_Linux + 298)
-#define TARGET_NR_getdents64            (TARGET_NR_Linux + 299)
-#define TARGET_NR_fanotify_init         (TARGET_NR_Linux + 300)
-#define TARGET_NR_fanotify_mark         (TARGET_NR_Linux + 301)
-#define TARGET_NR_prlimit64             (TARGET_NR_Linux + 302)
-#define TARGET_NR_name_to_handle_at     (TARGET_NR_Linux + 303)
-#define TARGET_NR_open_by_handle_at     (TARGET_NR_Linux + 304)
-#define TARGET_NR_clock_adjtime         (TARGET_NR_Linux + 305)
-#define TARGET_NR_syncfs                (TARGET_NR_Linux + 306)
-#define TARGET_NR_sendmmsg              (TARGET_NR_Linux + 307)
-#define TARGET_NR_setns                 (TARGET_NR_Linux + 308)
-#define TARGET_NR_process_vm_readv      (TARGET_NR_Linux + 309)
-#define TARGET_NR_process_vm_writev     (TARGET_NR_Linux + 310)
-#define TARGET_NR_kcmp                  (TARGET_NR_Linux + 311)
-#define TARGET_NR_finit_module          (TARGET_NR_Linux + 312)
-#define TARGET_NR_sched_setattr         (TARGET_NR_Linux + 313)
-#define TARGET_NR_sched_getattr         (TARGET_NR_Linux + 314)
-#define TARGET_NR_renameat2             (TARGET_NR_Linux + 315)
-#define TARGET_NR_seccomp               (TARGET_NR_Linux + 316)
-#define TARGET_NR_getrandom             (TARGET_NR_Linux + 317)
-#define TARGET_NR_memfd_create          (TARGET_NR_Linux + 318)
-#define TARGET_NR_bpf                   (TARGET_NR_Linux + 319)
-#define TARGET_NR_execveat              (TARGET_NR_Linux + 320)
-#define TARGET_NR_userfaultfd           (TARGET_NR_Linux + 321)
-#define TARGET_NR_membarrier            (TARGET_NR_Linux + 322)
-#define TARGET_NR_mlock2                (TARGET_NR_Linux + 323)
-#define TARGET_NR_copy_file_range       (TARGET_NR_Linux + 324)
-#define TARGET_NR_preadv2               (TARGET_NR_Linux + 325)
-#define TARGET_NR_pwritev2              (TARGET_NR_Linux + 326)
-#define TARGET_NR_pkey_mprotect         (TARGET_NR_Linux + 327)
-#define TARGET_NR_pkey_alloc            (TARGET_NR_Linux + 328)
-#define TARGET_NR_pkey_free             (TARGET_NR_Linux + 329)
-#define TARGET_NR_statx                 (TARGET_NR_Linux + 330)
-#define TARGET_NR_rseq                  (TARGET_NR_Linux + 331)
-#define TARGET_NR_io_pgetevents         (TARGET_NR_Linux + 332)
-/* 333 through 402 are unassigned to sync up with generic numbers */
-#define TARGET_NR_clock_gettime64       (TARGET_NR_Linux + 403)
-#define TARGET_NR_clock_settime64       (TARGET_NR_Linux + 404)
-#define TARGET_NR_clock_adjtime64       (TARGET_NR_Linux + 405)
-#define TARGET_NR_clock_getres_time64   (TARGET_NR_Linux + 406)
-#define TARGET_NR_clock_nanosleep_time64 (TARGET_NR_Linux + 407)
-#define TARGET_NR_timer_gettime64       (TARGET_NR_Linux + 408)
-#define TARGET_NR_timer_settime64       (TARGET_NR_Linux + 409)
-#define TARGET_NR_timerfd_gettime64     (TARGET_NR_Linux + 410)
-#define TARGET_NR_timerfd_settime64     (TARGET_NR_Linux + 411)
-#define TARGET_NR_utimensat_time64      (TARGET_NR_Linux + 412)
-#define TARGET_NR_pselect6_time64       (TARGET_NR_Linux + 413)
-#define TARGET_NR_ppoll_time64          (TARGET_NR_Linux + 414)
-#define TARGET_NR_io_pgetevents_time64  (TARGET_NR_Linux + 416)
-#define TARGET_NR_recvmmsg_time64       (TARGET_NR_Linux + 417)
-#define TARGET_NR_mq_timedsend_time64   (TARGET_NR_Linux + 418)
-#define TARGET_NR_mq_timedreceive_time64 (TARGET_NR_Linux + 419)
-#define TARGET_NR_semtimedop_time64     (TARGET_NR_Linux + 420)
-#define TARGET_NR_rt_sigtimedwait_time64 (TARGET_NR_Linux + 421)
-#define TARGET_NR_futex_time64          (TARGET_NR_Linux + 422)
-#define TARGET_NR_sched_rr_get_interval_time64 (TARGET_NR_Linux + 423)
-#define TARGET_NR_pidfd_send_signal     (TARGET_NR_Linux + 424)
-#define TARGET_NR_io_uring_setup        (TARGET_NR_Linux + 425)
-#define TARGET_NR_io_uring_enter        (TARGET_NR_Linux + 426)
-#define TARGET_NR_io_uring_register     (TARGET_NR_Linux + 427)
-#define TARGET_NR_open_tree             (TARGET_NR_Linux + 428)
-#define TARGET_NR_move_mount            (TARGET_NR_Linux + 429)
-#define TARGET_NR_fsopen                (TARGET_NR_Linux + 430)
-#define TARGET_NR_fsconfig              (TARGET_NR_Linux + 431)
-#define TARGET_NR_fsmount               (TARGET_NR_Linux + 432)
-#define TARGET_NR_fspick                (TARGET_NR_Linux + 433)
-#define TARGET_NR_pidfd_open            (TARGET_NR_Linux + 434)
-#define TARGET_NR_clone3                (TARGET_NR_Linux + 435)
-
-#else
-/*
- * Linux 64-bit syscalls are in the range from 5000 to 5999.
- */
-#define TARGET_NR_Linux                 5000
-#define TARGET_NR_read                  (TARGET_NR_Linux +   0)
-#define TARGET_NR_write                 (TARGET_NR_Linux +   1)
-#define TARGET_NR_open                  (TARGET_NR_Linux +   2)
-#define TARGET_NR_close                 (TARGET_NR_Linux +   3)
-#define TARGET_NR_stat                  (TARGET_NR_Linux +   4)
-#define TARGET_NR_fstat                 (TARGET_NR_Linux +   5)
-#define TARGET_NR_lstat                 (TARGET_NR_Linux +   6)
-#define TARGET_NR_poll                  (TARGET_NR_Linux +   7)
-#define TARGET_NR_lseek                 (TARGET_NR_Linux +   8)
-#define TARGET_NR_mmap                  (TARGET_NR_Linux +   9)
-#define TARGET_NR_mprotect              (TARGET_NR_Linux +  10)
-#define TARGET_NR_munmap                (TARGET_NR_Linux +  11)
-#define TARGET_NR_brk                   (TARGET_NR_Linux +  12)
-#define TARGET_NR_rt_sigaction          (TARGET_NR_Linux +  13)
-#define TARGET_NR_rt_sigprocmask        (TARGET_NR_Linux +  14)
-#define TARGET_NR_ioctl                 (TARGET_NR_Linux +  15)
-#define TARGET_NR_pread64               (TARGET_NR_Linux +  16)
-#define TARGET_NR_pwrite64              (TARGET_NR_Linux +  17)
-#define TARGET_NR_readv                 (TARGET_NR_Linux +  18)
-#define TARGET_NR_writev                (TARGET_NR_Linux +  19)
-#define TARGET_NR_access                (TARGET_NR_Linux +  20)
-#define TARGET_NR_pipe                  (TARGET_NR_Linux +  21)
-#define TARGET_NR__newselect            (TARGET_NR_Linux +  22)
-#define TARGET_NR_sched_yield           (TARGET_NR_Linux +  23)
-#define TARGET_NR_mremap                (TARGET_NR_Linux +  24)
-#define TARGET_NR_msync                 (TARGET_NR_Linux +  25)
-#define TARGET_NR_mincore               (TARGET_NR_Linux +  26)
-#define TARGET_NR_madvise               (TARGET_NR_Linux +  27)
-#define TARGET_NR_shmget                (TARGET_NR_Linux +  28)
-#define TARGET_NR_shmat                 (TARGET_NR_Linux +  29)
-#define TARGET_NR_shmctl                (TARGET_NR_Linux +  30)
-#define TARGET_NR_dup                   (TARGET_NR_Linux +  31)
-#define TARGET_NR_dup2                  (TARGET_NR_Linux +  32)
-#define TARGET_NR_pause                 (TARGET_NR_Linux +  33)
-#define TARGET_NR_nanosleep             (TARGET_NR_Linux +  34)
-#define TARGET_NR_getitimer             (TARGET_NR_Linux +  35)
-#define TARGET_NR_setitimer             (TARGET_NR_Linux +  36)
-#define TARGET_NR_alarm                 (TARGET_NR_Linux +  37)
-#define TARGET_NR_getpid                (TARGET_NR_Linux +  38)
-#define TARGET_NR_sendfile              (TARGET_NR_Linux +  39)
-#define TARGET_NR_socket                (TARGET_NR_Linux +  40)
-#define TARGET_NR_connect               (TARGET_NR_Linux +  41)
-#define TARGET_NR_accept                (TARGET_NR_Linux +  42)
-#define TARGET_NR_sendto                (TARGET_NR_Linux +  43)
-#define TARGET_NR_recvfrom              (TARGET_NR_Linux +  44)
-#define TARGET_NR_sendmsg               (TARGET_NR_Linux +  45)
-#define TARGET_NR_recvmsg               (TARGET_NR_Linux +  46)
-#define TARGET_NR_shutdown              (TARGET_NR_Linux +  47)
-#define TARGET_NR_bind                  (TARGET_NR_Linux +  48)
-#define TARGET_NR_listen                (TARGET_NR_Linux +  49)
-#define TARGET_NR_getsockname           (TARGET_NR_Linux +  50)
-#define TARGET_NR_getpeername           (TARGET_NR_Linux +  51)
-#define TARGET_NR_socketpair            (TARGET_NR_Linux +  52)
-#define TARGET_NR_setsockopt            (TARGET_NR_Linux +  53)
-#define TARGET_NR_getsockopt            (TARGET_NR_Linux +  54)
-#define TARGET_NR_clone                 (TARGET_NR_Linux +  55)
-#define TARGET_NR_fork                  (TARGET_NR_Linux +  56)
-#define TARGET_NR_execve                (TARGET_NR_Linux +  57)
-#define TARGET_NR_exit                  (TARGET_NR_Linux +  58)
-#define TARGET_NR_wait4                 (TARGET_NR_Linux +  59)
-#define TARGET_NR_kill                  (TARGET_NR_Linux +  60)
-#define TARGET_NR_uname                 (TARGET_NR_Linux +  61)
-#define TARGET_NR_semget                (TARGET_NR_Linux +  62)
-#define TARGET_NR_semop                 (TARGET_NR_Linux +  63)
-#define TARGET_NR_semctl                (TARGET_NR_Linux +  64)
-#define TARGET_NR_shmdt                 (TARGET_NR_Linux +  65)
-#define TARGET_NR_msgget                (TARGET_NR_Linux +  66)
-#define TARGET_NR_msgsnd                (TARGET_NR_Linux +  67)
-#define TARGET_NR_msgrcv                (TARGET_NR_Linux +  68)
-#define TARGET_NR_msgctl                (TARGET_NR_Linux +  69)
-#define TARGET_NR_fcntl                 (TARGET_NR_Linux +  70)
-#define TARGET_NR_flock                 (TARGET_NR_Linux +  71)
-#define TARGET_NR_fsync                 (TARGET_NR_Linux +  72)
-#define TARGET_NR_fdatasync             (TARGET_NR_Linux +  73)
-#define TARGET_NR_truncate              (TARGET_NR_Linux +  74)
-#define TARGET_NR_ftruncate             (TARGET_NR_Linux +  75)
-#define TARGET_NR_getdents              (TARGET_NR_Linux +  76)
-#define TARGET_NR_getcwd                (TARGET_NR_Linux +  77)
-#define TARGET_NR_chdir                 (TARGET_NR_Linux +  78)
-#define TARGET_NR_fchdir                (TARGET_NR_Linux +  79)
-#define TARGET_NR_rename                (TARGET_NR_Linux +  80)
-#define TARGET_NR_mkdir                 (TARGET_NR_Linux +  81)
-#define TARGET_NR_rmdir                 (TARGET_NR_Linux +  82)
-#define TARGET_NR_creat                 (TARGET_NR_Linux +  83)
-#define TARGET_NR_link                  (TARGET_NR_Linux +  84)
-#define TARGET_NR_unlink                (TARGET_NR_Linux +  85)
-#define TARGET_NR_symlink               (TARGET_NR_Linux +  86)
-#define TARGET_NR_readlink              (TARGET_NR_Linux +  87)
-#define TARGET_NR_chmod                 (TARGET_NR_Linux +  88)
-#define TARGET_NR_fchmod                (TARGET_NR_Linux +  89)
-#define TARGET_NR_chown                 (TARGET_NR_Linux +  90)
-#define TARGET_NR_fchown                (TARGET_NR_Linux +  91)
-#define TARGET_NR_lchown                (TARGET_NR_Linux +  92)
-#define TARGET_NR_umask                 (TARGET_NR_Linux +  93)
-#define TARGET_NR_gettimeofday          (TARGET_NR_Linux +  94)
-#define TARGET_NR_getrlimit             (TARGET_NR_Linux +  95)
-#define TARGET_NR_getrusage             (TARGET_NR_Linux +  96)
-#define TARGET_NR_sysinfo               (TARGET_NR_Linux +  97)
-#define TARGET_NR_times                 (TARGET_NR_Linux +  98)
-#define TARGET_NR_ptrace                (TARGET_NR_Linux +  99)
-#define TARGET_NR_getuid                (TARGET_NR_Linux + 100)
-#define TARGET_NR_syslog                (TARGET_NR_Linux + 101)
-#define TARGET_NR_getgid                (TARGET_NR_Linux + 102)
-#define TARGET_NR_setuid                (TARGET_NR_Linux + 103)
-#define TARGET_NR_setgid                (TARGET_NR_Linux + 104)
-#define TARGET_NR_geteuid               (TARGET_NR_Linux + 105)
-#define TARGET_NR_getegid               (TARGET_NR_Linux + 106)
-#define TARGET_NR_setpgid               (TARGET_NR_Linux + 107)
-#define TARGET_NR_getppid               (TARGET_NR_Linux + 108)
-#define TARGET_NR_getpgrp               (TARGET_NR_Linux + 109)
-#define TARGET_NR_setsid                (TARGET_NR_Linux + 110)
-#define TARGET_NR_setreuid              (TARGET_NR_Linux + 111)
-#define TARGET_NR_setregid              (TARGET_NR_Linux + 112)
-#define TARGET_NR_getgroups             (TARGET_NR_Linux + 113)
-#define TARGET_NR_setgroups             (TARGET_NR_Linux + 114)
-#define TARGET_NR_setresuid             (TARGET_NR_Linux + 115)
-#define TARGET_NR_getresuid             (TARGET_NR_Linux + 116)
-#define TARGET_NR_setresgid             (TARGET_NR_Linux + 117)
-#define TARGET_NR_getresgid             (TARGET_NR_Linux + 118)
-#define TARGET_NR_getpgid               (TARGET_NR_Linux + 119)
-#define TARGET_NR_setfsuid              (TARGET_NR_Linux + 120)
-#define TARGET_NR_setfsgid              (TARGET_NR_Linux + 121)
-#define TARGET_NR_getsid                (TARGET_NR_Linux + 122)
-#define TARGET_NR_capget                (TARGET_NR_Linux + 123)
-#define TARGET_NR_capset                (TARGET_NR_Linux + 124)
-#define TARGET_NR_rt_sigpending         (TARGET_NR_Linux + 125)
-#define TARGET_NR_rt_sigtimedwait       (TARGET_NR_Linux + 126)
-#define TARGET_NR_rt_sigqueueinfo       (TARGET_NR_Linux + 127)
-#define TARGET_NR_rt_sigsuspend         (TARGET_NR_Linux + 128)
-#define TARGET_NR_sigaltstack           (TARGET_NR_Linux + 129)
-#define TARGET_NR_utime                 (TARGET_NR_Linux + 130)
-#define TARGET_NR_mknod                 (TARGET_NR_Linux + 131)
-#define TARGET_NR_personality           (TARGET_NR_Linux + 132)
-#define TARGET_NR_ustat                 (TARGET_NR_Linux + 133)
-#define TARGET_NR_statfs                (TARGET_NR_Linux + 134)
-#define TARGET_NR_fstatfs               (TARGET_NR_Linux + 135)
-#define TARGET_NR_sysfs                 (TARGET_NR_Linux + 136)
-#define TARGET_NR_getpriority           (TARGET_NR_Linux + 137)
-#define TARGET_NR_setpriority           (TARGET_NR_Linux + 138)
-#define TARGET_NR_sched_setparam        (TARGET_NR_Linux + 139)
-#define TARGET_NR_sched_getparam        (TARGET_NR_Linux + 140)
-#define TARGET_NR_sched_setscheduler    (TARGET_NR_Linux + 141)
-#define TARGET_NR_sched_getscheduler    (TARGET_NR_Linux + 142)
-#define TARGET_NR_sched_get_priority_max (TARGET_NR_Linux + 143)
-#define TARGET_NR_sched_get_priority_min (TARGET_NR_Linux + 144)
-#define TARGET_NR_sched_rr_get_interval (TARGET_NR_Linux + 145)
-#define TARGET_NR_mlock                 (TARGET_NR_Linux + 146)
-#define TARGET_NR_munlock               (TARGET_NR_Linux + 147)
-#define TARGET_NR_mlockall              (TARGET_NR_Linux + 148)
-#define TARGET_NR_munlockall            (TARGET_NR_Linux + 149)
-#define TARGET_NR_vhangup               (TARGET_NR_Linux + 150)
-#define TARGET_NR_pivot_root            (TARGET_NR_Linux + 151)
-#define TARGET_NR__sysctl               (TARGET_NR_Linux + 152)
-#define TARGET_NR_prctl                 (TARGET_NR_Linux + 153)
-#define TARGET_NR_adjtimex              (TARGET_NR_Linux + 154)
-#define TARGET_NR_setrlimit             (TARGET_NR_Linux + 155)
-#define TARGET_NR_chroot                (TARGET_NR_Linux + 156)
-#define TARGET_NR_sync                  (TARGET_NR_Linux + 157)
-#define TARGET_NR_acct                  (TARGET_NR_Linux + 158)
-#define TARGET_NR_settimeofday          (TARGET_NR_Linux + 159)
-#define TARGET_NR_mount                 (TARGET_NR_Linux + 160)
-#define TARGET_NR_umount2               (TARGET_NR_Linux + 161)
-#define TARGET_NR_swapon                (TARGET_NR_Linux + 162)
-#define TARGET_NR_swapoff               (TARGET_NR_Linux + 163)
-#define TARGET_NR_reboot                (TARGET_NR_Linux + 164)
-#define TARGET_NR_sethostname           (TARGET_NR_Linux + 165)
-#define TARGET_NR_setdomainname         (TARGET_NR_Linux + 166)
-#define TARGET_NR_create_module         (TARGET_NR_Linux + 167)
-#define TARGET_NR_init_module           (TARGET_NR_Linux + 168)
-#define TARGET_NR_delete_module         (TARGET_NR_Linux + 169)
-#define TARGET_NR_get_kernel_syms       (TARGET_NR_Linux + 170)
-#define TARGET_NR_query_module          (TARGET_NR_Linux + 171)
-#define TARGET_NR_quotactl              (TARGET_NR_Linux + 172)
-#define TARGET_NR_nfsservctl            (TARGET_NR_Linux + 173)
-#define TARGET_NR_getpmsg               (TARGET_NR_Linux + 174)
-#define TARGET_NR_putpmsg               (TARGET_NR_Linux + 175)
-#define TARGET_NR_afs_syscall           (TARGET_NR_Linux + 176)
-#define TARGET_NR_reserved177           (TARGET_NR_Linux + 177)
-#define TARGET_NR_gettid                (TARGET_NR_Linux + 178)
-#define TARGET_NR_readahead             (TARGET_NR_Linux + 179)
-#define TARGET_NR_setxattr              (TARGET_NR_Linux + 180)
-#define TARGET_NR_lsetxattr             (TARGET_NR_Linux + 181)
-#define TARGET_NR_fsetxattr             (TARGET_NR_Linux + 182)
-#define TARGET_NR_getxattr              (TARGET_NR_Linux + 183)
-#define TARGET_NR_lgetxattr             (TARGET_NR_Linux + 184)
-#define TARGET_NR_fgetxattr             (TARGET_NR_Linux + 185)
-#define TARGET_NR_listxattr             (TARGET_NR_Linux + 186)
-#define TARGET_NR_llistxattr            (TARGET_NR_Linux + 187)
-#define TARGET_NR_flistxattr            (TARGET_NR_Linux + 188)
-#define TARGET_NR_removexattr           (TARGET_NR_Linux + 189)
-#define TARGET_NR_lremovexattr          (TARGET_NR_Linux + 190)
-#define TARGET_NR_fremovexattr          (TARGET_NR_Linux + 191)
-#define TARGET_NR_tkill                 (TARGET_NR_Linux + 192)
-#define TARGET_NR_reserved193           (TARGET_NR_Linux + 193)
-#define TARGET_NR_futex                 (TARGET_NR_Linux + 194)
-#define TARGET_NR_sched_setaffinity     (TARGET_NR_Linux + 195)
-#define TARGET_NR_sched_getaffinity     (TARGET_NR_Linux + 196)
-#define TARGET_NR_cacheflush            (TARGET_NR_Linux + 197)
-#define TARGET_NR_cachectl              (TARGET_NR_Linux + 198)
-#define TARGET_NR_sysmips               (TARGET_NR_Linux + 199)
-#define TARGET_NR_io_setup              (TARGET_NR_Linux + 200)
-#define TARGET_NR_io_destroy            (TARGET_NR_Linux + 201)
-#define TARGET_NR_io_getevents          (TARGET_NR_Linux + 202)
-#define TARGET_NR_io_submit             (TARGET_NR_Linux + 203)
-#define TARGET_NR_io_cancel             (TARGET_NR_Linux + 204)
-#define TARGET_NR_exit_group            (TARGET_NR_Linux + 205)
-#define TARGET_NR_lookup_dcookie        (TARGET_NR_Linux + 206)
-#define TARGET_NR_epoll_create          (TARGET_NR_Linux + 207)
-#define TARGET_NR_epoll_ctl             (TARGET_NR_Linux + 208)
-#define TARGET_NR_epoll_wait            (TARGET_NR_Linux + 209)
-#define TARGET_NR_remap_file_pages      (TARGET_NR_Linux + 210)
-#define TARGET_NR_rt_sigreturn          (TARGET_NR_Linux + 211)
-#define TARGET_NR_set_tid_address       (TARGET_NR_Linux + 212)
-#define TARGET_NR_restart_syscall       (TARGET_NR_Linux + 213)
-#define TARGET_NR_semtimedop            (TARGET_NR_Linux + 214)
-#define TARGET_NR_fadvise64             (TARGET_NR_Linux + 215)
-#define TARGET_NR_timer_create          (TARGET_NR_Linux + 216)
-#define TARGET_NR_timer_settime         (TARGET_NR_Linux + 217)
-#define TARGET_NR_timer_gettime         (TARGET_NR_Linux + 218)
-#define TARGET_NR_timer_getoverrun      (TARGET_NR_Linux + 219)
-#define TARGET_NR_timer_delete          (TARGET_NR_Linux + 220)
-#define TARGET_NR_clock_settime         (TARGET_NR_Linux + 221)
-#define TARGET_NR_clock_gettime         (TARGET_NR_Linux + 222)
-#define TARGET_NR_clock_getres          (TARGET_NR_Linux + 223)
-#define TARGET_NR_clock_nanosleep       (TARGET_NR_Linux + 224)
-#define TARGET_NR_tgkill                (TARGET_NR_Linux + 225)
-#define TARGET_NR_utimes                (TARGET_NR_Linux + 226)
-#define TARGET_NR_mbind                 (TARGET_NR_Linux + 227)
-#define TARGET_NR_get_mempolicy         (TARGET_NR_Linux + 228)
-#define TARGET_NR_set_mempolicy         (TARGET_NR_Linux + 229)
-#define TARGET_NR_mq_open               (TARGET_NR_Linux + 230)
-#define TARGET_NR_mq_unlink             (TARGET_NR_Linux + 231)
-#define TARGET_NR_mq_timedsend          (TARGET_NR_Linux + 232)
-#define TARGET_NR_mq_timedreceive       (TARGET_NR_Linux + 233)
-#define TARGET_NR_mq_notify             (TARGET_NR_Linux + 234)
-#define TARGET_NR_mq_getsetattr         (TARGET_NR_Linux + 235)
-#define TARGET_NR_vserver               (TARGET_NR_Linux + 236)
-#define TARGET_NR_waitid                (TARGET_NR_Linux + 237)
-/* #define TARGET_NR_sys_setaltroot     (TARGET_NR_Linux + 238) */
-#define TARGET_NR_add_key               (TARGET_NR_Linux + 239)
-#define TARGET_NR_request_key           (TARGET_NR_Linux + 240)
-#define TARGET_NR_keyctl                (TARGET_NR_Linux + 241)
-#define TARGET_NR_set_thread_area       (TARGET_NR_Linux + 242)
-#define TARGET_NR_inotify_init          (TARGET_NR_Linux + 243)
-#define TARGET_NR_inotify_add_watch     (TARGET_NR_Linux + 244)
-#define TARGET_NR_inotify_rm_watch      (TARGET_NR_Linux + 245)
-#define TARGET_NR_migrate_pages         (TARGET_NR_Linux + 246)
-#define TARGET_NR_openat                (TARGET_NR_Linux + 247)
-#define TARGET_NR_mkdirat               (TARGET_NR_Linux + 248)
-#define TARGET_NR_mknodat               (TARGET_NR_Linux + 249)
-#define TARGET_NR_fchownat              (TARGET_NR_Linux + 250)
-#define TARGET_NR_futimesat             (TARGET_NR_Linux + 251)
-#define TARGET_NR_newfstatat            (TARGET_NR_Linux + 252)
-#define TARGET_NR_unlinkat              (TARGET_NR_Linux + 253)
-#define TARGET_NR_renameat              (TARGET_NR_Linux + 254)
-#define TARGET_NR_linkat                (TARGET_NR_Linux + 255)
-#define TARGET_NR_symlinkat             (TARGET_NR_Linux + 256)
-#define TARGET_NR_readlinkat            (TARGET_NR_Linux + 257)
-#define TARGET_NR_fchmodat              (TARGET_NR_Linux + 258)
-#define TARGET_NR_faccessat             (TARGET_NR_Linux + 259)
-#define TARGET_NR_pselect6              (TARGET_NR_Linux + 260)
-#define TARGET_NR_ppoll                 (TARGET_NR_Linux + 261)
-#define TARGET_NR_unshare               (TARGET_NR_Linux + 262)
-#define TARGET_NR_splice                (TARGET_NR_Linux + 263)
-#define TARGET_NR_sync_file_range       (TARGET_NR_Linux + 264)
-#define TARGET_NR_tee                   (TARGET_NR_Linux + 265)
-#define TARGET_NR_vmsplice              (TARGET_NR_Linux + 266)
-#define TARGET_NR_move_pages            (TARGET_NR_Linux + 267)
-#define TARGET_NR_set_robust_list       (TARGET_NR_Linux + 268)
-#define TARGET_NR_get_robust_list       (TARGET_NR_Linux + 269)
-#define TARGET_NR_kexec_load            (TARGET_NR_Linux + 270)
-#define TARGET_NR_getcpu                (TARGET_NR_Linux + 271)
-#define TARGET_NR_epoll_pwait           (TARGET_NR_Linux + 272)
-#define TARGET_NR_ioprio_set            (TARGET_NR_Linux + 273)
-#define TARGET_NR_ioprio_get            (TARGET_NR_Linux + 274)
-#define TARGET_NR_utimensat             (TARGET_NR_Linux + 275)
-#define TARGET_NR_signalfd              (TARGET_NR_Linux + 276)
-#define TARGET_NR_timerfd               (TARGET_NR_Linux + 277)
-#define TARGET_NR_eventfd               (TARGET_NR_Linux + 278)
-#define TARGET_NR_fallocate             (TARGET_NR_Linux + 279)
-#define TARGET_NR_timerfd_create        (TARGET_NR_Linux + 280)
-#define TARGET_NR_timerfd_gettime       (TARGET_NR_Linux + 281)
-#define TARGET_NR_timerfd_settime       (TARGET_NR_Linux + 282)
-#define TARGET_NR_signalfd4             (TARGET_NR_Linux + 283)
-#define TARGET_NR_eventfd2              (TARGET_NR_Linux + 284)
-#define TARGET_NR_epoll_create1         (TARGET_NR_Linux + 285)
-#define TARGET_NR_dup3                  (TARGET_NR_Linux + 286)
-#define TARGET_NR_pipe2                 (TARGET_NR_Linux + 287)
-#define TARGET_NR_inotify_init1         (TARGET_NR_Linux + 288)
-#define TARGET_NR_preadv                (TARGET_NR_Linux + 289)
-#define TARGET_NR_pwritev               (TARGET_NR_Linux + 290)
-#define TARGET_NR_rt_tgsigqueueinfo     (TARGET_NR_Linux + 291)
-#define TARGET_NR_perf_event_open       (TARGET_NR_Linux + 292)
-#define TARGET_NR_accept4               (TARGET_NR_Linux + 293)
-#define TARGET_NR_recvmmsg              (TARGET_NR_Linux + 294)
-#define TARGET_NR_fanotify_init         (TARGET_NR_Linux + 295)
-#define TARGET_NR_fanotify_mark         (TARGET_NR_Linux + 296)
-#define TARGET_NR_prlimit64             (TARGET_NR_Linux + 297)
-#define TARGET_NR_name_to_handle_at     (TARGET_NR_Linux + 298)
-#define TARGET_NR_open_by_handle_at     (TARGET_NR_Linux + 299)
-#define TARGET_NR_clock_adjtime         (TARGET_NR_Linux + 300)
-#define TARGET_NR_syncfs                (TARGET_NR_Linux + 301)
-#define TARGET_NR_sendmmsg              (TARGET_NR_Linux + 302)
-#define TARGET_NR_setns                 (TARGET_NR_Linux + 303)
-#define TARGET_NR_process_vm_readv      (TARGET_NR_Linux + 304)
-#define TARGET_NR_process_vm_writev     (TARGET_NR_Linux + 305)
-#define TARGET_NR_kcmp                  (TARGET_NR_Linux + 306)
-#define TARGET_NR_finit_module          (TARGET_NR_Linux + 307)
-#define TARGET_NR_getdents64            (TARGET_NR_Linux + 308)
-#define TARGET_NR_sched_setattr         (TARGET_NR_Linux + 309)
-#define TARGET_NR_sched_getattr         (TARGET_NR_Linux + 310)
-#define TARGET_NR_renameat2             (TARGET_NR_Linux + 311)
-#define TARGET_NR_seccomp               (TARGET_NR_Linux + 312)
-#define TARGET_NR_getrandom             (TARGET_NR_Linux + 313)
-#define TARGET_NR_memfd_create          (TARGET_NR_Linux + 314)
-#define TARGET_NR_bpf                   (TARGET_NR_Linux + 315)
-#define TARGET_NR_execveat              (TARGET_NR_Linux + 316)
-#define TARGET_NR_userfaultfd           (TARGET_NR_Linux + 317)
-#define TARGET_NR_membarrier            (TARGET_NR_Linux + 318)
-#define TARGET_NR_mlock2                (TARGET_NR_Linux + 319)
-#define TARGET_NR_copy_file_range       (TARGET_NR_Linux + 320)
-#define TARGET_NR_preadv2               (TARGET_NR_Linux + 321)
-#define TARGET_NR_pwritev2              (TARGET_NR_Linux + 322)
-#define TARGET_NR_pkey_mprotect         (TARGET_NR_Linux + 323)
-#define TARGET_NR_pkey_alloc            (TARGET_NR_Linux + 324)
-#define TARGET_NR_pkey_free             (TARGET_NR_Linux + 325)
-#define TARGET_NR_statx                 (TARGET_NR_Linux + 326)
-#define TARGET_NR_rseq                  (TARGET_NR_Linux + 327)
-#define TARGET_NR_io_pgetevents         (TARGET_NR_Linux + 328)
-/* 329 through 423 are reserved to sync up with other architectures */
-#define TARGET_NR_pidfd_send_signal     (TARGET_NR_Linux + 424)
-#define TARGET_NR_io_uring_setup        (TARGET_NR_Linux + 425)
-#define TARGET_NR_io_uring_enter        (TARGET_NR_Linux + 426)
-#define TARGET_NR_io_uring_register     (TARGET_NR_Linux + 427)
-#define TARGET_NR_open_tree             (TARGET_NR_Linux + 428)
-#define TARGET_NR_move_mount            (TARGET_NR_Linux + 429)
-#define TARGET_NR_fsopen                (TARGET_NR_Linux + 430)
-#define TARGET_NR_fsconfig              (TARGET_NR_Linux + 431)
-#define TARGET_NR_fsmount               (TARGET_NR_Linux + 432)
-#define TARGET_NR_fspick                (TARGET_NR_Linux + 433)
-#define TARGET_NR_pidfd_open            (TARGET_NR_Linux + 434)
-#define TARGET_NR_clone3                (TARGET_NR_Linux + 435)
-#endif
-
-#endif
diff --git a/linux-user/mips64/syscallhdr.sh b/linux-user/mips64/syscallhdr.sh
new file mode 100644 (file)
index 0000000..ed5a451
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_MIPS64_`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 compat ; 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 */" "${fileguard}"
+    printf "\n"
+) > "$out"
index 8685f02e7e90d6f9bd0c32fc40c9622e1e7c1df2..e37803379747cfdfc905e6a922039cfb72fce9b2 100644 (file)
@@ -184,7 +184,11 @@ static int mmap_frag(abi_ulong real_start,
 }
 
 #if HOST_LONG_BITS == 64 && TARGET_ABI_BITS == 64
+#ifdef TARGET_AARCH64
+# define TASK_UNMAPPED_BASE  0x5500000000
+#else
 # define TASK_UNMAPPED_BASE  (1ul << 38)
+#endif
 #else
 # define TASK_UNMAPPED_BASE  0x40000000
 #endif
index 8fb87864ca0b6fd4c92508c452fa39a684b388b0..32d485dc9ae8453a850ba5d13183e328458e3bec 100644 (file)
+/*
+ * This file contains the system call numbers.
+ * Do not modify.
+ * This file is generated by scripts/gensyscalls.sh
+ */
 #ifndef LINUX_USER_NIOS2_SYSCALL_NR_H
 #define LINUX_USER_NIOS2_SYSCALL_NR_H
 
-#define TARGET_NR_io_setup                  0
-#define TARGET_NR_io_destroy                1
-#define TARGET_NR_io_submit                 2
-#define TARGET_NR_io_cancel                 3
-#define TARGET_NR_io_getevents              4
-#define TARGET_NR_setxattr                  5
-#define TARGET_NR_lsetxattr                 6
-#define TARGET_NR_fsetxattr                 7
-#define TARGET_NR_getxattr                  8
-#define TARGET_NR_lgetxattr                 9
-#define TARGET_NR_fgetxattr                 10
-#define TARGET_NR_listxattr                 11
-#define TARGET_NR_llistxattr                12
-#define TARGET_NR_flistxattr                13
-#define TARGET_NR_removexattr               14
-#define TARGET_NR_lremovexattr              15
-#define TARGET_NR_fremovexattr              16
-#define TARGET_NR_getcwd                    17
-#define TARGET_NR_lookup_dcookie            18
-#define TARGET_NR_eventfd2                  19
-#define TARGET_NR_epoll_create1             20
-#define TARGET_NR_epoll_ctl                 21
-#define TARGET_NR_epoll_pwait               22
-#define TARGET_NR_dup                       23
-#define TARGET_NR_dup3                      24
-#define TARGET_NR_fcntl64                   25
-#define TARGET_NR_inotify_init1             26
-#define TARGET_NR_inotify_add_watch         27
-#define TARGET_NR_inotify_rm_watch          28
-#define TARGET_NR_ioctl                     29
-#define TARGET_NR_ioprio_set                30
-#define TARGET_NR_ioprio_get                31
-#define TARGET_NR_flock                     32
-#define TARGET_NR_mknodat                   33
-#define TARGET_NR_mkdirat                   34
-#define TARGET_NR_unlinkat                  35
-#define TARGET_NR_symlinkat                 36
-#define TARGET_NR_linkat                    37
-#define TARGET_NR_renameat                  38
-#define TARGET_NR_umount2                   39
-#define TARGET_NR_mount                     40
-#define TARGET_NR_pivot_root                41
-#define TARGET_NR_nfsservctl                42
-#define TARGET_NR_statfs64                  43
-#define TARGET_NR_fstatfs64                 44
-#define TARGET_NR_truncate64                45
-#define TARGET_NR_ftruncate64               46
-#define TARGET_NR_fallocate                 47
-#define TARGET_NR_faccessat                 48
-#define TARGET_NR_chdir                     49
-#define TARGET_NR_fchdir                    50
-#define TARGET_NR_chroot                    51
-#define TARGET_NR_fchmod                    52
-#define TARGET_NR_fchmodat                  53
-#define TARGET_NR_fchownat                  54
-#define TARGET_NR_fchown                    55
-#define TARGET_NR_openat                    56
-#define TARGET_NR_close                     57
-#define TARGET_NR_vhangup                   58
-#define TARGET_NR_pipe2                     59
-#define TARGET_NR_quotactl                  60
-#define TARGET_NR_getdents64                61
-#define TARGET_NR_read                      63
-#define TARGET_NR_write                     64
-#define TARGET_NR_readv                     65
-#define TARGET_NR_writev                    66
-#define TARGET_NR_pread64                   67
-#define TARGET_NR_pwrite64                  68
-#define TARGET_NR_preadv                    69
-#define TARGET_NR_pwritev                   70
-#define TARGET_NR_sendfile64                71
-#define TARGET_NR_pselect6                  72
-#define TARGET_NR_ppoll                     73
-#define TARGET_NR_signalfd4                 74
-#define TARGET_NR_vmsplice                  75
-#define TARGET_NR_splice                    76
-#define TARGET_NR_tee                       77
-#define TARGET_NR_readlinkat                78
-#define TARGET_NR_fstatat64                 79
-#define TARGET_NR_fstat64                   80
-#define TARGET_NR_sync                      81
-#define TARGET_NR_fsync                     82
-#define TARGET_NR_fdatasync                 83
-#define TARGET_NR_sync_file_range           84
-#define TARGET_NR_timerfd_create            85
-#define TARGET_NR_timerfd_settime           86
-#define TARGET_NR_timerfd_gettime           87
-#define TARGET_NR_utimensat                 88
-#define TARGET_NR_acct                      89
-#define TARGET_NR_capget                    90
-#define TARGET_NR_capset                    91
-#define TARGET_NR_personality               92
-#define TARGET_NR_exit                      93
-#define TARGET_NR_exit_group                94
-#define TARGET_NR_waitid                    95
-#define TARGET_NR_set_tid_address           96
-#define TARGET_NR_unshare                   97
-#define TARGET_NR_futex                     98
-#define TARGET_NR_set_robust_list           99
-#define TARGET_NR_get_robust_list           100
-#define TARGET_NR_nanosleep                 101
-#define TARGET_NR_getitimer                 102
-#define TARGET_NR_setitimer                 103
-#define TARGET_NR_kexec_load                104
-#define TARGET_NR_init_module               105
-#define TARGET_NR_delete_module             106
-#define TARGET_NR_timer_create              107
-#define TARGET_NR_timer_gettime             108
-#define TARGET_NR_timer_getoverrun          109
-#define TARGET_NR_timer_settime             110
-#define TARGET_NR_timer_delete              111
-#define TARGET_NR_clock_settime             112
-#define TARGET_NR_clock_gettime             113
-#define TARGET_NR_clock_getres              114
-#define TARGET_NR_clock_nanosleep           115
-#define TARGET_NR_syslog                    116
-#define TARGET_NR_ptrace                    117
-#define TARGET_NR_sched_setparam            118
-#define TARGET_NR_sched_setscheduler        119
-#define TARGET_NR_sched_getscheduler        120
-#define TARGET_NR_sched_getparam            121
-#define TARGET_NR_sched_setaffinity         122
-#define TARGET_NR_sched_getaffinity         123
-#define TARGET_NR_sched_yield               124
-#define TARGET_NR_sched_get_priority_max    125
-#define TARGET_NR_sched_get_priority_min    126
-#define TARGET_NR_sched_rr_get_interval     127
-#define TARGET_NR_restart_syscall           128
-#define TARGET_NR_kill                      129
-#define TARGET_NR_tkill                     130
-#define TARGET_NR_tgkill                    131
-#define TARGET_NR_sigaltstack               132
-#define TARGET_NR_rt_sigsuspend             133
-#define TARGET_NR_rt_sigaction              134
-#define TARGET_NR_rt_sigprocmask            135
-#define TARGET_NR_rt_sigpending             136
-#define TARGET_NR_rt_sigtimedwait           137
-#define TARGET_NR_rt_sigqueueinfo           138
-#define TARGET_NR_rt_sigreturn              139
-#define TARGET_NR_setpriority               140
-#define TARGET_NR_getpriority               141
-#define TARGET_NR_reboot                    142
-#define TARGET_NR_setregid                  143
-#define TARGET_NR_setgid                    144
-#define TARGET_NR_setreuid                  145
-#define TARGET_NR_setuid                    146
-#define TARGET_NR_setresuid                 147
-#define TARGET_NR_getresuid                 148
-#define TARGET_NR_setresgid                 149
-#define TARGET_NR_getresgid                 150
-#define TARGET_NR_setfsuid                  151
-#define TARGET_NR_setfsgid                  152
-#define TARGET_NR_times                     153
-#define TARGET_NR_setpgid                   154
-#define TARGET_NR_getpgid                   155
-#define TARGET_NR_getsid                    156
-#define TARGET_NR_setsid                    157
-#define TARGET_NR_getgroups                 158
-#define TARGET_NR_setgroups                 159
-#define TARGET_NR_uname                     160
-#define TARGET_NR_sethostname               161
-#define TARGET_NR_setdomainname             162
-#define TARGET_NR_getrlimit                 163
-#define TARGET_NR_setrlimit                 164
-#define TARGET_NR_getrusage                 165
-#define TARGET_NR_umask                     166
-#define TARGET_NR_prctl                     167
-#define TARGET_NR_getcpu                    168
-#define TARGET_NR_gettimeofday              169
-#define TARGET_NR_settimeofday              170
-#define TARGET_NR_adjtimex                  171
-#define TARGET_NR_getpid                    172
-#define TARGET_NR_getppid                   173
-#define TARGET_NR_getuid                    174
-#define TARGET_NR_geteuid                   175
-#define TARGET_NR_getgid                    176
-#define TARGET_NR_getegid                   177
-#define TARGET_NR_gettid                    178
-#define TARGET_NR_sysinfo                   179
-#define TARGET_NR_mq_open                   180
-#define TARGET_NR_mq_unlink                 181
-#define TARGET_NR_mq_timedsend              182
-#define TARGET_NR_mq_timedreceive           183
-#define TARGET_NR_mq_notify                 184
-#define TARGET_NR_mq_getsetattr             185
-#define TARGET_NR_msgget                    186
-#define TARGET_NR_msgctl                    187
-#define TARGET_NR_msgrcv                    188
-#define TARGET_NR_msgsnd                    189
-#define TARGET_NR_semget                    190
-#define TARGET_NR_semctl                    191
-#define TARGET_NR_semtimedop                192
-#define TARGET_NR_semop                     193
-#define TARGET_NR_shmget                    194
-#define TARGET_NR_shmctl                    195
-#define TARGET_NR_shmat                     196
-#define TARGET_NR_shmdt                     197
-#define TARGET_NR_socket                    198
-#define TARGET_NR_socketpair                199
-#define TARGET_NR_bind                      200
-#define TARGET_NR_listen                    201
-#define TARGET_NR_accept                    202
-#define TARGET_NR_connect                   203
-#define TARGET_NR_getsockname               204
-#define TARGET_NR_getpeername               205
-#define TARGET_NR_sendto                    206
-#define TARGET_NR_recvfrom                  207
-#define TARGET_NR_setsockopt                208
-#define TARGET_NR_getsockopt                209
-#define TARGET_NR_shutdown                  210
-#define TARGET_NR_sendmsg                   211
-#define TARGET_NR_recvmsg                   212
-#define TARGET_NR_readahead                 213
-#define TARGET_NR_brk                       214
-#define TARGET_NR_munmap                    215
-#define TARGET_NR_mremap                    216
-#define TARGET_NR_add_key                   217
-#define TARGET_NR_request_key               218
-#define TARGET_NR_keyctl                    219
-#define TARGET_NR_clone                     220
-#define TARGET_NR_execve                    221
-#define TARGET_NR_mmap2                     222
-#define TARGET_NR_fadvise64_64              223
-#define TARGET_NR_swapon                    224
-#define TARGET_NR_swapoff                   225
-#define TARGET_NR_mprotect                  226
-#define TARGET_NR_msync                     227
-#define TARGET_NR_mlock                     228
-#define TARGET_NR_munlock                   229
-#define TARGET_NR_mlockall                  230
-#define TARGET_NR_munlockall                231
-#define TARGET_NR_mincore                   232
-#define TARGET_NR_madvise                   233
-#define TARGET_NR_remap_file_pages          234
-#define TARGET_NR_mbind                     235
-#define TARGET_NR_get_mempolicy             236
-#define TARGET_NR_set_mempolicy             237
-#define TARGET_NR_migrate_pages             238
-#define TARGET_NR_move_pages                239
-#define TARGET_NR_rt_tgsigqueueinfo         240
-#define TARGET_NR_perf_event_open           241
-#define TARGET_NR_accept4                   242
-#define TARGET_NR_recvmmsg                  243
-#define TARGET_NR_cacheflush                244
-#define TARGET_NR_arch_specific_syscall     244
-#define TARGET_NR_wait4                     260
-#define TARGET_NR_prlimit64                 261
-#define TARGET_NR_fanotify_init             262
-#define TARGET_NR_fanotify_mark             263
-#define TARGET_NR_name_to_handle_at         264
-#define TARGET_NR_open_by_handle_at         265
-#define TARGET_NR_clock_adjtime             266
-#define TARGET_NR_syncfs                    267
-#define TARGET_NR_setns                     268
-#define TARGET_NR_sendmmsg                  269
-#define TARGET_NR_process_vm_readv          270
-#define TARGET_NR_process_vm_writev         271
-#define TARGET_NR_kcmp                      272
-#define TARGET_NR_finit_module              273
-#define TARGET_NR_sched_setattr             274
-#define TARGET_NR_sched_getattr             275
-#define TARGET_NR_renameat2                 276
-#define TARGET_NR_seccomp                   277
-#define TARGET_NR_getrandom                 278
-#define TARGET_NR_memfd_create              279
-#define TARGET_NR_bpf                       280
-#define TARGET_NR_execveat                  281
-#define TARGET_NR_userfaultfd               282
-#define TARGET_NR_membarrier                283
-#define TARGET_NR_mlock2                    284
-#define TARGET_NR_copy_file_range           285
-#define TARGET_NR_preadv2                   286
-#define TARGET_NR_pwritev2                  287
-#define TARGET_NR_open                      1024
-#define TARGET_NR_link                      1025
-#define TARGET_NR_unlink                    1026
-#define TARGET_NR_mknod                     1027
-#define TARGET_NR_chmod                     1028
-#define TARGET_NR_chown                     1029
-#define TARGET_NR_mkdir                     1030
-#define TARGET_NR_rmdir                     1031
-#define TARGET_NR_lchown                    1032
-#define TARGET_NR_access                    1033
-#define TARGET_NR_rename                    1034
-#define TARGET_NR_readlink                  1035
-#define TARGET_NR_symlink                   1036
-#define TARGET_NR_utimes                    1037
-#define TARGET_NR_3264_stat                 1038
-#define TARGET_NR_3264_lstat                1039
-#define TARGET_NR_pipe                      1040
-#define TARGET_NR_dup2                      1041
-#define TARGET_NR_epoll_create              1042
-#define TARGET_NR_inotify_init              1043
-#define TARGET_NR_eventfd                   1044
-#define TARGET_NR_signalfd                  1045
-#define TARGET_NR_sendfile                  1046
-#define TARGET_NR_ftruncate                 1047
-#define TARGET_NR_truncate                  1048
-#define TARGET_NR_stat                      1049
-#define TARGET_NR_lstat                     1050
-#define TARGET_NR_fstat                     1051
-#define TARGET_NR_fcntl                     1052
-#define TARGET_NR_fadvise64                 1053
-#define TARGET_NR_newfstatat                1054
-#define TARGET_NR_fstatfs                   1055
-#define TARGET_NR_statfs                    1056
-#define TARGET_NR_lseek                     1057
-#define TARGET_NR_mmap                      1058
-#define TARGET_NR_alarm                     1059
-#define TARGET_NR_getpgrp                   1060
-#define TARGET_NR_pause                     1061
-#define TARGET_NR_time                      1062
-#define TARGET_NR_utime                     1063
-#define TARGET_NR_creat                     1064
-#define TARGET_NR_getdents                  1065
-#define TARGET_NR_futimesat                 1066
-#define TARGET_NR_select                    1067
-#define TARGET_NR_poll                      1068
-#define TARGET_NR_epoll_wait                1069
-#define TARGET_NR_ustat                     1070
-#define TARGET_NR_vfork                     1071
-#define TARGET_NR_oldwait4                  1072
-#define TARGET_NR_recv                      1073
-#define TARGET_NR_send                      1074
-#define TARGET_NR_bdflush                   1075
-#define TARGET_NR_umount                    1076
-#define TARGET_NR_uselib                    1077
-#define TARGET_NR__sysctl                   1078
-#define TARGET_NR_fork                      1079
+#define TARGET_NR_cacheflush (TARGET_NR_arch_specific_syscall)
+#define TARGET_NR_io_setup 0
+#define TARGET_NR_io_destroy 1
+#define TARGET_NR_io_submit 2
+#define TARGET_NR_io_cancel 3
+#define TARGET_NR_io_getevents 4
+#define TARGET_NR_setxattr 5
+#define TARGET_NR_lsetxattr 6
+#define TARGET_NR_fsetxattr 7
+#define TARGET_NR_getxattr 8
+#define TARGET_NR_lgetxattr 9
+#define TARGET_NR_fgetxattr 10
+#define TARGET_NR_listxattr 11
+#define TARGET_NR_llistxattr 12
+#define TARGET_NR_flistxattr 13
+#define TARGET_NR_removexattr 14
+#define TARGET_NR_lremovexattr 15
+#define TARGET_NR_fremovexattr 16
+#define TARGET_NR_getcwd 17
+#define TARGET_NR_lookup_dcookie 18
+#define TARGET_NR_eventfd2 19
+#define TARGET_NR_epoll_create1 20
+#define TARGET_NR_epoll_ctl 21
+#define TARGET_NR_epoll_pwait 22
+#define TARGET_NR_dup 23
+#define TARGET_NR_dup3 24
+#define TARGET_NR_fcntl64 25
+#define TARGET_NR_inotify_init1 26
+#define TARGET_NR_inotify_add_watch 27
+#define TARGET_NR_inotify_rm_watch 28
+#define TARGET_NR_ioctl 29
+#define TARGET_NR_ioprio_set 30
+#define TARGET_NR_ioprio_get 31
+#define TARGET_NR_flock 32
+#define TARGET_NR_mknodat 33
+#define TARGET_NR_mkdirat 34
+#define TARGET_NR_unlinkat 35
+#define TARGET_NR_symlinkat 36
+#define TARGET_NR_linkat 37
+#define TARGET_NR_renameat 38
+#define TARGET_NR_umount2 39
+#define TARGET_NR_mount 40
+#define TARGET_NR_pivot_root 41
+#define TARGET_NR_nfsservctl 42
+#define TARGET_NR_statfs64 43
+#define TARGET_NR_fstatfs64 44
+#define TARGET_NR_truncate64 45
+#define TARGET_NR_ftruncate64 46
+#define TARGET_NR_fallocate 47
+#define TARGET_NR_faccessat 48
+#define TARGET_NR_chdir 49
+#define TARGET_NR_fchdir 50
+#define TARGET_NR_chroot 51
+#define TARGET_NR_fchmod 52
+#define TARGET_NR_fchmodat 53
+#define TARGET_NR_fchownat 54
+#define TARGET_NR_fchown 55
+#define TARGET_NR_openat 56
+#define TARGET_NR_close 57
+#define TARGET_NR_vhangup 58
+#define TARGET_NR_pipe2 59
+#define TARGET_NR_quotactl 60
+#define TARGET_NR_getdents64 61
+#define TARGET_NR_llseek 62
+#define TARGET_NR_read 63
+#define TARGET_NR_write 64
+#define TARGET_NR_readv 65
+#define TARGET_NR_writev 66
+#define TARGET_NR_pread64 67
+#define TARGET_NR_pwrite64 68
+#define TARGET_NR_preadv 69
+#define TARGET_NR_pwritev 70
+#define TARGET_NR_sendfile64 71
+#define TARGET_NR_pselect6 72
+#define TARGET_NR_ppoll 73
+#define TARGET_NR_signalfd4 74
+#define TARGET_NR_vmsplice 75
+#define TARGET_NR_splice 76
+#define TARGET_NR_tee 77
+#define TARGET_NR_readlinkat 78
+#define TARGET_NR_fstatat64 79
+#define TARGET_NR_fstat64 80
+#define TARGET_NR_sync 81
+#define TARGET_NR_fsync 82
+#define TARGET_NR_fdatasync 83
+#define TARGET_NR_sync_file_range 84
+#define TARGET_NR_timerfd_create 85
+#define TARGET_NR_timerfd_settime 86
+#define TARGET_NR_timerfd_gettime 87
+#define TARGET_NR_utimensat 88
+#define TARGET_NR_acct 89
+#define TARGET_NR_capget 90
+#define TARGET_NR_capset 91
+#define TARGET_NR_personality 92
+#define TARGET_NR_exit 93
+#define TARGET_NR_exit_group 94
+#define TARGET_NR_waitid 95
+#define TARGET_NR_set_tid_address 96
+#define TARGET_NR_unshare 97
+#define TARGET_NR_futex 98
+#define TARGET_NR_set_robust_list 99
+#define TARGET_NR_get_robust_list 100
+#define TARGET_NR_nanosleep 101
+#define TARGET_NR_getitimer 102
+#define TARGET_NR_setitimer 103
+#define TARGET_NR_kexec_load 104
+#define TARGET_NR_init_module 105
+#define TARGET_NR_delete_module 106
+#define TARGET_NR_timer_create 107
+#define TARGET_NR_timer_gettime 108
+#define TARGET_NR_timer_getoverrun 109
+#define TARGET_NR_timer_settime 110
+#define TARGET_NR_timer_delete 111
+#define TARGET_NR_clock_settime 112
+#define TARGET_NR_clock_gettime 113
+#define TARGET_NR_clock_getres 114
+#define TARGET_NR_clock_nanosleep 115
+#define TARGET_NR_syslog 116
+#define TARGET_NR_ptrace 117
+#define TARGET_NR_sched_setparam 118
+#define TARGET_NR_sched_setscheduler 119
+#define TARGET_NR_sched_getscheduler 120
+#define TARGET_NR_sched_getparam 121
+#define TARGET_NR_sched_setaffinity 122
+#define TARGET_NR_sched_getaffinity 123
+#define TARGET_NR_sched_yield 124
+#define TARGET_NR_sched_get_priority_max 125
+#define TARGET_NR_sched_get_priority_min 126
+#define TARGET_NR_sched_rr_get_interval 127
+#define TARGET_NR_restart_syscall 128
+#define TARGET_NR_kill 129
+#define TARGET_NR_tkill 130
+#define TARGET_NR_tgkill 131
+#define TARGET_NR_sigaltstack 132
+#define TARGET_NR_rt_sigsuspend 133
+#define TARGET_NR_rt_sigaction 134
+#define TARGET_NR_rt_sigprocmask 135
+#define TARGET_NR_rt_sigpending 136
+#define TARGET_NR_rt_sigtimedwait 137
+#define TARGET_NR_rt_sigqueueinfo 138
+#define TARGET_NR_rt_sigreturn 139
+#define TARGET_NR_setpriority 140
+#define TARGET_NR_getpriority 141
+#define TARGET_NR_reboot 142
+#define TARGET_NR_setregid 143
+#define TARGET_NR_setgid 144
+#define TARGET_NR_setreuid 145
+#define TARGET_NR_setuid 146
+#define TARGET_NR_setresuid 147
+#define TARGET_NR_getresuid 148
+#define TARGET_NR_setresgid 149
+#define TARGET_NR_getresgid 150
+#define TARGET_NR_setfsuid 151
+#define TARGET_NR_setfsgid 152
+#define TARGET_NR_times 153
+#define TARGET_NR_setpgid 154
+#define TARGET_NR_getpgid 155
+#define TARGET_NR_getsid 156
+#define TARGET_NR_setsid 157
+#define TARGET_NR_getgroups 158
+#define TARGET_NR_setgroups 159
+#define TARGET_NR_uname 160
+#define TARGET_NR_sethostname 161
+#define TARGET_NR_setdomainname 162
+#define TARGET_NR_getrlimit 163
+#define TARGET_NR_setrlimit 164
+#define TARGET_NR_getrusage 165
+#define TARGET_NR_umask 166
+#define TARGET_NR_prctl 167
+#define TARGET_NR_getcpu 168
+#define TARGET_NR_gettimeofday 169
+#define TARGET_NR_settimeofday 170
+#define TARGET_NR_adjtimex 171
+#define TARGET_NR_getpid 172
+#define TARGET_NR_getppid 173
+#define TARGET_NR_getuid 174
+#define TARGET_NR_geteuid 175
+#define TARGET_NR_getgid 176
+#define TARGET_NR_getegid 177
+#define TARGET_NR_gettid 178
+#define TARGET_NR_sysinfo 179
+#define TARGET_NR_mq_open 180
+#define TARGET_NR_mq_unlink 181
+#define TARGET_NR_mq_timedsend 182
+#define TARGET_NR_mq_timedreceive 183
+#define TARGET_NR_mq_notify 184
+#define TARGET_NR_mq_getsetattr 185
+#define TARGET_NR_msgget 186
+#define TARGET_NR_msgctl 187
+#define TARGET_NR_msgrcv 188
+#define TARGET_NR_msgsnd 189
+#define TARGET_NR_semget 190
+#define TARGET_NR_semctl 191
+#define TARGET_NR_semtimedop 192
+#define TARGET_NR_semop 193
+#define TARGET_NR_shmget 194
+#define TARGET_NR_shmctl 195
+#define TARGET_NR_shmat 196
+#define TARGET_NR_shmdt 197
+#define TARGET_NR_socket 198
+#define TARGET_NR_socketpair 199
+#define TARGET_NR_bind 200
+#define TARGET_NR_listen 201
+#define TARGET_NR_accept 202
+#define TARGET_NR_connect 203
+#define TARGET_NR_getsockname 204
+#define TARGET_NR_getpeername 205
+#define TARGET_NR_sendto 206
+#define TARGET_NR_recvfrom 207
+#define TARGET_NR_setsockopt 208
+#define TARGET_NR_getsockopt 209
+#define TARGET_NR_shutdown 210
+#define TARGET_NR_sendmsg 211
+#define TARGET_NR_recvmsg 212
+#define TARGET_NR_readahead 213
+#define TARGET_NR_brk 214
+#define TARGET_NR_munmap 215
+#define TARGET_NR_mremap 216
+#define TARGET_NR_add_key 217
+#define TARGET_NR_request_key 218
+#define TARGET_NR_keyctl 219
+#define TARGET_NR_clone 220
+#define TARGET_NR_execve 221
+#define TARGET_NR_mmap2 222
+#define TARGET_NR_fadvise64_64 223
+#define TARGET_NR_swapon 224
+#define TARGET_NR_swapoff 225
+#define TARGET_NR_mprotect 226
+#define TARGET_NR_msync 227
+#define TARGET_NR_mlock 228
+#define TARGET_NR_munlock 229
+#define TARGET_NR_mlockall 230
+#define TARGET_NR_munlockall 231
+#define TARGET_NR_mincore 232
+#define TARGET_NR_madvise 233
+#define TARGET_NR_remap_file_pages 234
+#define TARGET_NR_mbind 235
+#define TARGET_NR_get_mempolicy 236
+#define TARGET_NR_set_mempolicy 237
+#define TARGET_NR_migrate_pages 238
+#define TARGET_NR_move_pages 239
+#define TARGET_NR_rt_tgsigqueueinfo 240
+#define TARGET_NR_perf_event_open 241
+#define TARGET_NR_accept4 242
+#define TARGET_NR_recvmmsg 243
+#define TARGET_NR_arch_specific_syscall 244
+#define TARGET_NR_wait4 260
+#define TARGET_NR_prlimit64 261
+#define TARGET_NR_fanotify_init 262
+#define TARGET_NR_fanotify_mark 263
+#define TARGET_NR_name_to_handle_at 264
+#define TARGET_NR_open_by_handle_at 265
+#define TARGET_NR_clock_adjtime 266
+#define TARGET_NR_syncfs 267
+#define TARGET_NR_setns 268
+#define TARGET_NR_sendmmsg 269
+#define TARGET_NR_process_vm_readv 270
+#define TARGET_NR_process_vm_writev 271
+#define TARGET_NR_kcmp 272
+#define TARGET_NR_finit_module 273
+#define TARGET_NR_sched_setattr 274
+#define TARGET_NR_sched_getattr 275
+#define TARGET_NR_renameat2 276
+#define TARGET_NR_seccomp 277
+#define TARGET_NR_getrandom 278
+#define TARGET_NR_memfd_create 279
+#define TARGET_NR_bpf 280
+#define TARGET_NR_execveat 281
+#define TARGET_NR_userfaultfd 282
+#define TARGET_NR_membarrier 283
+#define TARGET_NR_mlock2 284
+#define TARGET_NR_copy_file_range 285
+#define TARGET_NR_preadv2 286
+#define TARGET_NR_pwritev2 287
+#define TARGET_NR_pkey_mprotect 288
+#define TARGET_NR_pkey_alloc 289
+#define TARGET_NR_pkey_free 290
+#define TARGET_NR_statx 291
+#define TARGET_NR_io_pgetevents 292
+#define TARGET_NR_rseq 293
+#define TARGET_NR_kexec_file_load 294
+#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_syscalls 436
+
+#endif /* LINUX_USER_NIOS2_SYSCALL_NR_H */
 
-#endif
index 7763dbcfd8b3f3813db364a4535b963b54f441d4..340383beb2c662c120a8fc586205939e8675752f 100644 (file)
@@ -1,13 +1,17 @@
+/*
+ * This file contains the system call numbers.
+ * Do not modify.
+ * This file is generated by scripts/gensyscalls.sh
+ */
 #ifndef LINUX_USER_OPENRISC_SYSCALL_NR_H
 #define LINUX_USER_OPENRISC_SYSCALL_NR_H
 
 #define TARGET_NR_io_setup 0
+#define TARGET_NR_or1k_atomic TARGET_NR_arch_specific_syscall
 #define TARGET_NR_io_destroy 1
 #define TARGET_NR_io_submit 2
 #define TARGET_NR_io_cancel 3
 #define TARGET_NR_io_getevents 4
-
-/* fs/xattr.c */
 #define TARGET_NR_setxattr 5
 #define TARGET_NR_lsetxattr 6
 #define TARGET_NR_fsetxattr 7
 #define TARGET_NR_removexattr 14
 #define TARGET_NR_lremovexattr 15
 #define TARGET_NR_fremovexattr 16
-
-/* fs/dcache.c */
 #define TARGET_NR_getcwd 17
-
-/* fs/cookies.c */
 #define TARGET_NR_lookup_dcookie 18
-
-/* fs/eventfd.c */
 #define TARGET_NR_eventfd2 19
-
-/* fs/eventpoll.c */
 #define TARGET_NR_epoll_create1 20
 #define TARGET_NR_epoll_ctl 21
 #define TARGET_NR_epoll_pwait 22
-
-/* fs/fcntl.c */
 #define TARGET_NR_dup 23
 #define TARGET_NR_dup3 24
-#define TARGET_NR_3264_fcntl 25
-
-/* fs/inotify_user.c */
+#define TARGET_NR_fcntl64 25
 #define TARGET_NR_inotify_init1 26
 #define TARGET_NR_inotify_add_watch 27
 #define TARGET_NR_inotify_rm_watch 28
-
-/* fs/ioctl.c */
 #define TARGET_NR_ioctl 29
-
-/* fs/ioprio.c */
 #define TARGET_NR_ioprio_set 30
 #define TARGET_NR_ioprio_get 31
-
-/* fs/locks.c */
 #define TARGET_NR_flock 32
-
-/* fs/namei.c */
 #define TARGET_NR_mknodat 33
 #define TARGET_NR_mkdirat 34
 #define TARGET_NR_unlinkat 35
 #define TARGET_NR_symlinkat 36
 #define TARGET_NR_linkat 37
 #define TARGET_NR_renameat 38
-
-/* fs/namespace.c */
 #define TARGET_NR_umount2 39
 #define TARGET_NR_mount 40
 #define TARGET_NR_pivot_root 41
-
-/* fs/nfsctl.c */
 #define TARGET_NR_nfsservctl 42
-
-/* fs/open.c */
-#define TARGET_NR_3264_statfs 43
-#define TARGET_NR_3264_fstatfs 44
-#define TARGET_NR_3264_truncate 45
-#define TARGET_NR_3264_ftruncate 46
-
+#define TARGET_NR_statfs64 43
+#define TARGET_NR_fstatfs64 44
+#define TARGET_NR_truncate64 45
+#define TARGET_NR_ftruncate64 46
 #define TARGET_NR_fallocate 47
 #define TARGET_NR_faccessat 48
 #define TARGET_NR_chdir 49
 #define TARGET_NR_openat 56
 #define TARGET_NR_close 57
 #define TARGET_NR_vhangup 58
-
-/* fs/pipe.c */
 #define TARGET_NR_pipe2 59
-
-/* fs/quota.c */
 #define TARGET_NR_quotactl 60
-
-/* fs/readdir.c */
 #define TARGET_NR_getdents64 61
-
-/* fs/read_write.c */
-#define TARGET_NR_3264_lseek 62
+#define TARGET_NR_llseek 62
 #define TARGET_NR_read 63
 #define TARGET_NR_write 64
 #define TARGET_NR_readv 65
 #define TARGET_NR_pwrite64 68
 #define TARGET_NR_preadv 69
 #define TARGET_NR_pwritev 70
-
-/* fs/sendfile.c */
-#define TARGET_NR_3264_sendfile 71
-
-/* fs/select.c */
+#define TARGET_NR_sendfile64 71
 #define TARGET_NR_pselect6 72
 #define TARGET_NR_ppoll 73
-
-/* fs/signalfd.c */
 #define TARGET_NR_signalfd4 74
-
-/* fs/splice.c */
 #define TARGET_NR_vmsplice 75
 #define TARGET_NR_splice 76
 #define TARGET_NR_tee 77
-
-/* fs/stat.c */
 #define TARGET_NR_readlinkat 78
-#define TARGET_NR_3264_fstatat 79
-#define TARGET_NR_3264_fstat 80
-
-/* fs/sync.c */
+#define TARGET_NR_fstatat64 79
+#define TARGET_NR_fstat64 80
 #define TARGET_NR_sync 81
 #define TARGET_NR_fsync 82
 #define TARGET_NR_fdatasync 83
-
-#ifdef __ARCH_WANT_SYNC_FILE_RANGE2
-#define TARGET_NR_sync_file_range2 84
-#else
 #define TARGET_NR_sync_file_range 84
-#endif
-
-/* fs/timerfd.c */
 #define TARGET_NR_timerfd_create 85
 #define TARGET_NR_timerfd_settime 86
 #define TARGET_NR_timerfd_gettime 87
-
-/* fs/utimes.c */
 #define TARGET_NR_utimensat 88
-
-/* kernel/acct.c */
 #define TARGET_NR_acct 89
-
-/* kernel/capability.c */
 #define TARGET_NR_capget 90
 #define TARGET_NR_capset 91
-
-/* kernel/exec_domain.c */
 #define TARGET_NR_personality 92
-
-/* kernel/exit.c */
 #define TARGET_NR_exit 93
 #define TARGET_NR_exit_group 94
 #define TARGET_NR_waitid 95
-
-/* kernel/fork.c */
 #define TARGET_NR_set_tid_address 96
 #define TARGET_NR_unshare 97
-
-/* kernel/futex.c */
 #define TARGET_NR_futex 98
 #define TARGET_NR_set_robust_list 99
 #define TARGET_NR_get_robust_list 100
-
-/* kernel/hrtimer.c */
 #define TARGET_NR_nanosleep 101
-
-/* kernel/itimer.c */
 #define TARGET_NR_getitimer 102
 #define TARGET_NR_setitimer 103
-
-/* kernel/kexec.c */
 #define TARGET_NR_kexec_load 104
-
-/* kernel/module.c */
 #define TARGET_NR_init_module 105
 #define TARGET_NR_delete_module 106
-
-/* kernel/posix-timers.c */
 #define TARGET_NR_timer_create 107
 #define TARGET_NR_timer_gettime 108
 #define TARGET_NR_timer_getoverrun 109
 #define TARGET_NR_clock_gettime 113
 #define TARGET_NR_clock_getres 114
 #define TARGET_NR_clock_nanosleep 115
-
-/* kernel/printk.c */
 #define TARGET_NR_syslog 116
-
-/* kernel/ptrace.c */
 #define TARGET_NR_ptrace 117
-
-/* kernel/sched.c */
 #define TARGET_NR_sched_setparam 118
 #define TARGET_NR_sched_setscheduler 119
 #define TARGET_NR_sched_getscheduler 120
 #define TARGET_NR_sched_get_priority_max 125
 #define TARGET_NR_sched_get_priority_min 126
 #define TARGET_NR_sched_rr_get_interval 127
-
-/* kernel/signal.c */
 #define TARGET_NR_restart_syscall 128
 #define TARGET_NR_kill 129
 #define TARGET_NR_tkill 130
 #define TARGET_NR_rt_sigtimedwait 137
 #define TARGET_NR_rt_sigqueueinfo 138
 #define TARGET_NR_rt_sigreturn 139
-
-/* kernel/sys.c */
 #define TARGET_NR_setpriority 140
 #define TARGET_NR_getpriority 141
 #define TARGET_NR_reboot 142
 #define TARGET_NR_umask 166
 #define TARGET_NR_prctl 167
 #define TARGET_NR_getcpu 168
-
-/* kernel/time.c */
 #define TARGET_NR_gettimeofday 169
 #define TARGET_NR_settimeofday 170
 #define TARGET_NR_adjtimex 171
-
-/* kernel/timer.c */
 #define TARGET_NR_getpid 172
 #define TARGET_NR_getppid 173
 #define TARGET_NR_getuid 174
 #define TARGET_NR_getegid 177
 #define TARGET_NR_gettid 178
 #define TARGET_NR_sysinfo 179
-
-/* ipc/mqueue.c */
 #define TARGET_NR_mq_open 180
 #define TARGET_NR_mq_unlink 181
 #define TARGET_NR_mq_timedsend 182
 #define TARGET_NR_mq_timedreceive 183
 #define TARGET_NR_mq_notify 184
 #define TARGET_NR_mq_getsetattr 185
-
-/* ipc/msg.c */
 #define TARGET_NR_msgget 186
 #define TARGET_NR_msgctl 187
 #define TARGET_NR_msgrcv 188
 #define TARGET_NR_msgsnd 189
-
-/* ipc/sem.c */
 #define TARGET_NR_semget 190
 #define TARGET_NR_semctl 191
 #define TARGET_NR_semtimedop 192
 #define TARGET_NR_semop 193
-
-/* ipc/shm.c */
 #define TARGET_NR_shmget 194
 #define TARGET_NR_shmctl 195
 #define TARGET_NR_shmat 196
 #define TARGET_NR_shmdt 197
-
-/* net/socket.c */
 #define TARGET_NR_socket 198
 #define TARGET_NR_socketpair 199
 #define TARGET_NR_bind 200
 #define TARGET_NR_shutdown 210
 #define TARGET_NR_sendmsg 211
 #define TARGET_NR_recvmsg 212
-
-/* mm/filemap.c */
 #define TARGET_NR_readahead 213
-
-/* mm/nommu.c, also with MMU */
 #define TARGET_NR_brk 214
 #define TARGET_NR_munmap 215
 #define TARGET_NR_mremap 216
-
-/* security/keys/keyctl.c */
 #define TARGET_NR_add_key 217
 #define TARGET_NR_request_key 218
 #define TARGET_NR_keyctl 219
-
-/* arch/example/kernel/sys_example.c */
 #define TARGET_NR_clone 220
 #define TARGET_NR_execve 221
-
-#define TARGET_NR_3264_mmap 222
-/* mm/fadvise.c */
-#define TARGET_NR_3264_fadvise64 223
-
-/* mm/, CONFIG_MMU only */
-#ifndef __ARCH_NOMMU
+#define TARGET_NR_mmap2 222
+#define TARGET_NR_fadvise64_64 223
 #define TARGET_NR_swapon 224
 #define TARGET_NR_swapoff 225
 #define TARGET_NR_mprotect 226
 #define TARGET_NR_set_mempolicy 237
 #define TARGET_NR_migrate_pages 238
 #define TARGET_NR_move_pages 239
-#endif
-
 #define TARGET_NR_rt_tgsigqueueinfo 240
 #define TARGET_NR_perf_event_open 241
 #define TARGET_NR_accept4 242
 #define TARGET_NR_recvmmsg 243
-
-/*
- * Architectures may provide up to 16 syscalls of their own
- * starting with this value.
- */
 #define TARGET_NR_arch_specific_syscall 244
-
 #define TARGET_NR_wait4 260
 #define TARGET_NR_prlimit64 261
 #define TARGET_NR_fanotify_init 262
 #define TARGET_NR_fanotify_mark 263
-#define TARGET_NR_name_to_handle_at         264
-#define TARGET_NR_open_by_handle_at         265
+#define TARGET_NR_name_to_handle_at 264
+#define TARGET_NR_open_by_handle_at 265
 #define TARGET_NR_clock_adjtime 266
 #define TARGET_NR_syncfs 267
 #define TARGET_NR_setns 268
 #define TARGET_NR_membarrier 283
 #define TARGET_NR_mlock2 284
 #define TARGET_NR_copy_file_range 285
+#define TARGET_NR_preadv2 286
+#define TARGET_NR_pwritev2 287
+#define TARGET_NR_pkey_mprotect 288
+#define TARGET_NR_pkey_alloc 289
+#define TARGET_NR_pkey_free 290
+#define TARGET_NR_statx 291
+#define TARGET_NR_io_pgetevents 292
+#define TARGET_NR_rseq 293
+#define TARGET_NR_kexec_file_load 294
+#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_syscalls 436
+
+#endif /* LINUX_USER_OPENRISC_SYSCALL_NR_H */
 
-/*
- * All syscalls below here should go away really,
- * these are provided for both review and as a porting
- * help for the C library version.
-*
- * Last chance: are any of these important enough to
- * enable by default?
- */
-#define TARGET_NR_open 1024
-#define TARGET_NR_link 1025
-#define TARGET_NR_unlink 1026
-#define TARGET_NR_mknod 1027
-#define TARGET_NR_chmod 1028
-#define TARGET_NR_chown 1029
-#define TARGET_NR_mkdir 1030
-#define TARGET_NR_rmdir 1031
-#define TARGET_NR_lchown 1032
-#define TARGET_NR_access 1033
-#define TARGET_NR_rename 1034
-#define TARGET_NR_readlink 1035
-#define TARGET_NR_symlink 1036
-#define TARGET_NR_utimes 1037
-#define TARGET_NR_3264_stat 1038
-#define TARGET_NR_3264_lstat 1039
-
-#define TARGET_NR_pipe 1040
-#define TARGET_NR_dup2 1041
-#define TARGET_NR_epoll_create 1042
-#define TARGET_NR_inotify_init 1043
-#define TARGET_NR_eventfd 1044
-#define TARGET_NR_signalfd 1045
-
-#define TARGET_NR_sendfile 1046
-#define TARGET_NR_ftruncate 1047
-#define TARGET_NR_truncate 1048
-#define TARGET_NR_stat 1049
-#define TARGET_NR_lstat 1050
-#define TARGET_NR_fstat 1051
-#define TARGET_NR_fcntl 1052
-#define TARGET_NR_fadvise64 1053
-#define __ARCH_WANT_SYS_FADVISE64
-#define TARGET_NR_newfstatat 1054
-#define __ARCH_WANT_SYS_NEWFSTATAT
-#define TARGET_NR_fstatfs 1055
-#define TARGET_NR_statfs 1056
-#define TARGET_NR_lseek 1057
-#define TARGET_NR_mmap 1058
-
-#define TARGET_NR_alarm 1059
-#define __ARCH_WANT_SYS_ALARM
-#define TARGET_NR_getpgrp 1060
-#define __ARCH_WANT_SYS_GETPGRP
-#define TARGET_NR_pause 1061
-#define __ARCH_WANT_SYS_PAUSE
-#define TARGET_NR_time 1062
-#define __ARCH_WANT_SYS_TIME
-#define __ARCH_WANT_COMPAT_SYS_TIME
-#define TARGET_NR_utime 1063
-#define __ARCH_WANT_SYS_UTIME
-
-#define TARGET_NR_creat 1064
-#define TARGET_NR_getdents 1065
-#define __ARCH_WANT_SYS_GETDENTS
-#define TARGET_NR_futimesat 1066
-#define TARGET_NR_poll 1068
-#define TARGET_NR_epoll_wait 1069
-#define TARGET_NR_ustat 1070
-#define TARGET_NR_vfork 1071
-#define TARGET_NR_oldwait4 1072
-#define TARGET_NR_recv 1073
-#define TARGET_NR_send 1074
-#define TARGET_NR_bdflush 1075
-#define TARGET_NR_umount 1076
-#define __ARCH_WANT_SYS_OLDUMOUNT
-#define TARGET_NR_uselib 1077
-#define TARGET_NR__sysctl 1078
-
-#define TARGET_NR_fork 1079
-
-
-/*
- * 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.
- */
-
-#define TARGET_NR_fcntl64 TARGET_NR_3264_fcntl
-#define TARGET_NR_statfs64 TARGET_NR_3264_statfs
-#define TARGET_NR_fstatfs64 TARGET_NR_3264_fstatfs
-#define TARGET_NR_truncate64 TARGET_NR_3264_truncate
-#define TARGET_NR_ftruncate64 TARGET_NR_3264_ftruncate
-#define TARGET_NR_llseek TARGET_NR_3264_lseek
-#define TARGET_NR_sendfile64 TARGET_NR_3264_sendfile
-#define TARGET_NR_fstatat64 TARGET_NR_3264_fstatat
-#define TARGET_NR_fstat64 TARGET_NR_3264_fstat
-#define TARGET_NR_mmap2 TARGET_NR_3264_mmap
-#define TARGET_NR_fadvise64_64 TARGET_NR_3264_fadvise64
-
-#ifdef TARGET_NR_3264_stat
-#define TARGET_NR_stat64 TARGET_NR_3264_stat
-#define TARGET_NR_lstat64 TARGET_NR_3264_lstat
-#endif
-
-#endif
diff --git a/linux-user/ppc/Makefile.objs b/linux-user/ppc/Makefile.objs
new file mode 100644 (file)
index 0000000..be92e67
--- /dev/null
@@ -0,0 +1,6 @@
+generated-files-y += linux-user/$(TARGET_ABI_DIR)/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)/syscallhdr.sh
+
+%/syscall_nr.h: $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
index 5b82af6cb623f7c5104cac159f842d3902799cac..0c4e7ba54caf60ec528005513126ee9db2c566c4 100644 (file)
@@ -588,7 +588,7 @@ sigsegv:
 
 }
 
-#if !defined(TARGET_PPC64)
+#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
 long do_sigreturn(CPUPPCState *env)
 {
     struct target_sigcontext *sc = NULL;
diff --git a/linux-user/ppc/syscall.tbl b/linux-user/ppc/syscall.tbl
new file mode 100644 (file)
index 0000000..35b61bf
--- /dev/null
@@ -0,0 +1,521 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for powerpc
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> can be common, spu, nospu, 64, or 32 for this file.
+#
+0      nospu   restart_syscall                 sys_restart_syscall
+1      nospu   exit                            sys_exit
+2      nospu   fork                            ppc_fork
+3      common  read                            sys_read
+4      common  write                           sys_write
+5      common  open                            sys_open                        compat_sys_open
+6      common  close                           sys_close
+7      common  waitpid                         sys_waitpid
+8      common  creat                           sys_creat
+9      common  link                            sys_link
+10     common  unlink                          sys_unlink
+11     nospu   execve                          sys_execve                      compat_sys_execve
+12     common  chdir                           sys_chdir
+13     32      time                            sys_time32
+13     64      time                            sys_time
+13     spu     time                            sys_time
+14     common  mknod                           sys_mknod
+15     common  chmod                           sys_chmod
+16     common  lchown                          sys_lchown
+17     common  break                           sys_ni_syscall
+18     32      oldstat                         sys_stat                        sys_ni_syscall
+18     64      oldstat                         sys_ni_syscall
+18     spu     oldstat                         sys_ni_syscall
+19     common  lseek                           sys_lseek                       compat_sys_lseek
+20     common  getpid                          sys_getpid
+21     nospu   mount                           sys_mount                       compat_sys_mount
+22     32      umount                          sys_oldumount
+22     64      umount                          sys_ni_syscall
+22     spu     umount                          sys_ni_syscall
+23     common  setuid                          sys_setuid
+24     common  getuid                          sys_getuid
+25     32      stime                           sys_stime32
+25     64      stime                           sys_stime
+25     spu     stime                           sys_stime
+26     nospu   ptrace                          sys_ptrace                      compat_sys_ptrace
+27     common  alarm                           sys_alarm
+28     32      oldfstat                        sys_fstat                       sys_ni_syscall
+28     64      oldfstat                        sys_ni_syscall
+28     spu     oldfstat                        sys_ni_syscall
+29     nospu   pause                           sys_pause
+30     32      utime                           sys_utime32
+30     64      utime                           sys_utime
+31     common  stty                            sys_ni_syscall
+32     common  gtty                            sys_ni_syscall
+33     common  access                          sys_access
+34     common  nice                            sys_nice
+35     common  ftime                           sys_ni_syscall
+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                       compat_sys_times
+44     common  prof                            sys_ni_syscall
+45     common  brk                             sys_brk
+46     common  setgid                          sys_setgid
+47     common  getgid                          sys_getgid
+48     nospu   signal                          sys_signal
+49     common  geteuid                         sys_geteuid
+50     common  getegid                         sys_getegid
+51     nospu   acct                            sys_acct
+52     nospu   umount2                         sys_umount
+53     common  lock                            sys_ni_syscall
+54     common  ioctl                           sys_ioctl                       compat_sys_ioctl
+55     common  fcntl                           sys_fcntl                       compat_sys_fcntl
+56     common  mpx                             sys_ni_syscall
+57     common  setpgid                         sys_setpgid
+58     common  ulimit                          sys_ni_syscall
+59     32      oldolduname                     sys_olduname
+59     64      oldolduname                     sys_ni_syscall
+59     spu     oldolduname                     sys_ni_syscall
+60     common  umask                           sys_umask
+61     common  chroot                          sys_chroot
+62     nospu   ustat                           sys_ustat                       compat_sys_ustat
+63     common  dup2                            sys_dup2
+64     common  getppid                         sys_getppid
+65     common  getpgrp                         sys_getpgrp
+66     common  setsid                          sys_setsid
+67     32      sigaction                       sys_sigaction                   compat_sys_sigaction
+67     64      sigaction                       sys_ni_syscall
+67     spu     sigaction                       sys_ni_syscall
+68     common  sgetmask                        sys_sgetmask
+69     common  ssetmask                        sys_ssetmask
+70     common  setreuid                        sys_setreuid
+71     common  setregid                        sys_setregid
+72     32      sigsuspend                      sys_sigsuspend
+72     64      sigsuspend                      sys_ni_syscall
+72     spu     sigsuspend                      sys_ni_syscall
+73     32      sigpending                      sys_sigpending                  compat_sys_sigpending
+73     64      sigpending                      sys_ni_syscall
+73     spu     sigpending                      sys_ni_syscall
+74     common  sethostname                     sys_sethostname
+75     common  setrlimit                       sys_setrlimit                   compat_sys_setrlimit
+76     32      getrlimit                       sys_old_getrlimit               compat_sys_old_getrlimit
+76     64      getrlimit                       sys_ni_syscall
+76     spu     getrlimit                       sys_ni_syscall
+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     common  getgroups                       sys_getgroups
+81     common  setgroups                       sys_setgroups
+82     32      select                          ppc_select                      sys_ni_syscall
+82     64      select                          sys_ni_syscall
+82     spu     select                          sys_ni_syscall
+83     common  symlink                         sys_symlink
+84     32      oldlstat                        sys_lstat                       sys_ni_syscall
+84     64      oldlstat                        sys_ni_syscall
+84     spu     oldlstat                        sys_ni_syscall
+85     common  readlink                        sys_readlink
+86     nospu   uselib                          sys_uselib
+87     nospu   swapon                          sys_swapon
+88     nospu   reboot                          sys_reboot
+89     32      readdir                         sys_old_readdir                 compat_sys_old_readdir
+89     64      readdir                         sys_ni_syscall
+89     spu     readdir                         sys_ni_syscall
+90     common  mmap                            sys_mmap
+91     common  munmap                          sys_munmap
+92     common  truncate                        sys_truncate                    compat_sys_truncate
+93     common  ftruncate                       sys_ftruncate                   compat_sys_ftruncate
+94     common  fchmod                          sys_fchmod
+95     common  fchown                          sys_fchown
+96     common  getpriority                     sys_getpriority
+97     common  setpriority                     sys_setpriority
+98     common  profil                          sys_ni_syscall
+99     nospu   statfs                          sys_statfs                      compat_sys_statfs
+100    nospu   fstatfs                         sys_fstatfs                     compat_sys_fstatfs
+101    common  ioperm                          sys_ni_syscall
+102    common  socketcall                      sys_socketcall                  compat_sys_socketcall
+103    common  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
+109    32      olduname                        sys_uname
+109    64      olduname                        sys_ni_syscall
+109    spu     olduname                        sys_ni_syscall
+110    common  iopl                            sys_ni_syscall
+111    common  vhangup                         sys_vhangup
+112    common  idle                            sys_ni_syscall
+113    common  vm86                            sys_ni_syscall
+114    common  wait4                           sys_wait4                       compat_sys_wait4
+115    nospu   swapoff                         sys_swapoff
+116    common  sysinfo                         sys_sysinfo                     compat_sys_sysinfo
+117    nospu   ipc                             sys_ipc                         compat_sys_ipc
+118    common  fsync                           sys_fsync
+119    32      sigreturn                       sys_sigreturn                   compat_sys_sigreturn
+119    64      sigreturn                       sys_ni_syscall
+119    spu     sigreturn                       sys_ni_syscall
+120    nospu   clone                           ppc_clone
+121    common  setdomainname                   sys_setdomainname
+122    common  uname                           sys_newuname
+123    common  modify_ldt                      sys_ni_syscall
+124    32      adjtimex                        sys_adjtimex_time32
+124    64      adjtimex                        sys_adjtimex
+124    spu     adjtimex                        sys_adjtimex
+125    common  mprotect                        sys_mprotect
+126    32      sigprocmask                     sys_sigprocmask                 compat_sys_sigprocmask
+126    64      sigprocmask                     sys_ni_syscall
+126    spu     sigprocmask                     sys_ni_syscall
+127    common  create_module                   sys_ni_syscall
+128    nospu   init_module                     sys_init_module
+129    nospu   delete_module                   sys_delete_module
+130    common  get_kernel_syms                 sys_ni_syscall
+131    nospu   quotactl                        sys_quotactl
+132    common  getpgid                         sys_getpgid
+133    common  fchdir                          sys_fchdir
+134    common  bdflush                         sys_bdflush
+135    common  sysfs                           sys_sysfs
+136    32      personality                     sys_personality                 ppc64_personality
+136    64      personality                     ppc64_personality
+136    spu     personality                     ppc64_personality
+137    common  afs_syscall                     sys_ni_syscall
+138    common  setfsuid                        sys_setfsuid
+139    common  setfsgid                        sys_setfsgid
+140    common  _llseek                         sys_llseek
+141    common  getdents                        sys_getdents                    compat_sys_getdents
+142    common  _newselect                      sys_select                      compat_sys_select
+143    common  flock                           sys_flock
+144    common  msync                           sys_msync
+145    common  readv                           sys_readv                       compat_sys_readv
+146    common  writev                          sys_writev                      compat_sys_writev
+147    common  getsid                          sys_getsid
+148    common  fdatasync                       sys_fdatasync
+149    nospu   _sysctl                         sys_sysctl                      compat_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    32      sched_rr_get_interval           sys_sched_rr_get_interval_time32
+161    64      sched_rr_get_interval           sys_sched_rr_get_interval
+161    spu     sched_rr_get_interval           sys_sched_rr_get_interval
+162    32      nanosleep                       sys_nanosleep_time32
+162    64      nanosleep                       sys_nanosleep
+162    spu     nanosleep                       sys_nanosleep
+163    common  mremap                          sys_mremap
+164    common  setresuid                       sys_setresuid
+165    common  getresuid                       sys_getresuid
+166    common  query_module                    sys_ni_syscall
+167    common  poll                            sys_poll
+168    common  nfsservctl                      sys_ni_syscall
+169    common  setresgid                       sys_setresgid
+170    common  getresgid                       sys_getresgid
+171    common  prctl                           sys_prctl
+172    nospu   rt_sigreturn                    sys_rt_sigreturn                compat_sys_rt_sigreturn
+173    nospu   rt_sigaction                    sys_rt_sigaction                compat_sys_rt_sigaction
+174    nospu   rt_sigprocmask                  sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+175    nospu   rt_sigpending                   sys_rt_sigpending               compat_sys_rt_sigpending
+176    32      rt_sigtimedwait                 sys_rt_sigtimedwait_time32      compat_sys_rt_sigtimedwait_time32
+176    64      rt_sigtimedwait                 sys_rt_sigtimedwait
+177    nospu   rt_sigqueueinfo                 sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+178    nospu   rt_sigsuspend                   sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+179    common  pread64                         sys_pread64                     compat_sys_pread64
+180    common  pwrite64                        sys_pwrite64                    compat_sys_pwrite64
+181    common  chown                           sys_chown
+182    common  getcwd                          sys_getcwd
+183    common  capget                          sys_capget
+184    common  capset                          sys_capset
+185    nospu   sigaltstack                     sys_sigaltstack                 compat_sys_sigaltstack
+186    32      sendfile                        sys_sendfile                    compat_sys_sendfile
+186    64      sendfile                        sys_sendfile64
+186    spu     sendfile                        sys_sendfile64
+187    common  getpmsg                         sys_ni_syscall
+188    common  putpmsg                         sys_ni_syscall
+189    nospu   vfork                           ppc_vfork
+190    common  ugetrlimit                      sys_getrlimit                   compat_sys_getrlimit
+191    common  readahead                       sys_readahead                   compat_sys_readahead
+192    32      mmap2                           sys_mmap2                       compat_sys_mmap2
+193    32      truncate64                      sys_truncate64                  compat_sys_truncate64
+194    32      ftruncate64                     sys_ftruncate64                 compat_sys_ftruncate64
+195    32      stat64                          sys_stat64
+196    32      lstat64                         sys_lstat64
+197    32      fstat64                         sys_fstat64
+198    nospu   pciconfig_read                  sys_pciconfig_read
+199    nospu   pciconfig_write                 sys_pciconfig_write
+200    nospu   pciconfig_iobase                sys_pciconfig_iobase
+201    common  multiplexer                     sys_ni_syscall
+202    common  getdents64                      sys_getdents64
+203    common  pivot_root                      sys_pivot_root
+204    32      fcntl64                         sys_fcntl64                     compat_sys_fcntl64
+205    common  madvise                         sys_madvise
+206    common  mincore                         sys_mincore
+207    common  gettid                          sys_gettid
+208    common  tkill                           sys_tkill
+209    common  setxattr                        sys_setxattr
+210    common  lsetxattr                       sys_lsetxattr
+211    common  fsetxattr                       sys_fsetxattr
+212    common  getxattr                        sys_getxattr
+213    common  lgetxattr                       sys_lgetxattr
+214    common  fgetxattr                       sys_fgetxattr
+215    common  listxattr                       sys_listxattr
+216    common  llistxattr                      sys_llistxattr
+217    common  flistxattr                      sys_flistxattr
+218    common  removexattr                     sys_removexattr
+219    common  lremovexattr                    sys_lremovexattr
+220    common  fremovexattr                    sys_fremovexattr
+221    32      futex                           sys_futex_time32
+221    64      futex                           sys_futex
+221    spu     futex                           sys_futex
+222    common  sched_setaffinity               sys_sched_setaffinity           compat_sys_sched_setaffinity
+223    common  sched_getaffinity               sys_sched_getaffinity           compat_sys_sched_getaffinity
+# 224 unused
+225    common  tuxcall                         sys_ni_syscall
+226    32      sendfile64                      sys_sendfile64                  compat_sys_sendfile64
+227    common  io_setup                        sys_io_setup                    compat_sys_io_setup
+228    common  io_destroy                      sys_io_destroy
+229    32      io_getevents                    sys_io_getevents_time32
+229    64      io_getevents                    sys_io_getevents
+229    spu     io_getevents                    sys_io_getevents
+230    common  io_submit                       sys_io_submit                   compat_sys_io_submit
+231    common  io_cancel                       sys_io_cancel
+232    nospu   set_tid_address                 sys_set_tid_address
+233    common  fadvise64                       sys_fadvise64                   ppc32_fadvise64
+234    nospu   exit_group                      sys_exit_group
+235    nospu   lookup_dcookie                  sys_lookup_dcookie              compat_sys_lookup_dcookie
+236    common  epoll_create                    sys_epoll_create
+237    common  epoll_ctl                       sys_epoll_ctl
+238    common  epoll_wait                      sys_epoll_wait
+239    common  remap_file_pages                sys_remap_file_pages
+240    common  timer_create                    sys_timer_create                compat_sys_timer_create
+241    32      timer_settime                   sys_timer_settime32
+241    64      timer_settime                   sys_timer_settime
+241    spu     timer_settime                   sys_timer_settime
+242    32      timer_gettime                   sys_timer_gettime32
+242    64      timer_gettime                   sys_timer_gettime
+242    spu     timer_gettime                   sys_timer_gettime
+243    common  timer_getoverrun                sys_timer_getoverrun
+244    common  timer_delete                    sys_timer_delete
+245    32      clock_settime                   sys_clock_settime32
+245    64      clock_settime                   sys_clock_settime
+245    spu     clock_settime                   sys_clock_settime
+246    32      clock_gettime                   sys_clock_gettime32
+246    64      clock_gettime                   sys_clock_gettime
+246    spu     clock_gettime                   sys_clock_gettime
+247    32      clock_getres                    sys_clock_getres_time32
+247    64      clock_getres                    sys_clock_getres
+247    spu     clock_getres                    sys_clock_getres
+248    32      clock_nanosleep                 sys_clock_nanosleep_time32
+248    64      clock_nanosleep                 sys_clock_nanosleep
+248    spu     clock_nanosleep                 sys_clock_nanosleep
+249    32      swapcontext                     ppc_swapcontext                 ppc32_swapcontext
+249    64      swapcontext                     ppc64_swapcontext
+249    spu     swapcontext                     sys_ni_syscall
+250    common  tgkill                          sys_tgkill
+251    32      utimes                          sys_utimes_time32
+251    64      utimes                          sys_utimes
+251    spu     utimes                          sys_utimes
+252    common  statfs64                        sys_statfs64                    compat_sys_statfs64
+253    common  fstatfs64                       sys_fstatfs64                   compat_sys_fstatfs64
+254    32      fadvise64_64                    ppc_fadvise64_64
+254    spu     fadvise64_64                    sys_ni_syscall
+255    common  rtas                            sys_rtas
+256    32      sys_debug_setcontext            sys_debug_setcontext            sys_ni_syscall
+256    64      sys_debug_setcontext            sys_ni_syscall
+256    spu     sys_debug_setcontext            sys_ni_syscall
+# 257 reserved for vserver
+258    nospu   migrate_pages                   sys_migrate_pages               compat_sys_migrate_pages
+259    nospu   mbind                           sys_mbind                       compat_sys_mbind
+260    nospu   get_mempolicy                   sys_get_mempolicy               compat_sys_get_mempolicy
+261    nospu   set_mempolicy                   sys_set_mempolicy               compat_sys_set_mempolicy
+262    nospu   mq_open                         sys_mq_open                     compat_sys_mq_open
+263    nospu   mq_unlink                       sys_mq_unlink
+264    32      mq_timedsend                    sys_mq_timedsend_time32
+264    64      mq_timedsend                    sys_mq_timedsend
+265    32      mq_timedreceive                 sys_mq_timedreceive_time32
+265    64      mq_timedreceive                 sys_mq_timedreceive
+266    nospu   mq_notify                       sys_mq_notify                   compat_sys_mq_notify
+267    nospu   mq_getsetattr                   sys_mq_getsetattr               compat_sys_mq_getsetattr
+268    nospu   kexec_load                      sys_kexec_load                  compat_sys_kexec_load
+269    nospu   add_key                         sys_add_key
+270    nospu   request_key                     sys_request_key
+271    nospu   keyctl                          sys_keyctl                      compat_sys_keyctl
+272    nospu   waitid                          sys_waitid                      compat_sys_waitid
+273    nospu   ioprio_set                      sys_ioprio_set
+274    nospu   ioprio_get                      sys_ioprio_get
+275    nospu   inotify_init                    sys_inotify_init
+276    nospu   inotify_add_watch               sys_inotify_add_watch
+277    nospu   inotify_rm_watch                sys_inotify_rm_watch
+278    nospu   spu_run                         sys_spu_run
+279    nospu   spu_create                      sys_spu_create
+280    32      pselect6                        sys_pselect6_time32             compat_sys_pselect6_time32
+280    64      pselect6                        sys_pselect6
+281    32      ppoll                           sys_ppoll_time32                compat_sys_ppoll_time32
+281    64      ppoll                           sys_ppoll
+282    common  unshare                         sys_unshare
+283    common  splice                          sys_splice
+284    common  tee                             sys_tee
+285    common  vmsplice                        sys_vmsplice                    compat_sys_vmsplice
+286    common  openat                          sys_openat                      compat_sys_openat
+287    common  mkdirat                         sys_mkdirat
+288    common  mknodat                         sys_mknodat
+289    common  fchownat                        sys_fchownat
+290    32      futimesat                       sys_futimesat_time32
+290    64      futimesat                       sys_futimesat
+290    spu     utimesat                        sys_futimesat
+291    32      fstatat64                       sys_fstatat64
+291    64      newfstatat                      sys_newfstatat
+291    spu     newfstatat                      sys_newfstatat
+292    common  unlinkat                        sys_unlinkat
+293    common  renameat                        sys_renameat
+294    common  linkat                          sys_linkat
+295    common  symlinkat                       sys_symlinkat
+296    common  readlinkat                      sys_readlinkat
+297    common  fchmodat                        sys_fchmodat
+298    common  faccessat                       sys_faccessat
+299    common  get_robust_list                 sys_get_robust_list             compat_sys_get_robust_list
+300    common  set_robust_list                 sys_set_robust_list             compat_sys_set_robust_list
+301    common  move_pages                      sys_move_pages                  compat_sys_move_pages
+302    common  getcpu                          sys_getcpu
+303    nospu   epoll_pwait                     sys_epoll_pwait                 compat_sys_epoll_pwait
+304    32      utimensat                       sys_utimensat_time32
+304    64      utimensat                       sys_utimensat
+304    spu     utimensat                       sys_utimensat
+305    common  signalfd                        sys_signalfd                    compat_sys_signalfd
+306    common  timerfd_create                  sys_timerfd_create
+307    common  eventfd                         sys_eventfd
+308    common  sync_file_range2                sys_sync_file_range2            compat_sys_sync_file_range2
+309    nospu   fallocate                       sys_fallocate                   compat_sys_fallocate
+310    nospu   subpage_prot                    sys_subpage_prot
+311    32      timerfd_settime                 sys_timerfd_settime32
+311    64      timerfd_settime                 sys_timerfd_settime
+311    spu     timerfd_settime                 sys_timerfd_settime
+312    32      timerfd_gettime                 sys_timerfd_gettime32
+312    64      timerfd_gettime                 sys_timerfd_gettime
+312    spu     timerfd_gettime                 sys_timerfd_gettime
+313    common  signalfd4                       sys_signalfd4                   compat_sys_signalfd4
+314    common  eventfd2                        sys_eventfd2
+315    common  epoll_create1                   sys_epoll_create1
+316    common  dup3                            sys_dup3
+317    common  pipe2                           sys_pipe2
+318    nospu   inotify_init1                   sys_inotify_init1
+319    common  perf_event_open                 sys_perf_event_open
+320    common  preadv                          sys_preadv                      compat_sys_preadv
+321    common  pwritev                         sys_pwritev                     compat_sys_pwritev
+322    nospu   rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+323    nospu   fanotify_init                   sys_fanotify_init
+324    nospu   fanotify_mark                   sys_fanotify_mark               compat_sys_fanotify_mark
+325    common  prlimit64                       sys_prlimit64
+326    common  socket                          sys_socket
+327    common  bind                            sys_bind
+328    common  connect                         sys_connect
+329    common  listen                          sys_listen
+330    common  accept                          sys_accept
+331    common  getsockname                     sys_getsockname
+332    common  getpeername                     sys_getpeername
+333    common  socketpair                      sys_socketpair
+334    common  send                            sys_send
+335    common  sendto                          sys_sendto
+336    common  recv                            sys_recv                        compat_sys_recv
+337    common  recvfrom                        sys_recvfrom                    compat_sys_recvfrom
+338    common  shutdown                        sys_shutdown
+339    common  setsockopt                      sys_setsockopt                  compat_sys_setsockopt
+340    common  getsockopt                      sys_getsockopt                  compat_sys_getsockopt
+341    common  sendmsg                         sys_sendmsg                     compat_sys_sendmsg
+342    common  recvmsg                         sys_recvmsg                     compat_sys_recvmsg
+343    32      recvmmsg                        sys_recvmmsg_time32             compat_sys_recvmmsg_time32
+343    64      recvmmsg                        sys_recvmmsg
+343    spu     recvmmsg                        sys_recvmmsg
+344    common  accept4                         sys_accept4
+345    common  name_to_handle_at               sys_name_to_handle_at
+346    common  open_by_handle_at               sys_open_by_handle_at           compat_sys_open_by_handle_at
+347    32      clock_adjtime                   sys_clock_adjtime32
+347    64      clock_adjtime                   sys_clock_adjtime
+347    spu     clock_adjtime                   sys_clock_adjtime
+348    common  syncfs                          sys_syncfs
+349    common  sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
+350    common  setns                           sys_setns
+351    nospu   process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
+352    nospu   process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+353    nospu   finit_module                    sys_finit_module
+354    nospu   kcmp                            sys_kcmp
+355    common  sched_setattr                   sys_sched_setattr
+356    common  sched_getattr                   sys_sched_getattr
+357    common  renameat2                       sys_renameat2
+358    common  seccomp                         sys_seccomp
+359    common  getrandom                       sys_getrandom
+360    common  memfd_create                    sys_memfd_create
+361    common  bpf                             sys_bpf
+362    nospu   execveat                        sys_execveat                    compat_sys_execveat
+363    32      switch_endian                   sys_ni_syscall
+363    64      switch_endian                   ppc_switch_endian
+363    spu     switch_endian                   sys_ni_syscall
+364    common  userfaultfd                     sys_userfaultfd
+365    common  membarrier                      sys_membarrier
+# 366-377 originally left for IPC, now unused
+378    nospu   mlock2                          sys_mlock2
+379    nospu   copy_file_range                 sys_copy_file_range
+380    common  preadv2                         sys_preadv2                     compat_sys_preadv2
+381    common  pwritev2                        sys_pwritev2                    compat_sys_pwritev2
+382    nospu   kexec_file_load                 sys_kexec_file_load
+383    nospu   statx                           sys_statx
+384    nospu   pkey_alloc                      sys_pkey_alloc
+385    nospu   pkey_free                       sys_pkey_free
+386    nospu   pkey_mprotect                   sys_pkey_mprotect
+387    nospu   rseq                            sys_rseq
+388    32      io_pgetevents                   sys_io_pgetevents_time32        compat_sys_io_pgetevents
+388    64      io_pgetevents                   sys_io_pgetevents
+# room for arch specific syscalls
+392    64      semtimedop                      sys_semtimedop
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl                      compat_sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl                      compat_sys_shmctl
+397    common  shmat                           sys_shmat                       compat_sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  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               sys_clock_gettime
+404    32      clock_settime64                 sys_clock_settime               sys_clock_settime
+405    32      clock_adjtime64                 sys_clock_adjtime               sys_clock_adjtime
+406    32      clock_getres_time64             sys_clock_getres                sys_clock_getres
+407    32      clock_nanosleep_time64          sys_clock_nanosleep             sys_clock_nanosleep
+408    32      timer_gettime64                 sys_timer_gettime               sys_timer_gettime
+409    32      timer_settime64                 sys_timer_settime               sys_timer_settime
+410    32      timerfd_gettime64               sys_timerfd_gettime             sys_timerfd_gettime
+411    32      timerfd_settime64               sys_timerfd_settime             sys_timerfd_settime
+412    32      utimensat_time64                sys_utimensat                   sys_utimensat
+413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
+414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
+416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
+418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
+419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
+420    32      semtimedop_time64               sys_semtimedop                  sys_semtimedop
+421    32      rt_sigtimedwait_time64          sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait_time64
+422    32      futex_time64                    sys_futex                       sys_futex
+423    32      sched_rr_get_interval_time64    sys_sched_rr_get_interval       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    nospu   clone3                          ppc_clone3
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/ppc/syscall_nr.h b/linux-user/ppc/syscall_nr.h
deleted file mode 100644 (file)
index b57a07b..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_PPC_SYSCALL_NR_H
-#define LINUX_USER_PPC_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
-#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
-#define TARGET_NR_oldstat                 18
-#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_oldfstat                28
-#define TARGET_NR_pause                   29
-#define TARGET_NR_utime                   30
-#define TARGET_NR_stty                    31
-#define TARGET_NR_gtty                    32
-#define TARGET_NR_access                  33
-#define TARGET_NR_nice                    34
-#define TARGET_NR_ftime                   35
-#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
-#define TARGET_NR_brk                     45
-#define TARGET_NR_setgid                  46
-#define TARGET_NR_getgid                  47
-#define TARGET_NR_signal                  48
-#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
-#define TARGET_NR_ioctl                   54
-#define TARGET_NR_fcntl                   55
-#define TARGET_NR_mpx                     56
-#define TARGET_NR_setpgid                 57
-#define TARGET_NR_ulimit                  58
-#define TARGET_NR_oldolduname             59
-#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
-#define TARGET_NR_ssetmask                69
-#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
-#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
-#define TARGET_NR_oldlstat                84
-#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
-#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
-#define TARGET_NR_olduname               109
-#define TARGET_NR_iopl                   110
-#define TARGET_NR_vhangup                111
-#define TARGET_NR_idle                   112
-#define TARGET_NR_vm86                   113
-#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
-#if !defined(TARGET_PPC64)
-#define TARGET_NR_sigreturn              119
-#endif
-#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
-#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_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_setresuid32            164
-#define TARGET_NR_getresuid32            165
-#define TARGET_NR_query_module           166
-#define TARGET_NR_poll                   167
-#define TARGET_NR_nfsservctl             168
-#define TARGET_NR_setresgid32            169
-#define TARGET_NR_getresgid32            170
-#define TARGET_NR_prctl                  171
-#define TARGET_NR_rt_sigreturn           172
-#define TARGET_NR_rt_sigaction           173
-#define TARGET_NR_rt_sigprocmask         174
-#define TARGET_NR_rt_sigpending          175
-#define TARGET_NR_rt_sigtimedwait        176
-#define TARGET_NR_rt_sigqueueinfo        177
-#define TARGET_NR_rt_sigsuspend          178
-#define TARGET_NR_pread64                179
-#define TARGET_NR_pwrite64               180
-#define TARGET_NR_chown                  181
-#define TARGET_NR_getcwd                 182
-#define TARGET_NR_capget                 183
-#define TARGET_NR_capset                 184
-#define TARGET_NR_sigaltstack            185
-#define TARGET_NR_sendfile               186
-#define TARGET_NR_getpmsg                187     /* some people actually want streams */
-#define TARGET_NR_putpmsg                188     /* some people actually want streams */
-#define TARGET_NR_vfork                  189
-#define TARGET_NR_ugetrlimit             190     /* SuS compliant getrlimit */
-#define TARGET_NR_readahead              191
-#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
-#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
-#endif
-#define TARGET_NR_pciconfig_read         198
-#define TARGET_NR_pciconfig_write        199
-#define TARGET_NR_pciconfig_iobase       200
-#define TARGET_NR_multiplexer            201
-#define TARGET_NR_getdents64             202
-#define TARGET_NR_pivot_root             203
-#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
-#define TARGET_NR_fcntl64                204
-#endif
-#define TARGET_NR_madvise                205
-#define TARGET_NR_mincore                206
-#define TARGET_NR_gettid                 207
-#define TARGET_NR_tkill                  208
-#define TARGET_NR_setxattr               209
-#define TARGET_NR_lsetxattr              210
-#define TARGET_NR_fsetxattr              211
-#define TARGET_NR_getxattr               212
-#define TARGET_NR_lgetxattr              213
-#define TARGET_NR_fgetxattr              214
-#define TARGET_NR_listxattr              215
-#define TARGET_NR_llistxattr             216
-#define TARGET_NR_flistxattr             217
-#define TARGET_NR_removexattr            218
-#define TARGET_NR_lremovexattr           219
-#define TARGET_NR_fremovexattr           220
-#define TARGET_NR_futex                  221
-#define TARGET_NR_sched_setaffinity      222
-#define TARGET_NR_sched_getaffinity      223
-/* 224 currently unused */
-#define TARGET_NR_tuxcall                225
-#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
-#define TARGET_NR_sendfile64             226
-#endif
-#define TARGET_NR_io_setup               227
-#define TARGET_NR_io_destroy             228
-#define TARGET_NR_io_getevents           229
-#define TARGET_NR_io_submit              230
-#define TARGET_NR_io_cancel              231
-#define TARGET_NR_set_tid_address        232
-#define TARGET_NR_fadvise64              233
-#define TARGET_NR_exit_group             234
-#define TARGET_NR_lookup_dcookie         235
-#define TARGET_NR_epoll_create           236
-#define TARGET_NR_epoll_ctl              237
-#define TARGET_NR_epoll_wait             238
-#define TARGET_NR_remap_file_pages       239
-#define TARGET_NR_timer_create           240
-#define TARGET_NR_timer_settime          241
-#define TARGET_NR_timer_gettime          242
-#define TARGET_NR_timer_getoverrun       243
-#define TARGET_NR_timer_delete           244
-#define TARGET_NR_clock_settime          245
-#define TARGET_NR_clock_gettime          246
-#define TARGET_NR_clock_getres           247
-#define TARGET_NR_clock_nanosleep        248
-#define TARGET_NR_swapcontext            249
-#define TARGET_NR_tgkill                 250
-#define TARGET_NR_utimes                 251
-#define TARGET_NR_statfs64               252
-#define TARGET_NR_fstatfs64              253
-#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
-#define TARGET_NR_fadvise64_64           254
-#endif
-#define TARGET_NR_rtas         255
-#define TARGET_NR_sys_debug_setcontext 256
-/* Number 257 is reserved for vserver */
-#define TARGET_NR_migrate_pages        258
-#define TARGET_NR_mbind                259
-#define TARGET_NR_get_mempolicy        260
-#define TARGET_NR_set_mempolicy        261
-#define TARGET_NR_mq_open              262
-#define TARGET_NR_mq_unlink            263
-#define TARGET_NR_mq_timedsend 264
-#define TARGET_NR_mq_timedreceive      265
-#define TARGET_NR_mq_notify            266
-#define TARGET_NR_mq_getsetattr        267
-#define TARGET_NR_kexec_load           268
-#define TARGET_NR_add_key              269
-#define TARGET_NR_request_key  270
-#define TARGET_NR_keyctl               271
-#define TARGET_NR_waitid               272
-#define TARGET_NR_ioprio_set           273
-#define TARGET_NR_ioprio_get           274
-#define TARGET_NR_inotify_init 275
-#define TARGET_NR_inotify_add_watch    276
-#define TARGET_NR_inotify_rm_watch     277
-#define TARGET_NR_spu_run              278
-#define TARGET_NR_spu_create           279
-#define TARGET_NR_pselect6             280
-#define TARGET_NR_ppoll                281
-#define TARGET_NR_unshare              282
-#define TARGET_NR_splice               283
-#define TARGET_NR_tee          284
-#define TARGET_NR_vmsplice             285
-#define TARGET_NR_openat               286
-#define TARGET_NR_mkdirat              287
-#define TARGET_NR_mknodat              288
-#define TARGET_NR_fchownat             289
-#define TARGET_NR_futimesat            290
-#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
-#define TARGET_NR_newfstatat           291
-#else
-#define TARGET_NR_fstatat64            291
-#endif
-#define TARGET_NR_unlinkat             292
-#define TARGET_NR_renameat             293
-#define TARGET_NR_linkat               294
-#define TARGET_NR_symlinkat            295
-#define TARGET_NR_readlinkat           296
-#define TARGET_NR_fchmodat             297
-#define TARGET_NR_faccessat            298
-#define TARGET_NR_get_robust_list      299
-#define TARGET_NR_set_robust_list      300
-#define TARGET_NR_move_pages           301
-#define TARGET_NR_getcpu               302
-#define TARGET_NR_epoll_pwait  303
-#define TARGET_NR_utimensat            304
-#define TARGET_NR_signalfd             305
-#define TARGET_NR_timerfd_create       306
-#define TARGET_NR_eventfd              307
-#define TARGET_NR_sync_file_range2     308
-#define TARGET_NR_fallocate            309
-#define TARGET_NR_subpage_prot         310
-#define TARGET_NR_timerfd_settime      311
-#define TARGET_NR_timerfd_gettime      312
-#define TARGET_NR_signalfd4            313
-#define TARGET_NR_eventfd2             314
-#define TARGET_NR_epoll_create1        315
-#define TARGET_NR_dup3                 316
-#define TARGET_NR_pipe2                317
-#define TARGET_NR_inotify_init1        318
-#define TARGET_NR_perf_event_open       319
-#define TARGET_NR_preadv                320
-#define TARGET_NR_pwritev               321
-#define TARGET_NR_rt_tgsigqueueinfo     322
-#define TARGET_NR_fanotify_init         323
-#define TARGET_NR_fanotify_mark         324
-#define TARGET_NR_prlimit64             325
-#define TARGET_NR_socket                326
-#define TARGET_NR_bind                  327
-#define TARGET_NR_connect               328
-#define TARGET_NR_listen                329
-#define TARGET_NR_accept                330
-#define TARGET_NR_getsockname           331
-#define TARGET_NR_getpeername           332
-#define TARGET_NR_socketpair            333
-#define TARGET_NR_send                  334
-#define TARGET_NR_sendto                335
-#define TARGET_NR_recv                  336
-#define TARGET_NR_recvfrom              337
-#define TARGET_NR_shutdown              338
-#define TARGET_NR_setsockopt            339
-#define TARGET_NR_getsockopt            340
-#define TARGET_NR_sendmsg               341
-#define TARGET_NR_recvmsg               342
-#define TARGET_NR_recvmmsg              343
-#define TARGET_NR_accept4               344
-#define TARGET_NR_name_to_handle_at     345
-#define TARGET_NR_open_by_handle_at     346
-#define TARGET_NR_clock_adjtime         347
-#define TARGET_NR_syncfs                348
-#define TARGET_NR_sendmmsg              349
-#define TARGET_NR_setns                 350
-#define TARGET_NR_process_vm_readv      351
-#define TARGET_NR_process_vm_writev     352
-#define TARGET_NR_finit_module          353
-#define TARGET_NR_kcmp                  354
-#define TARGET_NR_sched_setattr         355
-#define TARGET_NR_sched_getattr         356
-#define TARGET_NR_renameat2             357
-#define TARGET_NR_seccomp               358
-#define TARGET_NR_getrandom             359
-#define TARGET_NR_memfd_create          360
-#define TARGET_NR_bpf                   361
-#define TARGET_NR_execveat              362
-#define TARGET_NR_switch_endian         363
-#define TARGET_NR_userfaultfd           364
-#define TARGET_NR_membarrier            365
-#define TARGET_NR_semop                 366
-#define TARGET_NR_semget                367
-#define TARGET_NR_semctl                368
-#define TARGET_NR_semtimedop            369
-#define TARGET_NR_msgsnd                370
-#define TARGET_NR_msgrcv                371
-#define TARGET_NR_msgget                372
-#define TARGET_NR_msgctl                373
-#define TARGET_NR_shmat                 374
-#define TARGET_NR_shmdt                 375
-#define TARGET_NR_shmget                376
-#define TARGET_NR_shmctl                377
-#define TARGET_NR_mlock2                378
-
-#endif
diff --git a/linux-user/ppc/syscallhdr.sh b/linux-user/ppc/syscallhdr.sh
new file mode 100644 (file)
index 0000000..6c44e0e
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_PPC_`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"
+
+    while read nr abi name entry compat ; do
+        if [ "$entry" = "sys_ni_syscall" ] ; then
+            continue
+        fi
+        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
+    done
+
+    printf "\n"
+    printf "#endif /* %s */" "${fileguard}"
+    printf "\n"
+) > "$out"
diff --git a/linux-user/riscv/syscall32_nr.h b/linux-user/riscv/syscall32_nr.h
new file mode 100644 (file)
index 0000000..4fef73e
--- /dev/null
@@ -0,0 +1,295 @@
+/*
+ * This file contains the system call numbers.
+ */
+#ifndef LINUX_USER_RISCV_SYSCALL32_NR_H
+#define LINUX_USER_RISCV_SYSCALL32_NR_H
+
+#define TARGET_NR_io_setup 0
+#define TARGET_NR_io_destroy 1
+#define TARGET_NR_io_submit 2
+#define TARGET_NR_io_cancel 3
+#define TARGET_NR_setxattr 5
+#define TARGET_NR_lsetxattr 6
+#define TARGET_NR_fsetxattr 7
+#define TARGET_NR_getxattr 8
+#define TARGET_NR_lgetxattr 9
+#define TARGET_NR_fgetxattr 10
+#define TARGET_NR_listxattr 11
+#define TARGET_NR_llistxattr 12
+#define TARGET_NR_flistxattr 13
+#define TARGET_NR_removexattr 14
+#define TARGET_NR_lremovexattr 15
+#define TARGET_NR_fremovexattr 16
+#define TARGET_NR_getcwd 17
+#define TARGET_NR_lookup_dcookie 18
+#define TARGET_NR_eventfd2 19
+#define TARGET_NR_epoll_create1 20
+#define TARGET_NR_epoll_ctl 21
+#define TARGET_NR_epoll_pwait 22
+#define TARGET_NR_dup 23
+#define TARGET_NR_dup3 24
+#define TARGET_NR_fcntl64 25
+#define TARGET_NR_inotify_init1 26
+#define TARGET_NR_inotify_add_watch 27
+#define TARGET_NR_inotify_rm_watch 28
+#define TARGET_NR_ioctl 29
+#define TARGET_NR_ioprio_set 30
+#define TARGET_NR_ioprio_get 31
+#define TARGET_NR_flock 32
+#define TARGET_NR_mknodat 33
+#define TARGET_NR_mkdirat 34
+#define TARGET_NR_unlinkat 35
+#define TARGET_NR_symlinkat 36
+#define TARGET_NR_linkat 37
+#define TARGET_NR_umount2 39
+#define TARGET_NR_mount 40
+#define TARGET_NR_pivot_root 41
+#define TARGET_NR_nfsservctl 42
+#define TARGET_NR_statfs64 43
+#define TARGET_NR_fstatfs64 44
+#define TARGET_NR_truncate64 45
+#define TARGET_NR_ftruncate64 46
+#define TARGET_NR_fallocate 47
+#define TARGET_NR_faccessat 48
+#define TARGET_NR_chdir 49
+#define TARGET_NR_fchdir 50
+#define TARGET_NR_chroot 51
+#define TARGET_NR_fchmod 52
+#define TARGET_NR_fchmodat 53
+#define TARGET_NR_fchownat 54
+#define TARGET_NR_fchown 55
+#define TARGET_NR_openat 56
+#define TARGET_NR_close 57
+#define TARGET_NR_vhangup 58
+#define TARGET_NR_pipe2 59
+#define TARGET_NR_quotactl 60
+#define TARGET_NR_getdents64 61
+#define TARGET_NR_llseek 62
+#define TARGET_NR_read 63
+#define TARGET_NR_write 64
+#define TARGET_NR_readv 65
+#define TARGET_NR_writev 66
+#define TARGET_NR_pread64 67
+#define TARGET_NR_pwrite64 68
+#define TARGET_NR_preadv 69
+#define TARGET_NR_pwritev 70
+#define TARGET_NR_sendfile64 71
+#define TARGET_NR_signalfd4 74
+#define TARGET_NR_vmsplice 75
+#define TARGET_NR_splice 76
+#define TARGET_NR_tee 77
+#define TARGET_NR_readlinkat 78
+#define TARGET_NR_fstatat64 79
+#define TARGET_NR_fstat64 80
+#define TARGET_NR_sync 81
+#define TARGET_NR_fsync 82
+#define TARGET_NR_fdatasync 83
+#define TARGET_NR_sync_file_range 84
+#define TARGET_NR_timerfd_create 85
+#define TARGET_NR_acct 89
+#define TARGET_NR_capget 90
+#define TARGET_NR_capset 91
+#define TARGET_NR_personality 92
+#define TARGET_NR_exit 93
+#define TARGET_NR_exit_group 94
+#define TARGET_NR_waitid 95
+#define TARGET_NR_set_tid_address 96
+#define TARGET_NR_unshare 97
+#define TARGET_NR_set_robust_list 99
+#define TARGET_NR_get_robust_list 100
+#define TARGET_NR_getitimer 102
+#define TARGET_NR_setitimer 103
+#define TARGET_NR_kexec_load 104
+#define TARGET_NR_init_module 105
+#define TARGET_NR_delete_module 106
+#define TARGET_NR_timer_create 107
+#define TARGET_NR_timer_getoverrun 109
+#define TARGET_NR_timer_delete 111
+#define TARGET_NR_syslog 116
+#define TARGET_NR_ptrace 117
+#define TARGET_NR_sched_setparam 118
+#define TARGET_NR_sched_setscheduler 119
+#define TARGET_NR_sched_getscheduler 120
+#define TARGET_NR_sched_getparam 121
+#define TARGET_NR_sched_setaffinity 122
+#define TARGET_NR_sched_getaffinity 123
+#define TARGET_NR_sched_yield 124
+#define TARGET_NR_sched_get_priority_max 125
+#define TARGET_NR_sched_get_priority_min 126
+#define TARGET_NR_restart_syscall 128
+#define TARGET_NR_kill 129
+#define TARGET_NR_tkill 130
+#define TARGET_NR_tgkill 131
+#define TARGET_NR_sigaltstack 132
+#define TARGET_NR_rt_sigsuspend 133
+#define TARGET_NR_rt_sigaction 134
+#define TARGET_NR_rt_sigprocmask 135
+#define TARGET_NR_rt_sigpending 136
+#define TARGET_NR_rt_sigqueueinfo 138
+#define TARGET_NR_rt_sigreturn 139
+#define TARGET_NR_setpriority 140
+#define TARGET_NR_getpriority 141
+#define TARGET_NR_reboot 142
+#define TARGET_NR_setregid 143
+#define TARGET_NR_setgid 144
+#define TARGET_NR_setreuid 145
+#define TARGET_NR_setuid 146
+#define TARGET_NR_setresuid 147
+#define TARGET_NR_getresuid 148
+#define TARGET_NR_setresgid 149
+#define TARGET_NR_getresgid 150
+#define TARGET_NR_setfsuid 151
+#define TARGET_NR_setfsgid 152
+#define TARGET_NR_times 153
+#define TARGET_NR_setpgid 154
+#define TARGET_NR_getpgid 155
+#define TARGET_NR_getsid 156
+#define TARGET_NR_setsid 157
+#define TARGET_NR_getgroups 158
+#define TARGET_NR_setgroups 159
+#define TARGET_NR_uname 160
+#define TARGET_NR_sethostname 161
+#define TARGET_NR_setdomainname 162
+#define TARGET_NR_getrlimit 163
+#define TARGET_NR_setrlimit 164
+#define TARGET_NR_getrusage 165
+#define TARGET_NR_umask 166
+#define TARGET_NR_prctl 167
+#define TARGET_NR_getcpu 168
+#define TARGET_NR_getpid 172
+#define TARGET_NR_getppid 173
+#define TARGET_NR_getuid 174
+#define TARGET_NR_geteuid 175
+#define TARGET_NR_getgid 176
+#define TARGET_NR_getegid 177
+#define TARGET_NR_gettid 178
+#define TARGET_NR_sysinfo 179
+#define TARGET_NR_mq_open 180
+#define TARGET_NR_mq_unlink 181
+#define TARGET_NR_mq_notify 184
+#define TARGET_NR_mq_getsetattr 185
+#define TARGET_NR_msgget 186
+#define TARGET_NR_msgctl 187
+#define TARGET_NR_msgrcv 188
+#define TARGET_NR_msgsnd 189
+#define TARGET_NR_semget 190
+#define TARGET_NR_semctl 191
+#define TARGET_NR_semop 193
+#define TARGET_NR_shmget 194
+#define TARGET_NR_shmctl 195
+#define TARGET_NR_shmat 196
+#define TARGET_NR_shmdt 197
+#define TARGET_NR_socket 198
+#define TARGET_NR_socketpair 199
+#define TARGET_NR_bind 200
+#define TARGET_NR_listen 201
+#define TARGET_NR_accept 202
+#define TARGET_NR_connect 203
+#define TARGET_NR_getsockname 204
+#define TARGET_NR_getpeername 205
+#define TARGET_NR_sendto 206
+#define TARGET_NR_recvfrom 207
+#define TARGET_NR_setsockopt 208
+#define TARGET_NR_getsockopt 209
+#define TARGET_NR_shutdown 210
+#define TARGET_NR_sendmsg 211
+#define TARGET_NR_recvmsg 212
+#define TARGET_NR_readahead 213
+#define TARGET_NR_brk 214
+#define TARGET_NR_munmap 215
+#define TARGET_NR_mremap 216
+#define TARGET_NR_add_key 217
+#define TARGET_NR_request_key 218
+#define TARGET_NR_keyctl 219
+#define TARGET_NR_clone 220
+#define TARGET_NR_execve 221
+#define TARGET_NR_mmap2 222
+#define TARGET_NR_fadvise64_64 223
+#define TARGET_NR_swapon 224
+#define TARGET_NR_swapoff 225
+#define TARGET_NR_mprotect 226
+#define TARGET_NR_msync 227
+#define TARGET_NR_mlock 228
+#define TARGET_NR_munlock 229
+#define TARGET_NR_mlockall 230
+#define TARGET_NR_munlockall 231
+#define TARGET_NR_mincore 232
+#define TARGET_NR_madvise 233
+#define TARGET_NR_remap_file_pages 234
+#define TARGET_NR_mbind 235
+#define TARGET_NR_get_mempolicy 236
+#define TARGET_NR_set_mempolicy 237
+#define TARGET_NR_migrate_pages 238
+#define TARGET_NR_move_pages 239
+#define TARGET_NR_rt_tgsigqueueinfo 240
+#define TARGET_NR_perf_event_open 241
+#define TARGET_NR_accept4 242
+#define TARGET_NR_arch_specific_syscall 244
+#define TARGET_NR_riscv_flush_icache (TARGET_NR_arch_specific_syscall + 15)
+#define TARGET_NR_prlimit64 261
+#define TARGET_NR_fanotify_init 262
+#define TARGET_NR_fanotify_mark 263
+#define TARGET_NR_name_to_handle_at 264
+#define TARGET_NR_open_by_handle_at 265
+#define TARGET_NR_syncfs 267
+#define TARGET_NR_setns 268
+#define TARGET_NR_sendmmsg 269
+#define TARGET_NR_process_vm_readv 270
+#define TARGET_NR_process_vm_writev 271
+#define TARGET_NR_kcmp 272
+#define TARGET_NR_finit_module 273
+#define TARGET_NR_sched_setattr 274
+#define TARGET_NR_sched_getattr 275
+#define TARGET_NR_renameat2 276
+#define TARGET_NR_seccomp 277
+#define TARGET_NR_getrandom 278
+#define TARGET_NR_memfd_create 279
+#define TARGET_NR_bpf 280
+#define TARGET_NR_execveat 281
+#define TARGET_NR_userfaultfd 282
+#define TARGET_NR_membarrier 283
+#define TARGET_NR_mlock2 284
+#define TARGET_NR_copy_file_range 285
+#define TARGET_NR_preadv2 286
+#define TARGET_NR_pwritev2 287
+#define TARGET_NR_pkey_mprotect 288
+#define TARGET_NR_pkey_alloc 289
+#define TARGET_NR_pkey_free 290
+#define TARGET_NR_statx 291
+#define TARGET_NR_rseq 293
+#define TARGET_NR_kexec_file_load 294
+#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
+#define TARGET_NR_syscalls 436
+
+#endif /* LINUX_USER_RISCV_SYSCALL32_NR_H */
diff --git a/linux-user/riscv/syscall64_nr.h b/linux-user/riscv/syscall64_nr.h
new file mode 100644 (file)
index 0000000..cc82f32
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * This file contains the system call numbers.
+ */
+#ifndef LINUX_USER_RISCV_SYSCALL64_NR_H
+#define LINUX_USER_RISCV_SYSCALL64_NR_H
+
+#define TARGET_NR_io_setup 0
+#define TARGET_NR_io_destroy 1
+#define TARGET_NR_io_submit 2
+#define TARGET_NR_io_cancel 3
+#define TARGET_NR_io_getevents 4
+#define TARGET_NR_setxattr 5
+#define TARGET_NR_lsetxattr 6
+#define TARGET_NR_fsetxattr 7
+#define TARGET_NR_getxattr 8
+#define TARGET_NR_lgetxattr 9
+#define TARGET_NR_fgetxattr 10
+#define TARGET_NR_listxattr 11
+#define TARGET_NR_llistxattr 12
+#define TARGET_NR_flistxattr 13
+#define TARGET_NR_removexattr 14
+#define TARGET_NR_lremovexattr 15
+#define TARGET_NR_fremovexattr 16
+#define TARGET_NR_getcwd 17
+#define TARGET_NR_lookup_dcookie 18
+#define TARGET_NR_eventfd2 19
+#define TARGET_NR_epoll_create1 20
+#define TARGET_NR_epoll_ctl 21
+#define TARGET_NR_epoll_pwait 22
+#define TARGET_NR_dup 23
+#define TARGET_NR_dup3 24
+#define TARGET_NR_fcntl 25
+#define TARGET_NR_inotify_init1 26
+#define TARGET_NR_inotify_add_watch 27
+#define TARGET_NR_inotify_rm_watch 28
+#define TARGET_NR_ioctl 29
+#define TARGET_NR_ioprio_set 30
+#define TARGET_NR_ioprio_get 31
+#define TARGET_NR_flock 32
+#define TARGET_NR_mknodat 33
+#define TARGET_NR_mkdirat 34
+#define TARGET_NR_unlinkat 35
+#define TARGET_NR_symlinkat 36
+#define TARGET_NR_linkat 37
+#define TARGET_NR_umount2 39
+#define TARGET_NR_mount 40
+#define TARGET_NR_pivot_root 41
+#define TARGET_NR_nfsservctl 42
+#define TARGET_NR_statfs 43
+#define TARGET_NR_fstatfs 44
+#define TARGET_NR_truncate 45
+#define TARGET_NR_ftruncate 46
+#define TARGET_NR_fallocate 47
+#define TARGET_NR_faccessat 48
+#define TARGET_NR_chdir 49
+#define TARGET_NR_fchdir 50
+#define TARGET_NR_chroot 51
+#define TARGET_NR_fchmod 52
+#define TARGET_NR_fchmodat 53
+#define TARGET_NR_fchownat 54
+#define TARGET_NR_fchown 55
+#define TARGET_NR_openat 56
+#define TARGET_NR_close 57
+#define TARGET_NR_vhangup 58
+#define TARGET_NR_pipe2 59
+#define TARGET_NR_quotactl 60
+#define TARGET_NR_getdents64 61
+#define TARGET_NR_lseek 62
+#define TARGET_NR_read 63
+#define TARGET_NR_write 64
+#define TARGET_NR_readv 65
+#define TARGET_NR_writev 66
+#define TARGET_NR_pread64 67
+#define TARGET_NR_pwrite64 68
+#define TARGET_NR_preadv 69
+#define TARGET_NR_pwritev 70
+#define TARGET_NR_sendfile 71
+#define TARGET_NR_pselect6 72
+#define TARGET_NR_ppoll 73
+#define TARGET_NR_signalfd4 74
+#define TARGET_NR_vmsplice 75
+#define TARGET_NR_splice 76
+#define TARGET_NR_tee 77
+#define TARGET_NR_readlinkat 78
+#define TARGET_NR_newfstatat 79
+#define TARGET_NR_fstat 80
+#define TARGET_NR_sync 81
+#define TARGET_NR_fsync 82
+#define TARGET_NR_fdatasync 83
+#define TARGET_NR_sync_file_range 84
+#define TARGET_NR_timerfd_create 85
+#define TARGET_NR_timerfd_settime 86
+#define TARGET_NR_timerfd_gettime 87
+#define TARGET_NR_utimensat 88
+#define TARGET_NR_acct 89
+#define TARGET_NR_capget 90
+#define TARGET_NR_capset 91
+#define TARGET_NR_personality 92
+#define TARGET_NR_exit 93
+#define TARGET_NR_exit_group 94
+#define TARGET_NR_waitid 95
+#define TARGET_NR_set_tid_address 96
+#define TARGET_NR_unshare 97
+#define TARGET_NR_futex 98
+#define TARGET_NR_set_robust_list 99
+#define TARGET_NR_get_robust_list 100
+#define TARGET_NR_nanosleep 101
+#define TARGET_NR_getitimer 102
+#define TARGET_NR_setitimer 103
+#define TARGET_NR_kexec_load 104
+#define TARGET_NR_init_module 105
+#define TARGET_NR_delete_module 106
+#define TARGET_NR_timer_create 107
+#define TARGET_NR_timer_gettime 108
+#define TARGET_NR_timer_getoverrun 109
+#define TARGET_NR_timer_settime 110
+#define TARGET_NR_timer_delete 111
+#define TARGET_NR_clock_settime 112
+#define TARGET_NR_clock_gettime 113
+#define TARGET_NR_clock_getres 114
+#define TARGET_NR_clock_nanosleep 115
+#define TARGET_NR_syslog 116
+#define TARGET_NR_ptrace 117
+#define TARGET_NR_sched_setparam 118
+#define TARGET_NR_sched_setscheduler 119
+#define TARGET_NR_sched_getscheduler 120
+#define TARGET_NR_sched_getparam 121
+#define TARGET_NR_sched_setaffinity 122
+#define TARGET_NR_sched_getaffinity 123
+#define TARGET_NR_sched_yield 124
+#define TARGET_NR_sched_get_priority_max 125
+#define TARGET_NR_sched_get_priority_min 126
+#define TARGET_NR_sched_rr_get_interval 127
+#define TARGET_NR_restart_syscall 128
+#define TARGET_NR_kill 129
+#define TARGET_NR_tkill 130
+#define TARGET_NR_tgkill 131
+#define TARGET_NR_sigaltstack 132
+#define TARGET_NR_rt_sigsuspend 133
+#define TARGET_NR_rt_sigaction 134
+#define TARGET_NR_rt_sigprocmask 135
+#define TARGET_NR_rt_sigpending 136
+#define TARGET_NR_rt_sigtimedwait 137
+#define TARGET_NR_rt_sigqueueinfo 138
+#define TARGET_NR_rt_sigreturn 139
+#define TARGET_NR_setpriority 140
+#define TARGET_NR_getpriority 141
+#define TARGET_NR_reboot 142
+#define TARGET_NR_setregid 143
+#define TARGET_NR_setgid 144
+#define TARGET_NR_setreuid 145
+#define TARGET_NR_setuid 146
+#define TARGET_NR_setresuid 147
+#define TARGET_NR_getresuid 148
+#define TARGET_NR_setresgid 149
+#define TARGET_NR_getresgid 150
+#define TARGET_NR_setfsuid 151
+#define TARGET_NR_setfsgid 152
+#define TARGET_NR_times 153
+#define TARGET_NR_setpgid 154
+#define TARGET_NR_getpgid 155
+#define TARGET_NR_getsid 156
+#define TARGET_NR_setsid 157
+#define TARGET_NR_getgroups 158
+#define TARGET_NR_setgroups 159
+#define TARGET_NR_uname 160
+#define TARGET_NR_sethostname 161
+#define TARGET_NR_setdomainname 162
+#define TARGET_NR_getrlimit 163
+#define TARGET_NR_setrlimit 164
+#define TARGET_NR_getrusage 165
+#define TARGET_NR_umask 166
+#define TARGET_NR_prctl 167
+#define TARGET_NR_getcpu 168
+#define TARGET_NR_gettimeofday 169
+#define TARGET_NR_settimeofday 170
+#define TARGET_NR_adjtimex 171
+#define TARGET_NR_getpid 172
+#define TARGET_NR_getppid 173
+#define TARGET_NR_getuid 174
+#define TARGET_NR_geteuid 175
+#define TARGET_NR_getgid 176
+#define TARGET_NR_getegid 177
+#define TARGET_NR_gettid 178
+#define TARGET_NR_sysinfo 179
+#define TARGET_NR_mq_open 180
+#define TARGET_NR_mq_unlink 181
+#define TARGET_NR_mq_timedsend 182
+#define TARGET_NR_mq_timedreceive 183
+#define TARGET_NR_mq_notify 184
+#define TARGET_NR_mq_getsetattr 185
+#define TARGET_NR_msgget 186
+#define TARGET_NR_msgctl 187
+#define TARGET_NR_msgrcv 188
+#define TARGET_NR_msgsnd 189
+#define TARGET_NR_semget 190
+#define TARGET_NR_semctl 191
+#define TARGET_NR_semtimedop 192
+#define TARGET_NR_semop 193
+#define TARGET_NR_shmget 194
+#define TARGET_NR_shmctl 195
+#define TARGET_NR_shmat 196
+#define TARGET_NR_shmdt 197
+#define TARGET_NR_socket 198
+#define TARGET_NR_socketpair 199
+#define TARGET_NR_bind 200
+#define TARGET_NR_listen 201
+#define TARGET_NR_accept 202
+#define TARGET_NR_connect 203
+#define TARGET_NR_getsockname 204
+#define TARGET_NR_getpeername 205
+#define TARGET_NR_sendto 206
+#define TARGET_NR_recvfrom 207
+#define TARGET_NR_setsockopt 208
+#define TARGET_NR_getsockopt 209
+#define TARGET_NR_shutdown 210
+#define TARGET_NR_sendmsg 211
+#define TARGET_NR_recvmsg 212
+#define TARGET_NR_readahead 213
+#define TARGET_NR_brk 214
+#define TARGET_NR_munmap 215
+#define TARGET_NR_mremap 216
+#define TARGET_NR_add_key 217
+#define TARGET_NR_request_key 218
+#define TARGET_NR_keyctl 219
+#define TARGET_NR_clone 220
+#define TARGET_NR_execve 221
+#define TARGET_NR_mmap 222
+#define TARGET_NR_fadvise64 223
+#define TARGET_NR_swapon 224
+#define TARGET_NR_swapoff 225
+#define TARGET_NR_mprotect 226
+#define TARGET_NR_msync 227
+#define TARGET_NR_mlock 228
+#define TARGET_NR_munlock 229
+#define TARGET_NR_mlockall 230
+#define TARGET_NR_munlockall 231
+#define TARGET_NR_mincore 232
+#define TARGET_NR_madvise 233
+#define TARGET_NR_remap_file_pages 234
+#define TARGET_NR_mbind 235
+#define TARGET_NR_get_mempolicy 236
+#define TARGET_NR_set_mempolicy 237
+#define TARGET_NR_migrate_pages 238
+#define TARGET_NR_move_pages 239
+#define TARGET_NR_rt_tgsigqueueinfo 240
+#define TARGET_NR_perf_event_open 241
+#define TARGET_NR_accept4 242
+#define TARGET_NR_recvmmsg 243
+#define TARGET_NR_arch_specific_syscall 244
+#define TARGET_NR_riscv_flush_icache (TARGET_NR_arch_specific_syscall + 15)
+#define TARGET_NR_wait4 260
+#define TARGET_NR_prlimit64 261
+#define TARGET_NR_fanotify_init 262
+#define TARGET_NR_fanotify_mark 263
+#define TARGET_NR_name_to_handle_at 264
+#define TARGET_NR_open_by_handle_at 265
+#define TARGET_NR_clock_adjtime 266
+#define TARGET_NR_syncfs 267
+#define TARGET_NR_setns 268
+#define TARGET_NR_sendmmsg 269
+#define TARGET_NR_process_vm_readv 270
+#define TARGET_NR_process_vm_writev 271
+#define TARGET_NR_kcmp 272
+#define TARGET_NR_finit_module 273
+#define TARGET_NR_sched_setattr 274
+#define TARGET_NR_sched_getattr 275
+#define TARGET_NR_renameat2 276
+#define TARGET_NR_seccomp 277
+#define TARGET_NR_getrandom 278
+#define TARGET_NR_memfd_create 279
+#define TARGET_NR_bpf 280
+#define TARGET_NR_execveat 281
+#define TARGET_NR_userfaultfd 282
+#define TARGET_NR_membarrier 283
+#define TARGET_NR_mlock2 284
+#define TARGET_NR_copy_file_range 285
+#define TARGET_NR_preadv2 286
+#define TARGET_NR_pwritev2 287
+#define TARGET_NR_pkey_mprotect 288
+#define TARGET_NR_pkey_alloc 289
+#define TARGET_NR_pkey_free 290
+#define TARGET_NR_statx 291
+#define TARGET_NR_io_pgetevents 292
+#define TARGET_NR_rseq 293
+#define TARGET_NR_kexec_file_load 294
+#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
+#define TARGET_NR_syscalls 436
+
+#endif /* LINUX_USER_RISCV_SYSCALL64_NR_H */
index 5c8728220994b8989a5e70fd57ba6ca040bdd9a8..0a5a2f2fb16119daea5aa16959528299e752eebd 100644 (file)
 #ifndef LINUX_USER_RISCV_SYSCALL_NR_H
 #define LINUX_USER_RISCV_SYSCALL_NR_H
 
-#define TARGET_NR_io_setup 0
-#define TARGET_NR_io_destroy 1
-#define TARGET_NR_io_submit 2
-#define TARGET_NR_io_cancel 3
-#define TARGET_NR_io_getevents 4
-#define TARGET_NR_setxattr 5
-#define TARGET_NR_lsetxattr 6
-#define TARGET_NR_fsetxattr 7
-#define TARGET_NR_getxattr 8
-#define TARGET_NR_lgetxattr 9
-#define TARGET_NR_fgetxattr 10
-#define TARGET_NR_listxattr 11
-#define TARGET_NR_llistxattr 12
-#define TARGET_NR_flistxattr 13
-#define TARGET_NR_removexattr 14
-#define TARGET_NR_lremovexattr 15
-#define TARGET_NR_fremovexattr 16
-#define TARGET_NR_getcwd 17
-#define TARGET_NR_lookup_dcookie 18
-#define TARGET_NR_eventfd2 19
-#define TARGET_NR_epoll_create1 20
-#define TARGET_NR_epoll_ctl 21
-#define TARGET_NR_epoll_pwait 22
-#define TARGET_NR_dup 23
-#define TARGET_NR_dup3 24
 #ifdef TARGET_RISCV32
-#define TARGET_NR_fcntl64 25
+# include "syscall32_nr.h"
 #else
-#define TARGET_NR_fcntl 25
+# include "syscall64_nr.h"
 #endif
-#define TARGET_NR_inotify_init1 26
-#define TARGET_NR_inotify_add_watch 27
-#define TARGET_NR_inotify_rm_watch 28
-#define TARGET_NR_ioctl 29
-#define TARGET_NR_ioprio_set 30
-#define TARGET_NR_ioprio_get 31
-#define TARGET_NR_flock 32
-#define TARGET_NR_mknodat 33
-#define TARGET_NR_mkdirat 34
-#define TARGET_NR_unlinkat 35
-#define TARGET_NR_symlinkat 36
-#define TARGET_NR_linkat 37
-#define TARGET_NR_renameat 38
-#define TARGET_NR_umount2 39
-#define TARGET_NR_mount 40
-#define TARGET_NR_pivot_root 41
-#define TARGET_NR_nfsservctl 42
-#define TARGET_NR_statfs 43
-#define TARGET_NR_fstatfs 44
-#define TARGET_NR_truncate 45
-#define TARGET_NR_ftruncate 46
-#define TARGET_NR_fallocate 47
-#define TARGET_NR_faccessat 48
-#define TARGET_NR_chdir 49
-#define TARGET_NR_fchdir 50
-#define TARGET_NR_chroot 51
-#define TARGET_NR_fchmod 52
-#define TARGET_NR_fchmodat 53
-#define TARGET_NR_fchownat 54
-#define TARGET_NR_fchown 55
-#define TARGET_NR_openat 56
-#define TARGET_NR_close 57
-#define TARGET_NR_vhangup 58
-#define TARGET_NR_pipe2 59
-#define TARGET_NR_quotactl 60
-#define TARGET_NR_getdents64 61
-#ifdef TARGET_RISCV32
-#define TARGET_NR__llseek 62
-#else
-#define TARGET_NR_lseek 62
-#endif
-#define TARGET_NR_read 63
-#define TARGET_NR_write 64
-#define TARGET_NR_readv 65
-#define TARGET_NR_writev 66
-#define TARGET_NR_pread64 67
-#define TARGET_NR_pwrite64 68
-#define TARGET_NR_preadv 69
-#define TARGET_NR_pwritev 70
-#define TARGET_NR_sendfile 71
-#define TARGET_NR_pselect6 72
-#define TARGET_NR_ppoll 73
-#define TARGET_NR_signalfd4 74
-#define TARGET_NR_vmsplice 75
-#define TARGET_NR_splice 76
-#define TARGET_NR_tee 77
-#define TARGET_NR_readlinkat 78
-#define TARGET_NR_newfstatat 79
-#define TARGET_NR_fstat 80
-#define TARGET_NR_sync 81
-#define TARGET_NR_fsync 82
-#define TARGET_NR_fdatasync 83
-#define TARGET_NR_sync_file_range 84
-#define TARGET_NR_timerfd_create 85
-#define TARGET_NR_timerfd_settime 86
-#define TARGET_NR_timerfd_gettime 87
-#define TARGET_NR_utimensat 88
-#define TARGET_NR_acct 89
-#define TARGET_NR_capget 90
-#define TARGET_NR_capset 91
-#define TARGET_NR_personality 92
-#define TARGET_NR_exit 93
-#define TARGET_NR_exit_group 94
-#define TARGET_NR_waitid 95
-#define TARGET_NR_set_tid_address 96
-#define TARGET_NR_unshare 97
-#define TARGET_NR_futex 98
-#define TARGET_NR_set_robust_list 99
-#define TARGET_NR_get_robust_list 100
-#define TARGET_NR_nanosleep 101
-#define TARGET_NR_getitimer 102
-#define TARGET_NR_setitimer 103
-#define TARGET_NR_kexec_load 104
-#define TARGET_NR_init_module 105
-#define TARGET_NR_delete_module 106
-#define TARGET_NR_timer_create 107
-#define TARGET_NR_timer_gettime 108
-#define TARGET_NR_timer_getoverrun 109
-#define TARGET_NR_timer_settime 110
-#define TARGET_NR_timer_delete 111
-#define TARGET_NR_clock_settime 112
-#define TARGET_NR_clock_gettime 113
-#define TARGET_NR_clock_getres 114
-#define TARGET_NR_clock_nanosleep 115
-#define TARGET_NR_syslog 116
-#define TARGET_NR_ptrace 117
-#define TARGET_NR_sched_setparam 118
-#define TARGET_NR_sched_setscheduler 119
-#define TARGET_NR_sched_getscheduler 120
-#define TARGET_NR_sched_getparam 121
-#define TARGET_NR_sched_setaffinity 122
-#define TARGET_NR_sched_getaffinity 123
-#define TARGET_NR_sched_yield 124
-#define TARGET_NR_sched_get_priority_max 125
-#define TARGET_NR_sched_get_priority_min 126
-#define TARGET_NR_sched_rr_get_interval 127
-#define TARGET_NR_restart_syscall 128
-#define TARGET_NR_kill 129
-#define TARGET_NR_tkill 130
-#define TARGET_NR_tgkill 131
-#define TARGET_NR_sigaltstack 132
-#define TARGET_NR_rt_sigsuspend 133
-#define TARGET_NR_rt_sigaction 134
-#define TARGET_NR_rt_sigprocmask 135
-#define TARGET_NR_rt_sigpending 136
-#define TARGET_NR_rt_sigtimedwait 137
-#define TARGET_NR_rt_sigqueueinfo 138
-#define TARGET_NR_rt_sigreturn 139
-#define TARGET_NR_setpriority 140
-#define TARGET_NR_getpriority 141
-#define TARGET_NR_reboot 142
-#define TARGET_NR_setregid 143
-#define TARGET_NR_setgid 144
-#define TARGET_NR_setreuid 145
-#define TARGET_NR_setuid 146
-#define TARGET_NR_setresuid 147
-#define TARGET_NR_getresuid 148
-#define TARGET_NR_setresgid 149
-#define TARGET_NR_getresgid 150
-#define TARGET_NR_setfsuid 151
-#define TARGET_NR_setfsgid 152
-#define TARGET_NR_times 153
-#define TARGET_NR_setpgid 154
-#define TARGET_NR_getpgid 155
-#define TARGET_NR_getsid 156
-#define TARGET_NR_setsid 157
-#define TARGET_NR_getgroups 158
-#define TARGET_NR_setgroups 159
-#define TARGET_NR_uname 160
-#define TARGET_NR_sethostname 161
-#define TARGET_NR_setdomainname 162
-#define TARGET_NR_getrlimit 163
-#define TARGET_NR_setrlimit 164
-#define TARGET_NR_getrusage 165
-#define TARGET_NR_umask 166
-#define TARGET_NR_prctl 167
-#define TARGET_NR_getcpu 168
-#define TARGET_NR_gettimeofday 169
-#define TARGET_NR_settimeofday 170
-#define TARGET_NR_adjtimex 171
-#define TARGET_NR_getpid 172
-#define TARGET_NR_getppid 173
-#define TARGET_NR_getuid 174
-#define TARGET_NR_geteuid 175
-#define TARGET_NR_getgid 176
-#define TARGET_NR_getegid 177
-#define TARGET_NR_gettid 178
-#define TARGET_NR_sysinfo 179
-#define TARGET_NR_mq_open 180
-#define TARGET_NR_mq_unlink 181
-#define TARGET_NR_mq_timedsend 182
-#define TARGET_NR_mq_timedreceive 183
-#define TARGET_NR_mq_notify 184
-#define TARGET_NR_mq_getsetattr 185
-#define TARGET_NR_msgget 186
-#define TARGET_NR_msgctl 187
-#define TARGET_NR_msgrcv 188
-#define TARGET_NR_msgsnd 189
-#define TARGET_NR_semget 190
-#define TARGET_NR_semctl 191
-#define TARGET_NR_semtimedop 192
-#define TARGET_NR_semop 193
-#define TARGET_NR_shmget 194
-#define TARGET_NR_shmctl 195
-#define TARGET_NR_shmat 196
-#define TARGET_NR_shmdt 197
-#define TARGET_NR_socket 198
-#define TARGET_NR_socketpair 199
-#define TARGET_NR_bind 200
-#define TARGET_NR_listen 201
-#define TARGET_NR_accept 202
-#define TARGET_NR_connect 203
-#define TARGET_NR_getsockname 204
-#define TARGET_NR_getpeername 205
-#define TARGET_NR_sendto 206
-#define TARGET_NR_recvfrom 207
-#define TARGET_NR_setsockopt 208
-#define TARGET_NR_getsockopt 209
-#define TARGET_NR_shutdown 210
-#define TARGET_NR_sendmsg 211
-#define TARGET_NR_recvmsg 212
-#define TARGET_NR_readahead 213
-#define TARGET_NR_brk 214
-#define TARGET_NR_munmap 215
-#define TARGET_NR_mremap 216
-#define TARGET_NR_add_key 217
-#define TARGET_NR_request_key 218
-#define TARGET_NR_keyctl 219
-#define TARGET_NR_clone 220
-#define TARGET_NR_execve 221
-#ifdef TARGET_RISCV32
-#define TARGET_NR_mmap2 222
-#define TARGET_NR_fadvise64_64 223
-#else
-#define TARGET_NR_mmap 222
-#define TARGET_NR_fadvise64 223
-#endif
-#define TARGET_NR_swapon 224
-#define TARGET_NR_swapoff 225
-#define TARGET_NR_mprotect 226
-#define TARGET_NR_msync 227
-#define TARGET_NR_mlock 228
-#define TARGET_NR_munlock 229
-#define TARGET_NR_mlockall 230
-#define TARGET_NR_munlockall 231
-#define TARGET_NR_mincore 232
-#define TARGET_NR_madvise 233
-#define TARGET_NR_remap_file_pages 234
-#define TARGET_NR_mbind 235
-#define TARGET_NR_get_mempolicy 236
-#define TARGET_NR_set_mempolicy 237
-#define TARGET_NR_migrate_pages 238
-#define TARGET_NR_move_pages 239
-#define TARGET_NR_rt_tgsigqueueinfo 240
-#define TARGET_NR_perf_event_open 241
-#define TARGET_NR_accept4 242
-#define TARGET_NR_recvmmsg 243
-#define TARGET_NR_arch_specific_syscall 244
-#define TARGET_NR_wait4 260
-#define TARGET_NR_prlimit64 261
-#define TARGET_NR_fanotify_init 262
-#define TARGET_NR_fanotify_mark 263
-#define TARGET_NR_name_to_handle_at 264
-#define TARGET_NR_open_by_handle_at 265
-#define TARGET_NR_clock_adjtime 266
-#define TARGET_NR_syncfs 267
-#define TARGET_NR_setns 268
-#define TARGET_NR_sendmmsg 269
-#define TARGET_NR_process_vm_readv 270
-#define TARGET_NR_process_vm_writev 271
-#define TARGET_NR_kcmp 272
-#define TARGET_NR_finit_module 273
-#define TARGET_NR_sched_setattr 274
-#define TARGET_NR_sched_getattr 275
-#define TARGET_NR_renameat2 276
-#define TARGET_NR_seccomp 277
-#define TARGET_NR_getrandom 278
-#define TARGET_NR_memfd_create 279
-#define TARGET_NR_bpf 280
-#define TARGET_NR_execveat 281
-#define TARGET_NR_userfaultfd 282
-#define TARGET_NR_membarrier 283
-#define TARGET_NR_mlock2 284
-#define TARGET_NR_copy_file_range 285
-#define TARGET_NR_preadv2 286
-#define TARGET_NR_pwritev2 287
-#define TARGET_NR_pkey_mprotect 288
-#define TARGET_NR_pkey_alloc 289
-#define TARGET_NR_pkey_free 290
-#define TARGET_NR_statx 291
-#define TARGET_NR_io_pgetevents 292
-#define TARGET_NR_rseq 293
-#define TARGET_NR_kexec_file_load 294
-
-#define TARGET_NR_syscalls (TARGET_NR_kexec_file_load + 1)
 
 #endif
diff --git a/linux-user/s390x/Makefile.objs b/linux-user/s390x/Makefile.objs
new file mode 100644 (file)
index 0000000..f30f162
--- /dev/null
@@ -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 (file)
index 0000000..bd7bd35
--- /dev/null
@@ -0,0 +1,442 @@
+# 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
+437  common    openat2                 sys_openat2                     sys_openat2
+438  common    pidfd_getfd             sys_pidfd_getfd                 sys_pidfd_getfd
diff --git a/linux-user/s390x/syscall_nr.h b/linux-user/s390x/syscall_nr.h
deleted file mode 100644 (file)
index b1553a0..0000000
+++ /dev/null
@@ -1,398 +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_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_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_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
-
-/*
- * There are some system calls that are not present on 64 bit, some
- * have a different name although they do the same (e.g. TARGET_NR_chown32
- * is TARGET_NR_chown on 64 bit).
- */
-#ifndef TARGET_S390X
-
-#define TARGET_NR_time          13
-#define TARGET_NR_lchown                16
-#define TARGET_NR_setuid                23
-#define TARGET_NR_getuid                24
-#define TARGET_NR_stime                 25
-#define TARGET_NR_setgid                46
-#define TARGET_NR_getgid                47
-#define TARGET_NR_geteuid               49
-#define TARGET_NR_getegid               50
-#define TARGET_NR_setreuid              70
-#define TARGET_NR_setregid              71
-#define TARGET_NR_getrlimit             76
-#define TARGET_NR_getgroups             80
-#define TARGET_NR_setgroups             81
-#define TARGET_NR_fchown                95
-#define TARGET_NR_ioperm               101
-#define TARGET_NR_setfsuid             138
-#define TARGET_NR_setfsgid             139
-#define TARGET_NR__llseek              140
-#define TARGET_NR__newselect   142
-#define TARGET_NR_setresuid            164
-#define TARGET_NR_getresuid            165
-#define TARGET_NR_setresgid            170
-#define TARGET_NR_getresgid            171
-#define TARGET_NR_chown                182
-#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_fcntl64              221
-#define TARGET_NR_sendfile64           223
-#define TARGET_NR_fadvise64_64 264
-#define TARGET_NR_fstatat64            293
-
-#else
-
-#define TARGET_NR_select               142
-#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_newfstatat           293
-
-#endif
-
-#endif
diff --git a/linux-user/s390x/syscallhdr.sh b/linux-user/s390x/syscallhdr.sh
new file mode 100755 (executable)
index 0000000..85a99c4
--- /dev/null
@@ -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"
diff --git a/linux-user/sh4/Makefile.objs b/linux-user/sh4/Makefile.objs
new file mode 100644 (file)
index 0000000..83fc939
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/sh4/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/sh4/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/sh4/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/sh4/syscall.tbl b/linux-user/sh4/syscall.tbl
new file mode 100644 (file)
index 0000000..c7a30fc
--- /dev/null
@@ -0,0 +1,442 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for sh
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "common" for this file
+#
+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      common  waitpid                         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     common  time                            sys_time32
+14     common  mknod                           sys_mknod
+15     common  chmod                           sys_chmod
+16     common  lchown                          sys_lchown16
+# 17 was break
+18     common  oldstat                         sys_stat
+19     common  lseek                           sys_lseek
+20     common  getpid                          sys_getpid
+21     common  mount                           sys_mount
+22     common  umount                          sys_oldumount
+23     common  setuid                          sys_setuid16
+24     common  getuid                          sys_getuid16
+25     common  stime                           sys_stime32
+26     common  ptrace                          sys_ptrace
+27     common  alarm                           sys_alarm
+28     common  oldfstat                        sys_fstat
+29     common  pause                           sys_pause
+30     common  utime                           sys_utime32
+# 31 was stty
+# 32 was gtty
+33     common  access                          sys_access
+34     common  nice                            sys_nice
+# 35 was 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_sh_pipe
+43     common  times                           sys_times
+# 44 was prof
+45     common  brk                             sys_brk
+46     common  setgid                          sys_setgid16
+47     common  getgid                          sys_getgid16
+48     common  signal                          sys_signal
+49     common  geteuid                         sys_geteuid16
+50     common  getegid                         sys_getegid16
+51     common  acct                            sys_acct
+52     common  umount2                         sys_umount
+# 53 was lock
+54     common  ioctl                           sys_ioctl
+55     common  fcntl                           sys_fcntl
+# 56 was mpx
+57     common  setpgid                         sys_setpgid
+# 58 was ulimit
+# 59 was 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     common  sgetmask                        sys_sgetmask
+69     common  ssetmask                        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
+76     common  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 was select
+83     common  symlink                         sys_symlink
+84     common  oldlstat                        sys_lstat
+85     common  readlink                        sys_readlink
+86     common  uselib                          sys_uselib
+87     common  swapon                          sys_swapon
+88     common  reboot                          sys_reboot
+89     common  readdir                         sys_old_readdir
+90     common  mmap                            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 profil
+99     common  statfs                          sys_statfs
+100    common  fstatfs                         sys_fstatfs
+# 101 was ioperm
+102    common  socketcall                      sys_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    common  olduname                        sys_uname
+# 110 was iopl
+111    common  vhangup                         sys_vhangup
+# 112 was idle
+# 113 was vm86old
+114    common  wait4                           sys_wait4
+115    common  swapoff                         sys_swapoff
+116    common  sysinfo                         sys_sysinfo
+117    common  ipc                             sys_ipc
+118    common  fsync                           sys_fsync
+119    common  sigreturn                       sys_sigreturn
+120    common  clone                           sys_clone
+121    common  setdomainname                   sys_setdomainname
+122    common  uname                           sys_newuname
+123    common  cacheflush                      sys_cacheflush
+124    common  adjtimex                        sys_adjtimex_time32
+125    common  mprotect                        sys_mprotect
+126    common  sigprocmask                     sys_sigprocmask
+# 127 was create_module
+128    common  init_module                     sys_init_module
+129    common  delete_module                   sys_delete_module
+# 130 was 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 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 vm86
+# 167 was query_module
+168    common  poll                            sys_poll
+169    common  nfsservctl                      sys_ni_syscall
+170    common  setresgid                       sys_setresgid16
+171    common  getresgid                       sys_getresgid16
+172    common  prctl                           sys_prctl
+173    common  rt_sigreturn                    sys_rt_sigreturn
+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_pread_wrapper
+181    common  pwrite64                        sys_pwrite_wrapper
+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 is reserved for getpmsg
+# 189 is reserved for putpmsg
+190    common  vfork                           sys_vfork
+191    common  ugetrlimit                      sys_getrlimit
+192    common  mmap2                           sys_mmap2
+193    common  truncate64                      sys_truncate64
+194    common  ftruncate64                     sys_ftruncate64
+195    common  stat64                          sys_stat64
+196    common  lstat64                         sys_lstat64
+197    common  fstat64                         sys_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  pivot_root                      sys_pivot_root
+218    common  mincore                         sys_mincore
+219    common  madvise                         sys_madvise
+220    common  getdents64                      sys_getdents64
+221    common  fcntl64                         sys_fcntl64
+# 222 is reserved for tux
+# 223 is unused
+224    common  gettid                          sys_gettid
+225    common  readahead                       sys_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 is reserved for set_thread_area
+# 244 is reserved for get_thread_area
+245    common  io_setup                        sys_io_setup
+246    common  io_destroy                      sys_io_destroy
+247    common  io_getevents                    sys_io_getevents_time32
+248    common  io_submit                       sys_io_submit
+249    common  io_cancel                       sys_io_cancel
+250    common  fadvise64                       sys_fadvise64
+# 251 is unused
+252    common  exit_group                      sys_exit_group
+253    common  lookup_dcookie                  sys_lookup_dcookie
+254    common  epoll_create                    sys_epoll_create
+255    common  epoll_ctl                       sys_epoll_ctl
+256    common  epoll_wait                      sys_epoll_wait
+257    common  remap_file_pages                sys_remap_file_pages
+258    common  set_tid_address                 sys_set_tid_address
+259    common  timer_create                    sys_timer_create
+260    common  timer_settime                   sys_timer_settime32
+261    common  timer_gettime                   sys_timer_gettime32
+262    common  timer_getoverrun                sys_timer_getoverrun
+263    common  timer_delete                    sys_timer_delete
+264    common  clock_settime                   sys_clock_settime32
+265    common  clock_gettime                   sys_clock_gettime32
+266    common  clock_getres                    sys_clock_getres_time32
+267    common  clock_nanosleep                 sys_clock_nanosleep_time32
+268    common  statfs64                        sys_statfs64
+269    common  fstatfs64                       sys_fstatfs64
+270    common  tgkill                          sys_tgkill
+271    common  utimes                          sys_utimes_time32
+272    common  fadvise64_64                    sys_fadvise64_64_wrapper
+# 273 is reserved for vserver
+274    common  mbind                           sys_mbind
+275    common  get_mempolicy                   sys_get_mempolicy
+276    common  set_mempolicy                   sys_set_mempolicy
+277    common  mq_open                         sys_mq_open
+278    common  mq_unlink                       sys_mq_unlink
+279    common  mq_timedsend                    sys_mq_timedsend_time32
+280    common  mq_timedreceive                 sys_mq_timedreceive_time32
+281    common  mq_notify                       sys_mq_notify
+282    common  mq_getsetattr                   sys_mq_getsetattr
+283    common  kexec_load                      sys_kexec_load
+284    common  waitid                          sys_waitid
+285    common  add_key                         sys_add_key
+286    common  request_key                     sys_request_key
+287    common  keyctl                          sys_keyctl
+288    common  ioprio_set                      sys_ioprio_set
+289    common  ioprio_get                      sys_ioprio_get
+290    common  inotify_init                    sys_inotify_init
+291    common  inotify_add_watch               sys_inotify_add_watch
+292    common  inotify_rm_watch                sys_inotify_rm_watch
+# 293 is unused
+294    common  migrate_pages                   sys_migrate_pages
+295    common  openat                          sys_openat
+296    common  mkdirat                         sys_mkdirat
+297    common  mknodat                         sys_mknodat
+298    common  fchownat                        sys_fchownat
+299    common  futimesat                       sys_futimesat_time32
+300    common  fstatat64                       sys_fstatat64
+301    common  unlinkat                        sys_unlinkat
+302    common  renameat                        sys_renameat
+303    common  linkat                          sys_linkat
+304    common  symlinkat                       sys_symlinkat
+305    common  readlinkat                      sys_readlinkat
+306    common  fchmodat                        sys_fchmodat
+307    common  faccessat                       sys_faccessat
+308    common  pselect6                        sys_pselect6_time32
+309    common  ppoll                           sys_ppoll_time32
+310    common  unshare                         sys_unshare
+311    common  set_robust_list                 sys_set_robust_list
+312    common  get_robust_list                 sys_get_robust_list
+313    common  splice                          sys_splice
+314    common  sync_file_range                 sys_sync_file_range
+315    common  tee                             sys_tee
+316    common  vmsplice                        sys_vmsplice
+317    common  move_pages                      sys_move_pages
+318    common  getcpu                          sys_getcpu
+319    common  epoll_pwait                     sys_epoll_pwait
+320    common  utimensat                       sys_utimensat_time32
+321    common  signalfd                        sys_signalfd
+322    common  timerfd_create                  sys_timerfd_create
+323    common  eventfd                         sys_eventfd
+324    common  fallocate                       sys_fallocate
+325    common  timerfd_settime                 sys_timerfd_settime32
+326    common  timerfd_gettime                 sys_timerfd_gettime32
+327    common  signalfd4                       sys_signalfd4
+328    common  eventfd2                        sys_eventfd2
+329    common  epoll_create1                   sys_epoll_create1
+330    common  dup3                            sys_dup3
+331    common  pipe2                           sys_pipe2
+332    common  inotify_init1                   sys_inotify_init1
+333    common  preadv                          sys_preadv
+334    common  pwritev                         sys_pwritev
+335    common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+336    common  perf_event_open                 sys_perf_event_open
+337    common  fanotify_init                   sys_fanotify_init
+338    common  fanotify_mark                   sys_fanotify_mark
+339    common  prlimit64                       sys_prlimit64
+340    common  socket                          sys_socket
+341    common  bind                            sys_bind
+342    common  connect                         sys_connect
+343    common  listen                          sys_listen
+344    common  accept                          sys_accept
+345    common  getsockname                     sys_getsockname
+346    common  getpeername                     sys_getpeername
+347    common  socketpair                      sys_socketpair
+348    common  send                            sys_send
+349    common  sendto                          sys_sendto
+350    common  recv                            sys_recv
+351    common  recvfrom                        sys_recvfrom
+352    common  shutdown                        sys_shutdown
+353    common  setsockopt                      sys_setsockopt
+354    common  getsockopt                      sys_getsockopt
+355    common  sendmsg                         sys_sendmsg
+356    common  recvmsg                         sys_recvmsg
+357    common  recvmmsg                        sys_recvmmsg_time32
+358    common  accept4                         sys_accept4
+359    common  name_to_handle_at               sys_name_to_handle_at
+360    common  open_by_handle_at               sys_open_by_handle_at
+361    common  clock_adjtime                   sys_clock_adjtime32
+362    common  syncfs                          sys_syncfs
+363    common  sendmmsg                        sys_sendmmsg
+364    common  setns                           sys_setns
+365    common  process_vm_readv                sys_process_vm_readv
+366    common  process_vm_writev               sys_process_vm_writev
+367    common  kcmp                            sys_kcmp
+368    common  finit_module                    sys_finit_module
+369    common  sched_getattr                   sys_sched_getattr
+370    common  sched_setattr                   sys_sched_setattr
+371    common  renameat2                       sys_renameat2
+372    common  seccomp                         sys_seccomp
+373    common  getrandom                       sys_getrandom
+374    common  memfd_create                    sys_memfd_create
+375    common  bpf                             sys_bpf
+376    common  execveat                        sys_execveat
+377    common  userfaultfd                     sys_userfaultfd
+378    common  membarrier                      sys_membarrier
+379    common  mlock2                          sys_mlock2
+380    common  copy_file_range                 sys_copy_file_range
+381    common  preadv2                         sys_preadv2
+382    common  pwritev2                        sys_pwritev2
+383    common  statx                           sys_statx
+384    common  pkey_mprotect                   sys_pkey_mprotect
+385    common  pkey_alloc                      sys_pkey_alloc
+386    common  pkey_free                       sys_pkey_free
+387    common  rseq                            sys_rseq
+# room for arch specific syscalls
+393    common  semget                          sys_semget
+394    common  semctl                          sys_semctl
+395    common  shmget                          sys_shmget
+396    common  shmctl                          sys_shmctl
+397    common  shmat                           sys_shmat
+398    common  shmdt                           sys_shmdt
+399    common  msgget                          sys_msgget
+400    common  msgsnd                          sys_msgsnd
+401    common  msgrcv                          sys_msgrcv
+402    common  msgctl                          sys_msgctl
+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 reserved for clone3
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/sh4/syscall_nr.h b/linux-user/sh4/syscall_nr.h
deleted file mode 100644 (file)
index 8c21fcf..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * This file contains the system call numbers.
- */
-
-#ifndef LINUX_USER_SH4_SYSCALL_NR_H
-#define LINUX_USER_SH4_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
-#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
-#define TARGET_NR_oldstat               18
-#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_oldfstat              28
-#define TARGET_NR_pause                 29
-#define TARGET_NR_utime                 30
-#define TARGET_NR_stty          31
-#define TARGET_NR_gtty          32
-#define TARGET_NR_access                33
-#define TARGET_NR_nice          34
-#define TARGET_NR_ftime                 35
-#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
-#define TARGET_NR_brk           45
-#define TARGET_NR_setgid                46
-#define TARGET_NR_getgid                47
-#define TARGET_NR_signal                48
-#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
-#define TARGET_NR_ioctl                 54
-#define TARGET_NR_fcntl                 55
-#define TARGET_NR_mpx           56
-#define TARGET_NR_setpgid               57
-#define TARGET_NR_ulimit                58
-#define TARGET_NR_oldolduname   59
-#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
-#define TARGET_NR_ssetmask              69
-#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 compatible 2Gig 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
-                                         /* 82 was sys_oldselect */
-#define TARGET_NR_symlink               83
-#define TARGET_NR_oldlstat              84
-#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
-#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
-#define TARGET_NR_olduname             109
-#define TARGET_NR_iopl         110
-#define TARGET_NR_vhangup              111
-#define TARGET_NR_idle         112
-#define TARGET_NR_vm86old              113
-#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_cacheflush           123
-#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_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
-#define TARGET_NR_query_module 167
-#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
-#define TARGET_NR_streams1             188     /* some people actually want it */
-#define TARGET_NR_streams2             189     /* some people actually want it */
-#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_pivot_root           217
-#define TARGET_NR_mincore              218
-#define TARGET_NR_madvise              219
-#define TARGET_NR_getdents64           220
-#define TARGET_NR_fcntl64              221
-/* 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_set_thread_area      243
-#define TARGET_NR_get_thread_area      244
-#define TARGET_NR_io_setup             245
-#define TARGET_NR_io_destroy           246
-#define TARGET_NR_io_getevents 247
-#define TARGET_NR_io_submit            248
-#define TARGET_NR_io_cancel            249
-#define TARGET_NR_fadvise64            250
-
-#define TARGET_NR_exit_group           252
-#define TARGET_NR_lookup_dcookie       253
-#define TARGET_NR_epoll_create 254
-#define TARGET_NR_epoll_ctl            255
-#define TARGET_NR_epoll_wait           256
-#define TARGET_NR_remap_file_pages     257
-#define TARGET_NR_set_tid_address      258
-#define TARGET_NR_timer_create 259
-#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)
-#define TARGET_NR_statfs64             268
-#define TARGET_NR_fstatfs64            269
-#define TARGET_NR_tgkill               270
-#define TARGET_NR_utimes               271
-#define TARGET_NR_fadvise64_64 272
-#define TARGET_NR_vserver              273
-#define TARGET_NR_mbind              274
-#define TARGET_NR_get_mempolicy      275
-#define TARGET_NR_set_mempolicy      276
-#define TARGET_NR_mq_open            277
-#define TARGET_NR_mq_unlink          (TARGET_NR_mq_open+1)
-#define TARGET_NR_mq_timedsend       (TARGET_NR_mq_open+2)
-#define TARGET_NR_mq_timedreceive    (TARGET_NR_mq_open+3)
-#define TARGET_NR_mq_notify          (TARGET_NR_mq_open+4)
-#define TARGET_NR_mq_getsetattr      (TARGET_NR_mq_open+5)
-#define TARGET_NR_sys_kexec_load       283
-#define TARGET_NR_waitid               284
-#define TARGET_NR_add_key              285
-#define TARGET_NR_request_key  286
-#define TARGET_NR_keyctl               287
-#define TARGET_NR_ioprio_set           288
-#define TARGET_NR_ioprio_get           289
-#define TARGET_NR_inotify_init 290
-#define TARGET_NR_inotify_add_watch    291
-#define TARGET_NR_inotify_rm_watch     292
-/* 293 is unused */
-#define TARGET_NR_migrate_pages        294
-#define TARGET_NR_openat               295
-#define TARGET_NR_mkdirat              296
-#define TARGET_NR_mknodat              297
-#define TARGET_NR_fchownat             298
-#define TARGET_NR_futimesat            299
-#define TARGET_NR_fstatat64            300
-#define TARGET_NR_unlinkat             301
-#define TARGET_NR_renameat             302
-#define TARGET_NR_linkat               303
-#define TARGET_NR_symlinkat            304
-#define TARGET_NR_readlinkat           305
-#define TARGET_NR_fchmodat             306
-#define TARGET_NR_faccessat            307
-#define TARGET_NR_pselect6             308
-#define TARGET_NR_ppoll                309
-#define TARGET_NR_unshare              310
-#define TARGET_NR_set_robust_list      311
-#define TARGET_NR_get_robust_list      312
-#define TARGET_NR_splice               313
-#define TARGET_NR_sync_file_range      314
-#define TARGET_NR_tee          315
-#define TARGET_NR_vmsplice             316
-#define TARGET_NR_move_pages           317
-#define TARGET_NR_getcpu               318
-#define TARGET_NR_epoll_pwait  319
-#define TARGET_NR_utimensat            320
-#define TARGET_NR_signalfd             321
-#define TARGET_NR_timerfd_create       322
-#define TARGET_NR_eventfd              323
-#define TARGET_NR_fallocate            324
-#define TARGET_NR_timerfd_settime      325
-#define TARGET_NR_timerfd_gettime      326
-#define TARGET_NR_signalfd4            327
-#define TARGET_NR_eventfd2             328
-#define TARGET_NR_epoll_create1        329
-#define TARGET_NR_dup3                 330
-#define TARGET_NR_pipe2                331
-#define TARGET_NR_inotify_init1        332
-#define TARGET_NR_preadv                333
-#define TARGET_NR_pwritev               334
-#define TARGET_NR_rt_tgsigqueueinfo     335
-#define TARGET_NR_perf_event_open       336
-#define TARGET_NR_fanotify_init         337
-#define TARGET_NR_fanotify_mark         338
-#define TARGET_NR_prlimit64             339
-
-/* Non-multiplexed socket family */
-#define TARGET_NR_socket                340
-#define TARGET_NR_bind                  341
-#define TARGET_NR_connect               342
-#define TARGET_NR_listen                343
-#define TARGET_NR_accept                344
-#define TARGET_NR_getsockname           345
-#define TARGET_NR_getpeername           346
-#define TARGET_NR_socketpair            347
-#define TARGET_NR_send                  348
-#define TARGET_NR_sendto                349
-#define TARGET_NR_recv                  350
-#define TARGET_NR_recvfrom              351
-#define TARGET_NR_shutdown              352
-#define TARGET_NR_setsockopt            353
-#define TARGET_NR_getsockopt            354
-#define TARGET_NR_sendmsg               355
-#define TARGET_NR_recvmsg               356
-#define TARGET_NR_recvmmsg              357
-#define TARGET_NR_accept4               358
-#define TARGET_NR_name_to_handle_at     359
-#define TARGET_NR_open_by_handle_at     360
-#define TARGET_NR_clock_adjtime         361
-#define TARGET_NR_syncfs                362
-#define TARGET_NR_sendmmsg              363
-#define TARGET_NR_setns                 364
-#define TARGET_NR_process_vm_readv      365
-#define TARGET_NR_process_vm_writev     366
-#define TARGET_NR_kcmp                  367
-#define TARGET_NR_finit_module          368
-#define TARGET_NR_sched_getattr         369
-#define TARGET_NR_sched_setattr         370
-#define TARGET_NR_renameat2             371
-#define TARGET_NR_seccomp               372
-#define TARGET_NR_getrandom             373
-#define TARGET_NR_memfd_create          374
-#define TARGET_NR_bpf                   375
-#define TARGET_NR_execveat              376
-#define TARGET_NR_userfaultfd           377
-#define TARGET_NR_membarrier            378
-#define TARGET_NR_mlock2                379
-#define TARGET_NR_copy_file_range       380
-#define TARGET_NR_preadv2               381
-#define TARGET_NR_pwritev2              382
-#define TARGET_NR_statx                 383
-#define TARGET_NR_pkey_mprotect         384
-#define TARGET_NR_pkey_alloc            385
-#define TARGET_NR_pkey_free             386
-#define TARGET_NR_rseq                  387
-/* room for arch specific syscalls */
-#define TARGET_NR_semget                         393
-#define TARGET_NR_semctl                         394
-#define TARGET_NR_shmget                         395
-#define TARGET_NR_shmctl                         396
-#define TARGET_NR_shmat                          397
-#define TARGET_NR_shmdt                          398
-#define TARGET_NR_msgget                         399
-#define TARGET_NR_msgsnd                         400
-#define TARGET_NR_msgrcv                         401
-#define TARGET_NR_msgctl                         402
-#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
-/* 435 reserved for clone3 */
-
-#endif
diff --git a/linux-user/sh4/syscallhdr.sh b/linux-user/sh4/syscallhdr.sh
new file mode 100644 (file)
index 0000000..0807905
--- /dev/null
@@ -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_SH4_`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 */" "${fileguard}"
+) > "$out"
diff --git a/linux-user/sparc/Makefile.objs b/linux-user/sparc/Makefile.objs
new file mode 100644 (file)
index 0000000..29d3f06
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/sparc/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/sparc/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/sparc/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/sparc/syscall.tbl b/linux-user/sparc/syscall.tbl
new file mode 100644 (file)
index 0000000..f13615e
--- /dev/null
@@ -0,0 +1,485 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for sparc
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> can be common, 64, or 32 for this file.
+#
+0      common  restart_syscall         sys_restart_syscall
+1      32      exit                    sys_exit                        sparc_exit
+1      64      exit                    sparc_exit
+2      common  fork                    sys_fork
+3      common  read                    sys_read
+4      common  write                   sys_write
+5      common  open                    sys_open                        compat_sys_open
+6      common  close                   sys_close
+7      common  wait4                   sys_wait4                       compat_sys_wait4
+8      common  creat                   sys_creat
+9      common  link                    sys_link
+10     common  unlink                  sys_unlink
+11     32      execv                   sunos_execv
+11     64      execv                   sys_nis_syscall
+12     common  chdir                   sys_chdir
+13     32      chown                   sys_chown16
+13     64      chown                   sys_chown
+14     common  mknod                   sys_mknod
+15     common  chmod                   sys_chmod
+16     32      lchown                  sys_lchown16
+16     64      lchown                  sys_lchown
+17     common  brk                     sys_brk
+18     common  perfctr                 sys_nis_syscall
+19     common  lseek                   sys_lseek                       compat_sys_lseek
+20     common  getpid                  sys_getpid
+21     common  capget                  sys_capget
+22     common  capset                  sys_capset
+23     32      setuid                  sys_setuid16
+23     64      setuid                  sys_setuid
+24     32      getuid                  sys_getuid16
+24     64      getuid                  sys_getuid
+25     common  vmsplice                sys_vmsplice                    compat_sys_vmsplice
+26     common  ptrace                  sys_ptrace                      compat_sys_ptrace
+27     common  alarm                   sys_alarm
+28     common  sigaltstack             sys_sigaltstack                 compat_sys_sigaltstack
+29     32      pause                   sys_pause
+29     64      pause                   sys_nis_syscall
+30     32      utime                   sys_utime32
+30     64      utime                   sys_utime
+31     32      lchown32                sys_lchown
+32     32      fchown32                sys_fchown
+33     common  access                  sys_access
+34     common  nice                    sys_nice
+35     32      chown32                 sys_chown
+36     common  sync                    sys_sync
+37     common  kill                    sys_kill
+38     common  stat                    sys_newstat                     compat_sys_newstat
+39     32      sendfile                sys_sendfile                    compat_sys_sendfile
+39     64      sendfile                sys_sendfile64
+40     common  lstat                   sys_newlstat                    compat_sys_newlstat
+41     common  dup                     sys_dup
+42     common  pipe                    sys_sparc_pipe
+43     common  times                   sys_times                       compat_sys_times
+44     32      getuid32                sys_getuid
+45     common  umount2                 sys_umount
+46     32      setgid                  sys_setgid16
+46     64      setgid                  sys_setgid
+47     32      getgid                  sys_getgid16
+47     64      getgid                  sys_getgid
+48     common  signal                  sys_signal
+49     32      geteuid                 sys_geteuid16
+49     64      geteuid                 sys_geteuid
+50     32      getegid                 sys_getegid16
+50     64      getegid                 sys_getegid
+51     common  acct                    sys_acct
+52     64      memory_ordering         sys_memory_ordering
+53     32      getgid32                sys_getgid
+54     common  ioctl                   sys_ioctl                       compat_sys_ioctl
+55     common  reboot                  sys_reboot
+56     32      mmap2                   sys_mmap2                       sys32_mmap2
+57     common  symlink                 sys_symlink
+58     common  readlink                sys_readlink
+59     32      execve                  sys_execve                      sys32_execve
+59     64      execve                  sys64_execve
+60     common  umask                   sys_umask
+61     common  chroot                  sys_chroot
+62     common  fstat                   sys_newfstat                    compat_sys_newfstat
+63     common  fstat64                 sys_fstat64                     compat_sys_fstat64
+64     common  getpagesize             sys_getpagesize
+65     common  msync                   sys_msync
+66     common  vfork                   sys_vfork
+67     common  pread64                 sys_pread64                     compat_sys_pread64
+68     common  pwrite64                sys_pwrite64                    compat_sys_pwrite64
+69     32      geteuid32               sys_geteuid
+70     32      getegid32               sys_getegid
+71     common  mmap                    sys_mmap
+72     32      setreuid32              sys_setreuid
+73     32      munmap                  sys_munmap
+73     64      munmap                  sys_64_munmap
+74     common  mprotect                sys_mprotect
+75     common  madvise                 sys_madvise
+76     common  vhangup                 sys_vhangup
+77     32      truncate64              sys_truncate64                  compat_sys_truncate64
+78     common  mincore                 sys_mincore
+79     32      getgroups               sys_getgroups16
+79     64      getgroups               sys_getgroups
+80     32      setgroups               sys_setgroups16
+80     64      setgroups               sys_setgroups
+81     common  getpgrp                 sys_getpgrp
+82     32      setgroups32             sys_setgroups
+83     common  setitimer               sys_setitimer                   compat_sys_setitimer
+84     32      ftruncate64             sys_ftruncate64                 compat_sys_ftruncate64
+85     common  swapon                  sys_swapon
+86     common  getitimer               sys_getitimer                   compat_sys_getitimer
+87     32      setuid32                sys_setuid
+88     common  sethostname             sys_sethostname
+89     32      setgid32                sys_setgid
+90     common  dup2                    sys_dup2
+91     32      setfsuid32              sys_setfsuid
+92     common  fcntl                   sys_fcntl                       compat_sys_fcntl
+93     common  select                  sys_select
+94     32      setfsgid32              sys_setfsgid
+95     common  fsync                   sys_fsync
+96     common  setpriority             sys_setpriority
+97     common  socket                  sys_socket
+98     common  connect                 sys_connect
+99     common  accept                  sys_accept
+100    common  getpriority             sys_getpriority
+101    common  rt_sigreturn            sys_rt_sigreturn                sys32_rt_sigreturn
+102    common  rt_sigaction            sys_rt_sigaction                compat_sys_rt_sigaction
+103    common  rt_sigprocmask          sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+104    common  rt_sigpending           sys_rt_sigpending               compat_sys_rt_sigpending
+105    32      rt_sigtimedwait         sys_rt_sigtimedwait_time32      compat_sys_rt_sigtimedwait_time32
+105    64      rt_sigtimedwait         sys_rt_sigtimedwait
+106    common  rt_sigqueueinfo         sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+107    common  rt_sigsuspend           sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+108    32      setresuid32             sys_setresuid
+108    64      setresuid               sys_setresuid
+109    32      getresuid32             sys_getresuid
+109    64      getresuid               sys_getresuid
+110    32      setresgid32             sys_setresgid
+110    64      setresgid               sys_setresgid
+111    32      getresgid32             sys_getresgid
+111    64      getresgid               sys_getresgid
+112    32      setregid32              sys_setregid
+113    common  recvmsg                 sys_recvmsg                     compat_sys_recvmsg
+114    common  sendmsg                 sys_sendmsg                     compat_sys_sendmsg
+115    32      getgroups32             sys_getgroups
+116    common  gettimeofday            sys_gettimeofday                compat_sys_gettimeofday
+117    common  getrusage               sys_getrusage                   compat_sys_getrusage
+118    common  getsockopt              sys_getsockopt                  compat_sys_getsockopt
+119    common  getcwd                  sys_getcwd
+120    common  readv                   sys_readv                       compat_sys_readv
+121    common  writev                  sys_writev                      compat_sys_writev
+122    common  settimeofday            sys_settimeofday                compat_sys_settimeofday
+123    32      fchown                  sys_fchown16
+123    64      fchown                  sys_fchown
+124    common  fchmod                  sys_fchmod
+125    common  recvfrom                sys_recvfrom
+126    32      setreuid                sys_setreuid16
+126    64      setreuid                sys_setreuid
+127    32      setregid                sys_setregid16
+127    64      setregid                sys_setregid
+128    common  rename                  sys_rename
+129    common  truncate                sys_truncate                    compat_sys_truncate
+130    common  ftruncate               sys_ftruncate                   compat_sys_ftruncate
+131    common  flock                   sys_flock
+132    common  lstat64                 sys_lstat64                     compat_sys_lstat64
+133    common  sendto                  sys_sendto
+134    common  shutdown                sys_shutdown
+135    common  socketpair              sys_socketpair
+136    common  mkdir                   sys_mkdir
+137    common  rmdir                   sys_rmdir
+138    32      utimes                  sys_utimes_time32
+138    64      utimes                  sys_utimes
+139    common  stat64                  sys_stat64                      compat_sys_stat64
+140    common  sendfile64              sys_sendfile64
+141    common  getpeername             sys_getpeername
+142    32      futex                   sys_futex_time32
+142    64      futex                   sys_futex
+143    common  gettid                  sys_gettid
+144    common  getrlimit               sys_getrlimit                   compat_sys_getrlimit
+145    common  setrlimit               sys_setrlimit                   compat_sys_setrlimit
+146    common  pivot_root              sys_pivot_root
+147    common  prctl                   sys_prctl
+148    common  pciconfig_read          sys_pciconfig_read
+149    common  pciconfig_write         sys_pciconfig_write
+150    common  getsockname             sys_getsockname
+151    common  inotify_init            sys_inotify_init
+152    common  inotify_add_watch       sys_inotify_add_watch
+153    common  poll                    sys_poll
+154    common  getdents64              sys_getdents64
+155    32      fcntl64                 sys_fcntl64                     compat_sys_fcntl64
+156    common  inotify_rm_watch        sys_inotify_rm_watch
+157    common  statfs                  sys_statfs                      compat_sys_statfs
+158    common  fstatfs                 sys_fstatfs                     compat_sys_fstatfs
+159    common  umount                  sys_oldumount
+160    common  sched_set_affinity      sys_sched_setaffinity           compat_sys_sched_setaffinity
+161    common  sched_get_affinity      sys_sched_getaffinity           compat_sys_sched_getaffinity
+162    common  getdomainname           sys_getdomainname
+163    common  setdomainname           sys_setdomainname
+164    64      utrap_install           sys_utrap_install
+165    common  quotactl                sys_quotactl
+166    common  set_tid_address         sys_set_tid_address
+167    common  mount                   sys_mount                       compat_sys_mount
+168    common  ustat                   sys_ustat                       compat_sys_ustat
+169    common  setxattr                sys_setxattr
+170    common  lsetxattr               sys_lsetxattr
+171    common  fsetxattr               sys_fsetxattr
+172    common  getxattr                sys_getxattr
+173    common  lgetxattr               sys_lgetxattr
+174    common  getdents                sys_getdents                    compat_sys_getdents
+175    common  setsid                  sys_setsid
+176    common  fchdir                  sys_fchdir
+177    common  fgetxattr               sys_fgetxattr
+178    common  listxattr               sys_listxattr
+179    common  llistxattr              sys_llistxattr
+180    common  flistxattr              sys_flistxattr
+181    common  removexattr             sys_removexattr
+182    common  lremovexattr            sys_lremovexattr
+183    32      sigpending              sys_sigpending                  compat_sys_sigpending
+183    64      sigpending              sys_nis_syscall
+184    common  query_module            sys_ni_syscall
+185    common  setpgid                 sys_setpgid
+186    common  fremovexattr            sys_fremovexattr
+187    common  tkill                   sys_tkill
+188    32      exit_group              sys_exit_group                  sparc_exit_group
+188    64      exit_group              sparc_exit_group
+189    common  uname                   sys_newuname
+190    common  init_module             sys_init_module
+191    32      personality             sys_personality                 sys_sparc64_personality
+191    64      personality             sys_sparc64_personality
+192    32      remap_file_pages        sys_sparc_remap_file_pages      sys_remap_file_pages
+192    64      remap_file_pages        sys_remap_file_pages
+193    common  epoll_create            sys_epoll_create
+194    common  epoll_ctl               sys_epoll_ctl
+195    common  epoll_wait              sys_epoll_wait
+196    common  ioprio_set              sys_ioprio_set
+197    common  getppid                 sys_getppid
+198    32      sigaction               sys_sparc_sigaction             compat_sys_sparc_sigaction
+198    64      sigaction               sys_nis_syscall
+199    common  sgetmask                sys_sgetmask
+200    common  ssetmask                sys_ssetmask
+201    32      sigsuspend              sys_sigsuspend
+201    64      sigsuspend              sys_nis_syscall
+202    common  oldlstat                sys_newlstat                    compat_sys_newlstat
+203    common  uselib                  sys_uselib
+204    32      readdir                 sys_old_readdir                 compat_sys_old_readdir
+204    64      readdir                 sys_nis_syscall
+205    common  readahead               sys_readahead                   compat_sys_readahead
+206    common  socketcall              sys_socketcall                  sys32_socketcall
+207    common  syslog                  sys_syslog
+208    common  lookup_dcookie          sys_lookup_dcookie              compat_sys_lookup_dcookie
+209    common  fadvise64               sys_fadvise64                   compat_sys_fadvise64
+210    common  fadvise64_64            sys_fadvise64_64                compat_sys_fadvise64_64
+211    common  tgkill                  sys_tgkill
+212    common  waitpid                 sys_waitpid
+213    common  swapoff                 sys_swapoff
+214    common  sysinfo                 sys_sysinfo                     compat_sys_sysinfo
+215    32      ipc                     sys_ipc                         compat_sys_ipc
+215    64      ipc                     sys_sparc_ipc
+216    32      sigreturn               sys_sigreturn                   sys32_sigreturn
+216    64      sigreturn               sys_nis_syscall
+217    common  clone                   sys_clone
+218    common  ioprio_get              sys_ioprio_get
+219    32      adjtimex                sys_adjtimex_time32
+219    64      adjtimex                sys_sparc_adjtimex
+220    32      sigprocmask             sys_sigprocmask                 compat_sys_sigprocmask
+220    64      sigprocmask             sys_nis_syscall
+221    common  create_module           sys_ni_syscall
+222    common  delete_module           sys_delete_module
+223    common  get_kernel_syms         sys_ni_syscall
+224    common  getpgid                 sys_getpgid
+225    common  bdflush                 sys_bdflush
+226    common  sysfs                   sys_sysfs
+227    common  afs_syscall             sys_nis_syscall
+228    common  setfsuid                sys_setfsuid16
+229    common  setfsgid                sys_setfsgid16
+230    common  _newselect              sys_select                      compat_sys_select
+231    32      time                    sys_time32
+232    common  splice                  sys_splice
+233    32      stime                   sys_stime32
+233    64      stime                   sys_stime
+234    common  statfs64                sys_statfs64                    compat_sys_statfs64
+235    common  fstatfs64               sys_fstatfs64                   compat_sys_fstatfs64
+236    common  _llseek                 sys_llseek
+237    common  mlock                   sys_mlock
+238    common  munlock                 sys_munlock
+239    common  mlockall                sys_mlockall
+240    common  munlockall              sys_munlockall
+241    common  sched_setparam          sys_sched_setparam
+242    common  sched_getparam          sys_sched_getparam
+243    common  sched_setscheduler      sys_sched_setscheduler
+244    common  sched_getscheduler      sys_sched_getscheduler
+245    common  sched_yield             sys_sched_yield
+246    common  sched_get_priority_max  sys_sched_get_priority_max
+247    common  sched_get_priority_min  sys_sched_get_priority_min
+248    32      sched_rr_get_interval   sys_sched_rr_get_interval_time32
+248    64      sched_rr_get_interval   sys_sched_rr_get_interval
+249    32      nanosleep               sys_nanosleep_time32
+249    64      nanosleep               sys_nanosleep
+250    32      mremap                  sys_mremap
+250    64      mremap                  sys_64_mremap
+251    common  _sysctl                 sys_sysctl                      compat_sys_sysctl
+252    common  getsid                  sys_getsid
+253    common  fdatasync               sys_fdatasync
+254    32      nfsservctl              sys_ni_syscall                  sys_nis_syscall
+254    64      nfsservctl              sys_nis_syscall
+255    common  sync_file_range         sys_sync_file_range             compat_sys_sync_file_range
+256    32      clock_settime           sys_clock_settime32
+256    64      clock_settime           sys_clock_settime
+257    32      clock_gettime           sys_clock_gettime32
+257    64      clock_gettime           sys_clock_gettime
+258    32      clock_getres            sys_clock_getres_time32
+258    64      clock_getres            sys_clock_getres
+259    32      clock_nanosleep         sys_clock_nanosleep_time32
+259    64      clock_nanosleep         sys_clock_nanosleep
+260    common  sched_getaffinity       sys_sched_getaffinity           compat_sys_sched_getaffinity
+261    common  sched_setaffinity       sys_sched_setaffinity           compat_sys_sched_setaffinity
+262    32      timer_settime           sys_timer_settime32
+262    64      timer_settime           sys_timer_settime
+263    32      timer_gettime           sys_timer_gettime32
+263    64      timer_gettime           sys_timer_gettime
+264    common  timer_getoverrun        sys_timer_getoverrun
+265    common  timer_delete            sys_timer_delete
+266    common  timer_create            sys_timer_create                compat_sys_timer_create
+# 267 was vserver
+267    common  vserver                 sys_nis_syscall
+268    common  io_setup                sys_io_setup                    compat_sys_io_setup
+269    common  io_destroy              sys_io_destroy
+270    common  io_submit               sys_io_submit                   compat_sys_io_submit
+271    common  io_cancel               sys_io_cancel
+272    32      io_getevents            sys_io_getevents_time32
+272    64      io_getevents            sys_io_getevents
+273    common  mq_open                 sys_mq_open                     compat_sys_mq_open
+274    common  mq_unlink               sys_mq_unlink
+275    32      mq_timedsend            sys_mq_timedsend_time32
+275    64      mq_timedsend            sys_mq_timedsend
+276    32      mq_timedreceive         sys_mq_timedreceive_time32
+276    64      mq_timedreceive         sys_mq_timedreceive
+277    common  mq_notify               sys_mq_notify                   compat_sys_mq_notify
+278    common  mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
+279    common  waitid                  sys_waitid                      compat_sys_waitid
+280    common  tee                     sys_tee
+281    common  add_key                 sys_add_key
+282    common  request_key             sys_request_key
+283    common  keyctl                  sys_keyctl                      compat_sys_keyctl
+284    common  openat                  sys_openat                      compat_sys_openat
+285    common  mkdirat                 sys_mkdirat
+286    common  mknodat                 sys_mknodat
+287    common  fchownat                sys_fchownat
+288    32      futimesat               sys_futimesat_time32
+288    64      futimesat               sys_futimesat
+289    common  fstatat64               sys_fstatat64                   compat_sys_fstatat64
+290    common  unlinkat                sys_unlinkat
+291    common  renameat                sys_renameat
+292    common  linkat                  sys_linkat
+293    common  symlinkat               sys_symlinkat
+294    common  readlinkat              sys_readlinkat
+295    common  fchmodat                sys_fchmodat
+296    common  faccessat               sys_faccessat
+297    32      pselect6                sys_pselect6_time32             compat_sys_pselect6_time32
+297    64      pselect6                sys_pselect6
+298    32      ppoll                   sys_ppoll_time32                compat_sys_ppoll_time32
+298    64      ppoll                   sys_ppoll
+299    common  unshare                 sys_unshare
+300    common  set_robust_list         sys_set_robust_list             compat_sys_set_robust_list
+301    common  get_robust_list         sys_get_robust_list             compat_sys_get_robust_list
+302    common  migrate_pages           sys_migrate_pages               compat_sys_migrate_pages
+303    common  mbind                   sys_mbind                       compat_sys_mbind
+304    common  get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
+305    common  set_mempolicy           sys_set_mempolicy               compat_sys_set_mempolicy
+306    common  kexec_load              sys_kexec_load                  compat_sys_kexec_load
+307    common  move_pages              sys_move_pages                  compat_sys_move_pages
+308    common  getcpu                  sys_getcpu
+309    common  epoll_pwait             sys_epoll_pwait                 compat_sys_epoll_pwait
+310    32      utimensat               sys_utimensat_time32
+310    64      utimensat               sys_utimensat
+311    common  signalfd                sys_signalfd                    compat_sys_signalfd
+312    common  timerfd_create          sys_timerfd_create
+313    common  eventfd                 sys_eventfd
+314    common  fallocate               sys_fallocate                   compat_sys_fallocate
+315    32      timerfd_settime         sys_timerfd_settime32
+315    64      timerfd_settime         sys_timerfd_settime
+316    32      timerfd_gettime         sys_timerfd_gettime32
+316    64      timerfd_gettime         sys_timerfd_gettime
+317    common  signalfd4               sys_signalfd4                   compat_sys_signalfd4
+318    common  eventfd2                sys_eventfd2
+319    common  epoll_create1           sys_epoll_create1
+320    common  dup3                    sys_dup3
+321    common  pipe2                   sys_pipe2
+322    common  inotify_init1           sys_inotify_init1
+323    common  accept4                 sys_accept4
+324    common  preadv                  sys_preadv                      compat_sys_preadv
+325    common  pwritev                 sys_pwritev                     compat_sys_pwritev
+326    common  rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+327    common  perf_event_open         sys_perf_event_open
+328    32      recvmmsg                sys_recvmmsg_time32             compat_sys_recvmmsg_time32
+328    64      recvmmsg                sys_recvmmsg
+329    common  fanotify_init           sys_fanotify_init
+330    common  fanotify_mark           sys_fanotify_mark               compat_sys_fanotify_mark
+331    common  prlimit64               sys_prlimit64
+332    common  name_to_handle_at       sys_name_to_handle_at
+333    common  open_by_handle_at       sys_open_by_handle_at           compat_sys_open_by_handle_at
+334    32      clock_adjtime           sys_clock_adjtime32
+334    64      clock_adjtime           sys_sparc_clock_adjtime
+335    common  syncfs                  sys_syncfs
+336    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
+337    common  setns                   sys_setns
+338    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
+339    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+340    32      kern_features           sys_ni_syscall                  sys_kern_features
+340    64      kern_features           sys_kern_features
+341    common  kcmp                    sys_kcmp
+342    common  finit_module            sys_finit_module
+343    common  sched_setattr           sys_sched_setattr
+344    common  sched_getattr           sys_sched_getattr
+345    common  renameat2               sys_renameat2
+346    common  seccomp                 sys_seccomp
+347    common  getrandom               sys_getrandom
+348    common  memfd_create            sys_memfd_create
+349    common  bpf                     sys_bpf
+350    32      execveat                sys_execveat                    sys32_execveat
+350    64      execveat                sys64_execveat
+351    common  membarrier              sys_membarrier
+352    common  userfaultfd             sys_userfaultfd
+353    common  bind                    sys_bind
+354    common  listen                  sys_listen
+355    common  setsockopt              sys_setsockopt                  compat_sys_setsockopt
+356    common  mlock2                  sys_mlock2
+357    common  copy_file_range         sys_copy_file_range
+358    common  preadv2                 sys_preadv2                     compat_sys_preadv2
+359    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
+360    common  statx                   sys_statx
+361    32      io_pgetevents           sys_io_pgetevents_time32        compat_sys_io_pgetevents
+361    64      io_pgetevents           sys_io_pgetevents
+362    common  pkey_mprotect           sys_pkey_mprotect
+363    common  pkey_alloc              sys_pkey_alloc
+364    common  pkey_free               sys_pkey_free
+365    common  rseq                    sys_rseq
+# room for arch specific syscalls
+392    64      semtimedop                      sys_semtimedop
+393    common  semget                  sys_semget
+394    common  semctl                  sys_semctl                      compat_sys_semctl
+395    common  shmget                  sys_shmget
+396    common  shmctl                  sys_shmctl                      compat_sys_shmctl
+397    common  shmat                   sys_shmat                       compat_sys_shmat
+398    common  shmdt                   sys_shmdt
+399    common  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               sys_clock_gettime
+404    32      clock_settime64                 sys_clock_settime               sys_clock_settime
+405    32      clock_adjtime64                 sys_clock_adjtime               sys_clock_adjtime
+406    32      clock_getres_time64             sys_clock_getres                sys_clock_getres
+407    32      clock_nanosleep_time64          sys_clock_nanosleep             sys_clock_nanosleep
+408    32      timer_gettime64                 sys_timer_gettime               sys_timer_gettime
+409    32      timer_settime64                 sys_timer_settime               sys_timer_settime
+410    32      timerfd_gettime64               sys_timerfd_gettime             sys_timerfd_gettime
+411    32      timerfd_settime64               sys_timerfd_settime             sys_timerfd_settime
+412    32      utimensat_time64                sys_utimensat                   sys_utimensat
+413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
+414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
+416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
+418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
+419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
+420    32      semtimedop_time64               sys_semtimedop                  sys_semtimedop
+421    32      rt_sigtimedwait_time64          sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait_time64
+422    32      futex_time64                    sys_futex                       sys_futex
+423    32      sched_rr_get_interval_time64    sys_sched_rr_get_interval       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 reserved for clone3
+437    common  openat2                 sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/sparc/syscall_nr.h b/linux-user/sparc/syscall_nr.h
deleted file mode 100644 (file)
index 162099f..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-#ifndef LINUX_USER_SPARC_SYSCALL_NR_H
-#define LINUX_USER_SPARC_SYSCALL_NR_H
-
-#define TARGET_NR_exit                 1 /* Common                                      */
-#define TARGET_NR_fork                 2 /* Common                                      */
-#define TARGET_NR_read                 3 /* Common                                      */
-#define TARGET_NR_write                4 /* Common                                      */
-#define TARGET_NR_open                 5 /* Common                                      */
-#define TARGET_NR_close                6 /* Common                                      */
-#define TARGET_NR_wait4                7 /* Common                                      */
-#define TARGET_NR_creat                8 /* Common                                      */
-#define TARGET_NR_link                 9 /* Common                                      */
-#define TARGET_NR_unlink              10 /* Common                                      */
-#define TARGET_NR_execv               11 /* SunOS Specific                              */
-#define TARGET_NR_chdir               12 /* Common                                      */
-#define TARGET_NR_chown                 13 /* Common                                      */
-#define TARGET_NR_mknod               14 /* Common                                      */
-#define TARGET_NR_chmod               15 /* Common                                      */
-#define TARGET_NR_lchown              16 /* Common                                      */
-#define TARGET_NR_brk                 17 /* Common                                      */
-#define TARGET_NR_perfctr             18 /* Performance counter operations              */
-#define TARGET_NR_lseek               19 /* Common                                      */
-#define TARGET_NR_getpid              20 /* Common                                      */
-#define TARGET_NR_capget                21 /* Linux Specific                              */
-#define TARGET_NR_capset                22 /* Linux Specific                              */
-#define TARGET_NR_setuid              23 /* Implemented via setreuid in SunOS           */
-#define TARGET_NR_getuid              24 /* Common                                      */
-#define TARGET_NR_vmsplice            25
-#define TARGET_NR_ptrace              26 /* Common                                      */
-#define TARGET_NR_alarm               27 /* Implemented via setitimer in SunOS          */
-#define TARGET_NR_sigaltstack   28 /* Common                                      */
-#define TARGET_NR_pause               29 /* Is sigblock(0)->sigpause() in SunOS         */
-#define TARGET_NR_utime               30 /* Implemented via utimes() under SunOS        */
-#define TARGET_NR_lchown32            31 /* Linux sparc32 specific                      */
-#define TARGET_NR_fchown32            32 /* Linux sparc32 specific                      */
-#define TARGET_NR_access              33 /* Common                                      */
-#define TARGET_NR_nice                34 /* Implemented via get/setpriority() in SunOS  */
-#define TARGET_NR_chown32             35 /* Linux sparc32 specific                      */
-#define TARGET_NR_sync                36 /* Common                                      */
-#define TARGET_NR_kill                37 /* Common                                      */
-#define TARGET_NR_stat                38 /* Common                                      */
-#define TARGET_NR_sendfile              39 /* Linux Specific                              */
-#define TARGET_NR_lstat               40 /* Common                                      */
-#define TARGET_NR_dup                 41 /* Common                                      */
-#define TARGET_NR_pipe                42 /* Common                                      */
-#define TARGET_NR_times               43 /* Implemented via getrusage() in SunOS        */
-#define TARGET_NR_getuid32            44 /* Linux sparc32 specific                      */
-#define TARGET_NR_umount2             45 /* Linux Specific                              */
-#define TARGET_NR_setgid              46 /* Implemented via setregid() in SunOS         */
-#define TARGET_NR_getgid              47 /* Common                                      */
-#define TARGET_NR_signal              48 /* Implemented via sigvec() in SunOS           */
-#define TARGET_NR_geteuid             49 /* SunOS calls getuid()                        */
-#define TARGET_NR_getegid             50 /* SunOS calls getgid()                        */
-#define TARGET_NR_acct                51 /* Common                                      */
-#define TARGET_NR_getgid32            53 /* Linux sparc32 specific                      */
-#define TARGET_NR_ioctl               54 /* Common                                      */
-#define TARGET_NR_reboot              55 /* Common                                      */
-#define TARGET_NR_mmap2                 56 /* Linux sparc32 Specific                      */
-#define TARGET_NR_symlink             57 /* Common                                      */
-#define TARGET_NR_readlink            58 /* Common                                      */
-#define TARGET_NR_execve              59 /* Common                                      */
-#define TARGET_NR_umask               60 /* Common                                      */
-#define TARGET_NR_chroot              61 /* Common                                      */
-#define TARGET_NR_fstat               62 /* Common                                      */
-#define TARGET_NR_fstat64               63 /* Linux sparc32 Specific                      */
-#define TARGET_NR_getpagesize         64 /* Common                                      */
-#define TARGET_NR_msync               65 /* Common in newer 1.3.x revs...               */
-#define TARGET_NR_vfork               66 /* Common                                      */
-#define TARGET_NR_pread64             67 /* Linux Specific */
-#define TARGET_NR_pwrite64            68 /* Linux Specific */
-#define TARGET_NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */
-#define TARGET_NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */
-#define TARGET_NR_mmap                71 /* Common                                      */
-#define TARGET_NR_setreuid32          72 /* Linux sparc32, vadvise under SunOS          */
-#define TARGET_NR_munmap              73 /* Common                                      */
-#define TARGET_NR_mprotect            74 /* Common                                      */
-#define TARGET_NR_madvise             75 /* Common                                      */
-#define TARGET_NR_vhangup             76 /* Common                                      */
-#define TARGET_NR_truncate64            77 /* Linux sparc32 Specific                      */
-#define TARGET_NR_mincore             78 /* Common                                      */
-#define TARGET_NR_getgroups           79 /* Common                                      */
-#define TARGET_NR_setgroups           80 /* Common                                      */
-#define TARGET_NR_getpgrp             81 /* Common                                      */
-#define TARGET_NR_setgroups32         82 /* Linux sparc32, setpgrp under SunOS          */
-#define TARGET_NR_setitimer           83 /* Common                                      */
-#define TARGET_NR_ftruncate64   84 /* Linux sparc32 Specific                      */
-#define TARGET_NR_swapon              85 /* Common                                      */
-#define TARGET_NR_getitimer           86 /* Common                                      */
-#define TARGET_NR_setuid32            87 /* Linux sparc32, gethostname under SunOS      */
-#define TARGET_NR_sethostname         88 /* Common                                      */
-#define TARGET_NR_setgid32            89 /* Linux sparc32, getdtablesize under SunOS    */
-#define TARGET_NR_dup2                90 /* Common                                      */
-#define TARGET_NR_setfsuid32          91 /* Linux sparc32, getdopt under SunOS          */
-#define TARGET_NR_fcntl               92 /* Common                                      */
-#define TARGET_NR_select              93 /* Common                                      */
-#define TARGET_NR_setfsgid32          94 /* Linux sparc32, setdopt under SunOS          */
-#define TARGET_NR_fsync               95 /* Common                                      */
-#define TARGET_NR_setpriority         96 /* Common                                      */
-#define TARGET_NR_socket              97 /* Common                                      */
-#define TARGET_NR_connect             98 /* Common                                      */
-#define TARGET_NR_accept              99 /* Common                                      */
-#define TARGET_NR_getpriority        100 /* Common                                      */
-#define TARGET_NR_rt_sigreturn       101 /* Linux Specific                              */
-#define TARGET_NR_rt_sigaction       102 /* Linux Specific                              */
-#define TARGET_NR_rt_sigprocmask     103 /* Linux Specific                              */
-#define TARGET_NR_rt_sigpending      104 /* Linux Specific                              */
-#define TARGET_NR_rt_sigtimedwait    105 /* Linux Specific                              */
-#define TARGET_NR_rt_sigqueueinfo    106 /* Linux Specific                              */
-#define TARGET_NR_rt_sigsuspend      107 /* Linux Specific                              */
-#define TARGET_NR_setresuid32        108 /* Linux Specific, sigvec under SunOS    */
-#define TARGET_NR_getresuid32        109 /* Linux Specific, sigblock under SunOS          */
-#define TARGET_NR_setresgid32        110 /* Linux Specific, sigsetmask under SunOS        */
-#define TARGET_NR_getresgid32        111 /* Linux Specific, sigpause under SunOS          */
-#define TARGET_NR_setregid32         112 /* Linux sparc32, sigstack under SunOS         */
-#define TARGET_NR_recvmsg            113 /* Common                                      */
-#define TARGET_NR_sendmsg            114 /* Common                                      */
-#define TARGET_NR_getgroups32        115 /* Linux sparc32, vtrace under SunOS           */
-#define TARGET_NR_gettimeofday       116 /* Common                                      */
-#define TARGET_NR_getrusage          117 /* Common                                      */
-#define TARGET_NR_getsockopt         118 /* Common                                      */
-#define TARGET_NR_getcwd               119 /* Linux Specific                              */
-#define TARGET_NR_readv              120 /* Common                                      */
-#define TARGET_NR_writev             121 /* Common                                      */
-#define TARGET_NR_settimeofday       122 /* Common                                      */
-#define TARGET_NR_fchown             123 /* Common                                      */
-#define TARGET_NR_fchmod             124 /* Common                                      */
-#define TARGET_NR_recvfrom           125 /* Common                                      */
-#define TARGET_NR_setreuid           126 /* Common                                      */
-#define TARGET_NR_setregid           127 /* Common                                      */
-#define TARGET_NR_rename             128 /* Common                                      */
-#define TARGET_NR_truncate           129 /* Common                                      */
-#define TARGET_NR_ftruncate          130 /* Common                                      */
-#define TARGET_NR_flock              131 /* Common                                      */
-#define TARGET_NR_lstat64              132 /* Linux sparc32 Specific                      */
-#define TARGET_NR_sendto             133 /* Common                                      */
-#define TARGET_NR_shutdown           134 /* Common                                      */
-#define TARGET_NR_socketpair         135 /* Common                                      */
-#define TARGET_NR_mkdir              136 /* Common                                      */
-#define TARGET_NR_rmdir              137 /* Common                                      */
-#define TARGET_NR_utimes             138 /* SunOS Specific                              */
-#define TARGET_NR_stat64               139 /* Linux sparc32 Specific                      */
-#define TARGET_NR_sendfile64         140
-#define TARGET_NR_getpeername        141 /* Common                                      */
-#define TARGET_NR_futex              142 /* gethostid under SunOS                       */
-#define TARGET_NR_gettid             143 /* ENOSYS under SunOS                          */
-#define TARGET_NR_getrlimit          144 /* Common                                      */
-#define TARGET_NR_setrlimit          145 /* Common                                      */
-#define TARGET_NR_pivot_root           146 /* Linux Specific, killpg under SunOS          */
-#define TARGET_NR_prctl                147 /* ENOSYS under SunOS                          */
-#define TARGET_NR_pciconfig_read       148 /* ENOSYS under SunOS                          */
-#define TARGET_NR_pciconfig_write      149 /* ENOSYS under SunOS                          */
-#define TARGET_NR_getsockname        150 /* Common                                      */
-#define TARGET_NR_inotify_init       151
-#define TARGET_NR_inotify_add_watch  152
-#define TARGET_NR_poll               153 /* Common                                      */
-#define TARGET_NR_getdents64           154 /* Linux specific                              */
-#define TARGET_NR_fcntl64              155 /* Linux sparc32 Specific                      */
-#define TARGET_NR_inotify_rm_watch   156
-#define TARGET_NR_statfs             157 /* Common                                      */
-#define TARGET_NR_fstatfs            158 /* Common                                      */
-#define TARGET_NR_umount             159 /* Common                                      */
-#define TARGET_NR_sched_set_affinity 160
-#define TARGET_NR_sched_get_affinity 161
-#define TARGET_NR_getdomainname      162 /* SunOS Specific                              */
-#define TARGET_NR_setdomainname      163 /* Common                                      */
-#define TARGET_NR_quotactl           165 /* Common                                      */
-#define TARGET_NR_set_tid_address    166 /* Linux specific, exportfs under SunOS        */
-#define TARGET_NR_mount              167 /* Common                                      */
-#define TARGET_NR_ustat              168 /* Common                                      */
-#define TARGET_NR_setxattr           169
-#define TARGET_NR_lsetxattr          170
-#define TARGET_NR_fsetxattr          171
-#define TARGET_NR_getxattr           172
-#define TARGET_NR_lgetxattr          173
-#define TARGET_NR_getdents           174 /* Common                                      */
-#define TARGET_NR_setsid             175 /* Common                                      */
-#define TARGET_NR_fchdir             176 /* Common                                      */
-#define TARGET_NR_fgetxattr          177
-#define TARGET_NR_listxattr          178
-#define TARGET_NR_llistxattr         179
-#define TARGET_NR_flistxattr         180
-#define TARGET_NR_removexattr        181
-#define TARGET_NR_lremovexattr       182
-#define TARGET_NR_sigpending         183 /* Common                                      */
-#define TARGET_NR_query_module 184 /* Linux Specific                              */
-#define TARGET_NR_setpgid            185 /* Common                                      */
-#define TARGET_NR_fremovexattr       186
-#define TARGET_NR_tkill              187 /* SunOS: fpathconf                            */
-#define TARGET_NR_exit_group        188 /* Linux specific, sysconf undef SunOS         */
-#define TARGET_NR_uname              189 /* Linux Specific                              */
-#define TARGET_NR_init_module        190 /* Linux Specific                              */
-#define TARGET_NR_personality        191 /* Linux Specific                              */
-#define TARGET_NR_remap_file_pages   192
-#define TARGET_NR_epoll_create       193
-#define TARGET_NR_epoll_ctl          194
-#define TARGET_NR_epoll_wait         195
-#define TARGET_NR_ioprio_set         196
-#define TARGET_NR_getppid            197 /* Linux Specific                              */
-#define TARGET_NR_sigaction          198 /* Linux Specific                              */
-#define TARGET_NR_sgetmask           199 /* Linux Specific                              */
-#define TARGET_NR_ssetmask           200 /* Linux Specific                              */
-#define TARGET_NR_sigsuspend         201 /* Linux Specific                              */
-#define TARGET_NR_oldlstat           202 /* Linux Specific                              */
-#define TARGET_NR_uselib             203 /* Linux Specific                              */
-#define TARGET_NR_readdir            204 /* Linux Specific                              */
-#define TARGET_NR_readahead          205 /* Linux Specific                              */
-#define TARGET_NR_socketcall         206 /* Linux Specific                              */
-#define TARGET_NR_syslog             207 /* Linux Specific                              */
-#define TARGET_NR_lookup_dcookie     208 /* Linux Specific                              */
-#define TARGET_NR_fadvise64          209 /* Linux Specific                              */
-#define TARGET_NR_fadvise64_64       210 /* Linux Specific                              */
-#define TARGET_NR_tgkill             211 /* Linux Specific                              */
-#define TARGET_NR_waitpid            212 /* Linux Specific                              */
-#define TARGET_NR_swapoff            213 /* Linux Specific                              */
-#define TARGET_NR_sysinfo            214 /* Linux Specific                              */
-#define TARGET_NR_ipc                215 /* Linux Specific                              */
-#define TARGET_NR_sigreturn          216 /* Linux Specific                              */
-#define TARGET_NR_clone              217 /* Linux Specific                              */
-#define TARGET_NR_ioprio_get         218
-#define TARGET_NR_adjtimex           219 /* Linux Specific                              */
-#define TARGET_NR_sigprocmask        220 /* Linux Specific                              */
-#define TARGET_NR_create_module      221 /* Linux Specific                              */
-#define TARGET_NR_delete_module      222 /* Linux Specific                              */
-#define TARGET_NR_get_kernel_syms    223 /* Linux Specific                              */
-#define TARGET_NR_getpgid            224 /* Linux Specific                              */
-#define TARGET_NR_bdflush            225 /* Linux Specific                              */
-#define TARGET_NR_sysfs              226 /* Linux Specific                              */
-#define TARGET_NR_afs_syscall        227 /* Linux Specific                              */
-#define TARGET_NR_setfsuid           228 /* Linux Specific                              */
-#define TARGET_NR_setfsgid           229 /* Linux Specific                              */
-#define TARGET_NR__newselect         230 /* Linux Specific                              */
-#define TARGET_NR_time               231 /* Linux Specific                              */
-#define TARGET_NR_splice             232
-#define TARGET_NR_stime              233 /* Linux Specific                              */
-#define TARGET_NR_statfs64           234 /* Linux Specific                              */
-#define TARGET_NR_fstatfs64          235 /* Linux Specific                              */
-#define TARGET_NR__llseek            236 /* Linux Specific                              */
-#define TARGET_NR_mlock              237
-#define TARGET_NR_munlock            238
-#define TARGET_NR_mlockall           239
-#define TARGET_NR_munlockall         240
-#define TARGET_NR_sched_setparam     241
-#define TARGET_NR_sched_getparam     242
-#define TARGET_NR_sched_setscheduler 243
-#define TARGET_NR_sched_getscheduler 244
-#define TARGET_NR_sched_yield        245
-#define TARGET_NR_sched_get_priority_max 246
-#define TARGET_NR_sched_get_priority_min 247
-#define TARGET_NR_sched_rr_get_interval  248
-#define TARGET_NR_nanosleep          249
-#define TARGET_NR_mremap             250
-#define TARGET_NR__sysctl            251
-#define TARGET_NR_getsid             252
-#define TARGET_NR_fdatasync          253
-#define TARGET_NR_nfsservctl         254
-#define TARGET_NR_sync_file_range    255
-#define TARGET_NR_clock_settime        256
-#define TARGET_NR_clock_gettime        257
-#define TARGET_NR_clock_getres 258
-#define TARGET_NR_clock_nanosleep      259
-#define TARGET_NR_sched_getaffinity    260
-#define TARGET_NR_sched_setaffinity    261
-#define TARGET_NR_timer_settime        262
-#define TARGET_NR_timer_gettime        263
-#define TARGET_NR_timer_getoverrun     264
-#define TARGET_NR_timer_delete 265
-#define TARGET_NR_timer_create 266
-/* #define TARGET_NR_vserver           267 Reserved for VSERVER */
-#define TARGET_NR_io_setup             268
-#define TARGET_NR_io_destroy           269
-#define TARGET_NR_io_submit            270
-#define TARGET_NR_io_cancel            271
-#define TARGET_NR_io_getevents 272
-#define TARGET_NR_mq_open              273
-#define TARGET_NR_mq_unlink            274
-#define TARGET_NR_mq_timedsend 275
-#define TARGET_NR_mq_timedreceive      276
-#define TARGET_NR_mq_notify            277
-#define TARGET_NR_mq_getsetattr        278
-#define TARGET_NR_waitid               279
-#define TARGET_NR_tee          280
-#define TARGET_NR_add_key              281
-#define TARGET_NR_request_key  282
-#define TARGET_NR_keyctl               283
-#define TARGET_NR_openat               284
-#define TARGET_NR_mkdirat              285
-#define TARGET_NR_mknodat              286
-#define TARGET_NR_fchownat             287
-#define TARGET_NR_futimesat            288
-#define TARGET_NR_fstatat64            289
-#define TARGET_NR_unlinkat             290
-#define TARGET_NR_renameat             291
-#define TARGET_NR_linkat               292
-#define TARGET_NR_symlinkat            293
-#define TARGET_NR_readlinkat           294
-#define TARGET_NR_fchmodat             295
-#define TARGET_NR_faccessat            296
-#define TARGET_NR_pselect6             297
-#define TARGET_NR_ppoll                298
-#define TARGET_NR_unshare              299
-#define TARGET_NR_set_robust_list      300
-#define TARGET_NR_get_robust_list      301
-#define TARGET_NR_migrate_pages        302
-#define TARGET_NR_mbind                303
-#define TARGET_NR_get_mempolicy        304
-#define TARGET_NR_set_mempolicy        305
-#define TARGET_NR_kexec_load           306
-#define TARGET_NR_move_pages           307
-#define TARGET_NR_getcpu               308
-#define TARGET_NR_epoll_pwait  309
-#define TARGET_NR_utimensat            310
-#define TARGET_NR_signalfd             311
-#define TARGET_NR_timerfd_create       312
-#define TARGET_NR_eventfd              313
-#define TARGET_NR_fallocate            314
-#define TARGET_NR_timerfd_settime      315
-#define TARGET_NR_timerfd_gettime      316
-#define TARGET_NR_signalfd4            317
-#define TARGET_NR_eventfd2             318
-#define TARGET_NR_epoll_create1        319
-#define TARGET_NR_dup3                 320
-#define TARGET_NR_pipe2                321
-#define TARGET_NR_inotify_init1        322
-#define TARGET_NR_accept4              323
-#define TARGET_NR_preadv                324
-#define TARGET_NR_pwritev               325
-#define TARGET_NR_rt_tgsigqueueinfo     326
-#define TARGET_NR_perf_event_open       327
-#define TARGET_NR_recvmmsg              328
-#define TARGET_NR_fanotify_init         329
-#define TARGET_NR_fanotify_mark         330
-#define TARGET_NR_prlimit64             331
-#define TARGET_NR_name_to_handle_at     332
-#define TARGET_NR_open_by_handle_at     333
-#define TARGET_NR_clock_adjtime         334
-#define TARGET_NR_syncfs                335
-#define TARGET_NR_sendmmsg              336
-#define TARGET_NR_setns                 337
-#define TARGET_NR_process_vm_readv      338
-#define TARGET_NR_process_vm_writev     339
-#define TARGET_NR_kern_features         340
-#define TARGET_NR_kcmp                  341
-#define TARGET_NR_finit_module          342
-#define TARGET_NR_sched_setattr         343
-#define TARGET_NR_sched_getattr         344
-#define TARGET_NR_renameat2             345
-#define TARGET_NR_seccomp               346
-#define TARGET_NR_getrandom             347
-#define TARGET_NR_memfd_create          348
-#define TARGET_NR_bpf                   349
-#define TARGET_NR_execveat              350
-#define TARGET_NR_membarrier            351
-#define TARGET_NR_userfaultfd           352
-#define TARGET_NR_bind                  353
-#define TARGET_NR_listen                354
-#define TARGET_NR_setsockopt            355
-#define TARGET_NR_mlock2                356
-#define TARGET_NR_copy_file_range       357
-#define TARGET_NR_preadv2               358
-#define TARGET_NR_pwritev2              359
-#define TARGET_NR_statx                 360
-
-#endif
diff --git a/linux-user/sparc/syscallhdr.sh b/linux-user/sparc/syscallhdr.sh
new file mode 100644 (file)
index 0000000..34a99dc
--- /dev/null
@@ -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_SPARC_`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 compat ; 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 */" "${fileguard}"
+) > "$out"
diff --git a/linux-user/sparc64/Makefile.objs b/linux-user/sparc64/Makefile.objs
new file mode 100644 (file)
index 0000000..afcd535
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/sparc64/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/sparc64/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/sparc/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/sparc64/syscall.tbl b/linux-user/sparc64/syscall.tbl
new file mode 100644 (file)
index 0000000..f13615e
--- /dev/null
@@ -0,0 +1,485 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for sparc
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The <abi> can be common, 64, or 32 for this file.
+#
+0      common  restart_syscall         sys_restart_syscall
+1      32      exit                    sys_exit                        sparc_exit
+1      64      exit                    sparc_exit
+2      common  fork                    sys_fork
+3      common  read                    sys_read
+4      common  write                   sys_write
+5      common  open                    sys_open                        compat_sys_open
+6      common  close                   sys_close
+7      common  wait4                   sys_wait4                       compat_sys_wait4
+8      common  creat                   sys_creat
+9      common  link                    sys_link
+10     common  unlink                  sys_unlink
+11     32      execv                   sunos_execv
+11     64      execv                   sys_nis_syscall
+12     common  chdir                   sys_chdir
+13     32      chown                   sys_chown16
+13     64      chown                   sys_chown
+14     common  mknod                   sys_mknod
+15     common  chmod                   sys_chmod
+16     32      lchown                  sys_lchown16
+16     64      lchown                  sys_lchown
+17     common  brk                     sys_brk
+18     common  perfctr                 sys_nis_syscall
+19     common  lseek                   sys_lseek                       compat_sys_lseek
+20     common  getpid                  sys_getpid
+21     common  capget                  sys_capget
+22     common  capset                  sys_capset
+23     32      setuid                  sys_setuid16
+23     64      setuid                  sys_setuid
+24     32      getuid                  sys_getuid16
+24     64      getuid                  sys_getuid
+25     common  vmsplice                sys_vmsplice                    compat_sys_vmsplice
+26     common  ptrace                  sys_ptrace                      compat_sys_ptrace
+27     common  alarm                   sys_alarm
+28     common  sigaltstack             sys_sigaltstack                 compat_sys_sigaltstack
+29     32      pause                   sys_pause
+29     64      pause                   sys_nis_syscall
+30     32      utime                   sys_utime32
+30     64      utime                   sys_utime
+31     32      lchown32                sys_lchown
+32     32      fchown32                sys_fchown
+33     common  access                  sys_access
+34     common  nice                    sys_nice
+35     32      chown32                 sys_chown
+36     common  sync                    sys_sync
+37     common  kill                    sys_kill
+38     common  stat                    sys_newstat                     compat_sys_newstat
+39     32      sendfile                sys_sendfile                    compat_sys_sendfile
+39     64      sendfile                sys_sendfile64
+40     common  lstat                   sys_newlstat                    compat_sys_newlstat
+41     common  dup                     sys_dup
+42     common  pipe                    sys_sparc_pipe
+43     common  times                   sys_times                       compat_sys_times
+44     32      getuid32                sys_getuid
+45     common  umount2                 sys_umount
+46     32      setgid                  sys_setgid16
+46     64      setgid                  sys_setgid
+47     32      getgid                  sys_getgid16
+47     64      getgid                  sys_getgid
+48     common  signal                  sys_signal
+49     32      geteuid                 sys_geteuid16
+49     64      geteuid                 sys_geteuid
+50     32      getegid                 sys_getegid16
+50     64      getegid                 sys_getegid
+51     common  acct                    sys_acct
+52     64      memory_ordering         sys_memory_ordering
+53     32      getgid32                sys_getgid
+54     common  ioctl                   sys_ioctl                       compat_sys_ioctl
+55     common  reboot                  sys_reboot
+56     32      mmap2                   sys_mmap2                       sys32_mmap2
+57     common  symlink                 sys_symlink
+58     common  readlink                sys_readlink
+59     32      execve                  sys_execve                      sys32_execve
+59     64      execve                  sys64_execve
+60     common  umask                   sys_umask
+61     common  chroot                  sys_chroot
+62     common  fstat                   sys_newfstat                    compat_sys_newfstat
+63     common  fstat64                 sys_fstat64                     compat_sys_fstat64
+64     common  getpagesize             sys_getpagesize
+65     common  msync                   sys_msync
+66     common  vfork                   sys_vfork
+67     common  pread64                 sys_pread64                     compat_sys_pread64
+68     common  pwrite64                sys_pwrite64                    compat_sys_pwrite64
+69     32      geteuid32               sys_geteuid
+70     32      getegid32               sys_getegid
+71     common  mmap                    sys_mmap
+72     32      setreuid32              sys_setreuid
+73     32      munmap                  sys_munmap
+73     64      munmap                  sys_64_munmap
+74     common  mprotect                sys_mprotect
+75     common  madvise                 sys_madvise
+76     common  vhangup                 sys_vhangup
+77     32      truncate64              sys_truncate64                  compat_sys_truncate64
+78     common  mincore                 sys_mincore
+79     32      getgroups               sys_getgroups16
+79     64      getgroups               sys_getgroups
+80     32      setgroups               sys_setgroups16
+80     64      setgroups               sys_setgroups
+81     common  getpgrp                 sys_getpgrp
+82     32      setgroups32             sys_setgroups
+83     common  setitimer               sys_setitimer                   compat_sys_setitimer
+84     32      ftruncate64             sys_ftruncate64                 compat_sys_ftruncate64
+85     common  swapon                  sys_swapon
+86     common  getitimer               sys_getitimer                   compat_sys_getitimer
+87     32      setuid32                sys_setuid
+88     common  sethostname             sys_sethostname
+89     32      setgid32                sys_setgid
+90     common  dup2                    sys_dup2
+91     32      setfsuid32              sys_setfsuid
+92     common  fcntl                   sys_fcntl                       compat_sys_fcntl
+93     common  select                  sys_select
+94     32      setfsgid32              sys_setfsgid
+95     common  fsync                   sys_fsync
+96     common  setpriority             sys_setpriority
+97     common  socket                  sys_socket
+98     common  connect                 sys_connect
+99     common  accept                  sys_accept
+100    common  getpriority             sys_getpriority
+101    common  rt_sigreturn            sys_rt_sigreturn                sys32_rt_sigreturn
+102    common  rt_sigaction            sys_rt_sigaction                compat_sys_rt_sigaction
+103    common  rt_sigprocmask          sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+104    common  rt_sigpending           sys_rt_sigpending               compat_sys_rt_sigpending
+105    32      rt_sigtimedwait         sys_rt_sigtimedwait_time32      compat_sys_rt_sigtimedwait_time32
+105    64      rt_sigtimedwait         sys_rt_sigtimedwait
+106    common  rt_sigqueueinfo         sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+107    common  rt_sigsuspend           sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+108    32      setresuid32             sys_setresuid
+108    64      setresuid               sys_setresuid
+109    32      getresuid32             sys_getresuid
+109    64      getresuid               sys_getresuid
+110    32      setresgid32             sys_setresgid
+110    64      setresgid               sys_setresgid
+111    32      getresgid32             sys_getresgid
+111    64      getresgid               sys_getresgid
+112    32      setregid32              sys_setregid
+113    common  recvmsg                 sys_recvmsg                     compat_sys_recvmsg
+114    common  sendmsg                 sys_sendmsg                     compat_sys_sendmsg
+115    32      getgroups32             sys_getgroups
+116    common  gettimeofday            sys_gettimeofday                compat_sys_gettimeofday
+117    common  getrusage               sys_getrusage                   compat_sys_getrusage
+118    common  getsockopt              sys_getsockopt                  compat_sys_getsockopt
+119    common  getcwd                  sys_getcwd
+120    common  readv                   sys_readv                       compat_sys_readv
+121    common  writev                  sys_writev                      compat_sys_writev
+122    common  settimeofday            sys_settimeofday                compat_sys_settimeofday
+123    32      fchown                  sys_fchown16
+123    64      fchown                  sys_fchown
+124    common  fchmod                  sys_fchmod
+125    common  recvfrom                sys_recvfrom
+126    32      setreuid                sys_setreuid16
+126    64      setreuid                sys_setreuid
+127    32      setregid                sys_setregid16
+127    64      setregid                sys_setregid
+128    common  rename                  sys_rename
+129    common  truncate                sys_truncate                    compat_sys_truncate
+130    common  ftruncate               sys_ftruncate                   compat_sys_ftruncate
+131    common  flock                   sys_flock
+132    common  lstat64                 sys_lstat64                     compat_sys_lstat64
+133    common  sendto                  sys_sendto
+134    common  shutdown                sys_shutdown
+135    common  socketpair              sys_socketpair
+136    common  mkdir                   sys_mkdir
+137    common  rmdir                   sys_rmdir
+138    32      utimes                  sys_utimes_time32
+138    64      utimes                  sys_utimes
+139    common  stat64                  sys_stat64                      compat_sys_stat64
+140    common  sendfile64              sys_sendfile64
+141    common  getpeername             sys_getpeername
+142    32      futex                   sys_futex_time32
+142    64      futex                   sys_futex
+143    common  gettid                  sys_gettid
+144    common  getrlimit               sys_getrlimit                   compat_sys_getrlimit
+145    common  setrlimit               sys_setrlimit                   compat_sys_setrlimit
+146    common  pivot_root              sys_pivot_root
+147    common  prctl                   sys_prctl
+148    common  pciconfig_read          sys_pciconfig_read
+149    common  pciconfig_write         sys_pciconfig_write
+150    common  getsockname             sys_getsockname
+151    common  inotify_init            sys_inotify_init
+152    common  inotify_add_watch       sys_inotify_add_watch
+153    common  poll                    sys_poll
+154    common  getdents64              sys_getdents64
+155    32      fcntl64                 sys_fcntl64                     compat_sys_fcntl64
+156    common  inotify_rm_watch        sys_inotify_rm_watch
+157    common  statfs                  sys_statfs                      compat_sys_statfs
+158    common  fstatfs                 sys_fstatfs                     compat_sys_fstatfs
+159    common  umount                  sys_oldumount
+160    common  sched_set_affinity      sys_sched_setaffinity           compat_sys_sched_setaffinity
+161    common  sched_get_affinity      sys_sched_getaffinity           compat_sys_sched_getaffinity
+162    common  getdomainname           sys_getdomainname
+163    common  setdomainname           sys_setdomainname
+164    64      utrap_install           sys_utrap_install
+165    common  quotactl                sys_quotactl
+166    common  set_tid_address         sys_set_tid_address
+167    common  mount                   sys_mount                       compat_sys_mount
+168    common  ustat                   sys_ustat                       compat_sys_ustat
+169    common  setxattr                sys_setxattr
+170    common  lsetxattr               sys_lsetxattr
+171    common  fsetxattr               sys_fsetxattr
+172    common  getxattr                sys_getxattr
+173    common  lgetxattr               sys_lgetxattr
+174    common  getdents                sys_getdents                    compat_sys_getdents
+175    common  setsid                  sys_setsid
+176    common  fchdir                  sys_fchdir
+177    common  fgetxattr               sys_fgetxattr
+178    common  listxattr               sys_listxattr
+179    common  llistxattr              sys_llistxattr
+180    common  flistxattr              sys_flistxattr
+181    common  removexattr             sys_removexattr
+182    common  lremovexattr            sys_lremovexattr
+183    32      sigpending              sys_sigpending                  compat_sys_sigpending
+183    64      sigpending              sys_nis_syscall
+184    common  query_module            sys_ni_syscall
+185    common  setpgid                 sys_setpgid
+186    common  fremovexattr            sys_fremovexattr
+187    common  tkill                   sys_tkill
+188    32      exit_group              sys_exit_group                  sparc_exit_group
+188    64      exit_group              sparc_exit_group
+189    common  uname                   sys_newuname
+190    common  init_module             sys_init_module
+191    32      personality             sys_personality                 sys_sparc64_personality
+191    64      personality             sys_sparc64_personality
+192    32      remap_file_pages        sys_sparc_remap_file_pages      sys_remap_file_pages
+192    64      remap_file_pages        sys_remap_file_pages
+193    common  epoll_create            sys_epoll_create
+194    common  epoll_ctl               sys_epoll_ctl
+195    common  epoll_wait              sys_epoll_wait
+196    common  ioprio_set              sys_ioprio_set
+197    common  getppid                 sys_getppid
+198    32      sigaction               sys_sparc_sigaction             compat_sys_sparc_sigaction
+198    64      sigaction               sys_nis_syscall
+199    common  sgetmask                sys_sgetmask
+200    common  ssetmask                sys_ssetmask
+201    32      sigsuspend              sys_sigsuspend
+201    64      sigsuspend              sys_nis_syscall
+202    common  oldlstat                sys_newlstat                    compat_sys_newlstat
+203    common  uselib                  sys_uselib
+204    32      readdir                 sys_old_readdir                 compat_sys_old_readdir
+204    64      readdir                 sys_nis_syscall
+205    common  readahead               sys_readahead                   compat_sys_readahead
+206    common  socketcall              sys_socketcall                  sys32_socketcall
+207    common  syslog                  sys_syslog
+208    common  lookup_dcookie          sys_lookup_dcookie              compat_sys_lookup_dcookie
+209    common  fadvise64               sys_fadvise64                   compat_sys_fadvise64
+210    common  fadvise64_64            sys_fadvise64_64                compat_sys_fadvise64_64
+211    common  tgkill                  sys_tgkill
+212    common  waitpid                 sys_waitpid
+213    common  swapoff                 sys_swapoff
+214    common  sysinfo                 sys_sysinfo                     compat_sys_sysinfo
+215    32      ipc                     sys_ipc                         compat_sys_ipc
+215    64      ipc                     sys_sparc_ipc
+216    32      sigreturn               sys_sigreturn                   sys32_sigreturn
+216    64      sigreturn               sys_nis_syscall
+217    common  clone                   sys_clone
+218    common  ioprio_get              sys_ioprio_get
+219    32      adjtimex                sys_adjtimex_time32
+219    64      adjtimex                sys_sparc_adjtimex
+220    32      sigprocmask             sys_sigprocmask                 compat_sys_sigprocmask
+220    64      sigprocmask             sys_nis_syscall
+221    common  create_module           sys_ni_syscall
+222    common  delete_module           sys_delete_module
+223    common  get_kernel_syms         sys_ni_syscall
+224    common  getpgid                 sys_getpgid
+225    common  bdflush                 sys_bdflush
+226    common  sysfs                   sys_sysfs
+227    common  afs_syscall             sys_nis_syscall
+228    common  setfsuid                sys_setfsuid16
+229    common  setfsgid                sys_setfsgid16
+230    common  _newselect              sys_select                      compat_sys_select
+231    32      time                    sys_time32
+232    common  splice                  sys_splice
+233    32      stime                   sys_stime32
+233    64      stime                   sys_stime
+234    common  statfs64                sys_statfs64                    compat_sys_statfs64
+235    common  fstatfs64               sys_fstatfs64                   compat_sys_fstatfs64
+236    common  _llseek                 sys_llseek
+237    common  mlock                   sys_mlock
+238    common  munlock                 sys_munlock
+239    common  mlockall                sys_mlockall
+240    common  munlockall              sys_munlockall
+241    common  sched_setparam          sys_sched_setparam
+242    common  sched_getparam          sys_sched_getparam
+243    common  sched_setscheduler      sys_sched_setscheduler
+244    common  sched_getscheduler      sys_sched_getscheduler
+245    common  sched_yield             sys_sched_yield
+246    common  sched_get_priority_max  sys_sched_get_priority_max
+247    common  sched_get_priority_min  sys_sched_get_priority_min
+248    32      sched_rr_get_interval   sys_sched_rr_get_interval_time32
+248    64      sched_rr_get_interval   sys_sched_rr_get_interval
+249    32      nanosleep               sys_nanosleep_time32
+249    64      nanosleep               sys_nanosleep
+250    32      mremap                  sys_mremap
+250    64      mremap                  sys_64_mremap
+251    common  _sysctl                 sys_sysctl                      compat_sys_sysctl
+252    common  getsid                  sys_getsid
+253    common  fdatasync               sys_fdatasync
+254    32      nfsservctl              sys_ni_syscall                  sys_nis_syscall
+254    64      nfsservctl              sys_nis_syscall
+255    common  sync_file_range         sys_sync_file_range             compat_sys_sync_file_range
+256    32      clock_settime           sys_clock_settime32
+256    64      clock_settime           sys_clock_settime
+257    32      clock_gettime           sys_clock_gettime32
+257    64      clock_gettime           sys_clock_gettime
+258    32      clock_getres            sys_clock_getres_time32
+258    64      clock_getres            sys_clock_getres
+259    32      clock_nanosleep         sys_clock_nanosleep_time32
+259    64      clock_nanosleep         sys_clock_nanosleep
+260    common  sched_getaffinity       sys_sched_getaffinity           compat_sys_sched_getaffinity
+261    common  sched_setaffinity       sys_sched_setaffinity           compat_sys_sched_setaffinity
+262    32      timer_settime           sys_timer_settime32
+262    64      timer_settime           sys_timer_settime
+263    32      timer_gettime           sys_timer_gettime32
+263    64      timer_gettime           sys_timer_gettime
+264    common  timer_getoverrun        sys_timer_getoverrun
+265    common  timer_delete            sys_timer_delete
+266    common  timer_create            sys_timer_create                compat_sys_timer_create
+# 267 was vserver
+267    common  vserver                 sys_nis_syscall
+268    common  io_setup                sys_io_setup                    compat_sys_io_setup
+269    common  io_destroy              sys_io_destroy
+270    common  io_submit               sys_io_submit                   compat_sys_io_submit
+271    common  io_cancel               sys_io_cancel
+272    32      io_getevents            sys_io_getevents_time32
+272    64      io_getevents            sys_io_getevents
+273    common  mq_open                 sys_mq_open                     compat_sys_mq_open
+274    common  mq_unlink               sys_mq_unlink
+275    32      mq_timedsend            sys_mq_timedsend_time32
+275    64      mq_timedsend            sys_mq_timedsend
+276    32      mq_timedreceive         sys_mq_timedreceive_time32
+276    64      mq_timedreceive         sys_mq_timedreceive
+277    common  mq_notify               sys_mq_notify                   compat_sys_mq_notify
+278    common  mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
+279    common  waitid                  sys_waitid                      compat_sys_waitid
+280    common  tee                     sys_tee
+281    common  add_key                 sys_add_key
+282    common  request_key             sys_request_key
+283    common  keyctl                  sys_keyctl                      compat_sys_keyctl
+284    common  openat                  sys_openat                      compat_sys_openat
+285    common  mkdirat                 sys_mkdirat
+286    common  mknodat                 sys_mknodat
+287    common  fchownat                sys_fchownat
+288    32      futimesat               sys_futimesat_time32
+288    64      futimesat               sys_futimesat
+289    common  fstatat64               sys_fstatat64                   compat_sys_fstatat64
+290    common  unlinkat                sys_unlinkat
+291    common  renameat                sys_renameat
+292    common  linkat                  sys_linkat
+293    common  symlinkat               sys_symlinkat
+294    common  readlinkat              sys_readlinkat
+295    common  fchmodat                sys_fchmodat
+296    common  faccessat               sys_faccessat
+297    32      pselect6                sys_pselect6_time32             compat_sys_pselect6_time32
+297    64      pselect6                sys_pselect6
+298    32      ppoll                   sys_ppoll_time32                compat_sys_ppoll_time32
+298    64      ppoll                   sys_ppoll
+299    common  unshare                 sys_unshare
+300    common  set_robust_list         sys_set_robust_list             compat_sys_set_robust_list
+301    common  get_robust_list         sys_get_robust_list             compat_sys_get_robust_list
+302    common  migrate_pages           sys_migrate_pages               compat_sys_migrate_pages
+303    common  mbind                   sys_mbind                       compat_sys_mbind
+304    common  get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
+305    common  set_mempolicy           sys_set_mempolicy               compat_sys_set_mempolicy
+306    common  kexec_load              sys_kexec_load                  compat_sys_kexec_load
+307    common  move_pages              sys_move_pages                  compat_sys_move_pages
+308    common  getcpu                  sys_getcpu
+309    common  epoll_pwait             sys_epoll_pwait                 compat_sys_epoll_pwait
+310    32      utimensat               sys_utimensat_time32
+310    64      utimensat               sys_utimensat
+311    common  signalfd                sys_signalfd                    compat_sys_signalfd
+312    common  timerfd_create          sys_timerfd_create
+313    common  eventfd                 sys_eventfd
+314    common  fallocate               sys_fallocate                   compat_sys_fallocate
+315    32      timerfd_settime         sys_timerfd_settime32
+315    64      timerfd_settime         sys_timerfd_settime
+316    32      timerfd_gettime         sys_timerfd_gettime32
+316    64      timerfd_gettime         sys_timerfd_gettime
+317    common  signalfd4               sys_signalfd4                   compat_sys_signalfd4
+318    common  eventfd2                sys_eventfd2
+319    common  epoll_create1           sys_epoll_create1
+320    common  dup3                    sys_dup3
+321    common  pipe2                   sys_pipe2
+322    common  inotify_init1           sys_inotify_init1
+323    common  accept4                 sys_accept4
+324    common  preadv                  sys_preadv                      compat_sys_preadv
+325    common  pwritev                 sys_pwritev                     compat_sys_pwritev
+326    common  rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+327    common  perf_event_open         sys_perf_event_open
+328    32      recvmmsg                sys_recvmmsg_time32             compat_sys_recvmmsg_time32
+328    64      recvmmsg                sys_recvmmsg
+329    common  fanotify_init           sys_fanotify_init
+330    common  fanotify_mark           sys_fanotify_mark               compat_sys_fanotify_mark
+331    common  prlimit64               sys_prlimit64
+332    common  name_to_handle_at       sys_name_to_handle_at
+333    common  open_by_handle_at       sys_open_by_handle_at           compat_sys_open_by_handle_at
+334    32      clock_adjtime           sys_clock_adjtime32
+334    64      clock_adjtime           sys_sparc_clock_adjtime
+335    common  syncfs                  sys_syncfs
+336    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
+337    common  setns                   sys_setns
+338    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
+339    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+340    32      kern_features           sys_ni_syscall                  sys_kern_features
+340    64      kern_features           sys_kern_features
+341    common  kcmp                    sys_kcmp
+342    common  finit_module            sys_finit_module
+343    common  sched_setattr           sys_sched_setattr
+344    common  sched_getattr           sys_sched_getattr
+345    common  renameat2               sys_renameat2
+346    common  seccomp                 sys_seccomp
+347    common  getrandom               sys_getrandom
+348    common  memfd_create            sys_memfd_create
+349    common  bpf                     sys_bpf
+350    32      execveat                sys_execveat                    sys32_execveat
+350    64      execveat                sys64_execveat
+351    common  membarrier              sys_membarrier
+352    common  userfaultfd             sys_userfaultfd
+353    common  bind                    sys_bind
+354    common  listen                  sys_listen
+355    common  setsockopt              sys_setsockopt                  compat_sys_setsockopt
+356    common  mlock2                  sys_mlock2
+357    common  copy_file_range         sys_copy_file_range
+358    common  preadv2                 sys_preadv2                     compat_sys_preadv2
+359    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
+360    common  statx                   sys_statx
+361    32      io_pgetevents           sys_io_pgetevents_time32        compat_sys_io_pgetevents
+361    64      io_pgetevents           sys_io_pgetevents
+362    common  pkey_mprotect           sys_pkey_mprotect
+363    common  pkey_alloc              sys_pkey_alloc
+364    common  pkey_free               sys_pkey_free
+365    common  rseq                    sys_rseq
+# room for arch specific syscalls
+392    64      semtimedop                      sys_semtimedop
+393    common  semget                  sys_semget
+394    common  semctl                  sys_semctl                      compat_sys_semctl
+395    common  shmget                  sys_shmget
+396    common  shmctl                  sys_shmctl                      compat_sys_shmctl
+397    common  shmat                   sys_shmat                       compat_sys_shmat
+398    common  shmdt                   sys_shmdt
+399    common  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               sys_clock_gettime
+404    32      clock_settime64                 sys_clock_settime               sys_clock_settime
+405    32      clock_adjtime64                 sys_clock_adjtime               sys_clock_adjtime
+406    32      clock_getres_time64             sys_clock_getres                sys_clock_getres
+407    32      clock_nanosleep_time64          sys_clock_nanosleep             sys_clock_nanosleep
+408    32      timer_gettime64                 sys_timer_gettime               sys_timer_gettime
+409    32      timer_settime64                 sys_timer_settime               sys_timer_settime
+410    32      timerfd_gettime64               sys_timerfd_gettime             sys_timerfd_gettime
+411    32      timerfd_settime64               sys_timerfd_settime             sys_timerfd_settime
+412    32      utimensat_time64                sys_utimensat                   sys_utimensat
+413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
+414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
+416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
+418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
+419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
+420    32      semtimedop_time64               sys_semtimedop                  sys_semtimedop
+421    32      rt_sigtimedwait_time64          sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait_time64
+422    32      futex_time64                    sys_futex                       sys_futex
+423    32      sched_rr_get_interval_time64    sys_sched_rr_get_interval       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 reserved for clone3
+437    common  openat2                 sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/sparc64/syscall_nr.h b/linux-user/sparc64/syscall_nr.h
deleted file mode 100644 (file)
index 6b088c9..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-#ifndef LINUX_USER_SPARC64_SYSCALL_NR_H
-#define LINUX_USER_SPARC64_SYSCALL_NR_H
-
-#define TARGET_NR_restart_syscall      0 /* Linux Specific                                */
-#define TARGET_NR_exit                 1 /* Common                                      */
-#define TARGET_NR_fork                 2 /* Common                                      */
-#define TARGET_NR_read                 3 /* Common                                      */
-#define TARGET_NR_write                4 /* Common                                      */
-#define TARGET_NR_open                 5 /* Common                                      */
-#define TARGET_NR_close                6 /* Common                                      */
-#define TARGET_NR_wait4                7 /* Common                                      */
-#define TARGET_NR_creat                8 /* Common                                      */
-#define TARGET_NR_link                 9 /* Common                                      */
-#define TARGET_NR_unlink              10 /* Common                                      */
-#define TARGET_NR_execv               11 /* SunOS Specific                              */
-#define TARGET_NR_chdir               12 /* Common                                      */
-#define TARGET_NR_chown                 13 /* Common                                      */
-#define TARGET_NR_mknod               14 /* Common                                      */
-#define TARGET_NR_chmod               15 /* Common                                      */
-#define TARGET_NR_lchown              16 /* Common                                      */
-#define TARGET_NR_brk                 17 /* Common                                      */
-#define TARGET_NR_perfctr             18 /* Performance counter operations              */
-#define TARGET_NR_lseek               19 /* Common                                      */
-#define TARGET_NR_getpid              20 /* Common                                      */
-#define TARGET_NR_capget                21 /* Linux Specific                              */
-#define TARGET_NR_capset                22 /* Linux Specific                              */
-#define TARGET_NR_setuid              23 /* Implemented via setreuid in SunOS           */
-#define TARGET_NR_getuid              24 /* Common                                      */
-#define TARGET_NR_vmsplice            25
-#define TARGET_NR_ptrace              26 /* Common                                      */
-#define TARGET_NR_alarm               27 /* Implemented via setitimer in SunOS          */
-#define TARGET_NR_sigaltstack   28 /* Common                                      */
-#define TARGET_NR_pause               29 /* Is sigblock(0)->sigpause() in SunOS         */
-#define TARGET_NR_utime               30 /* Implemented via utimes() under SunOS        */
-#define TARGET_NR_lchown32            31 /* Linux sparc32 specific                      */
-#define TARGET_NR_fchown32            32 /* Linux sparc32 specific                      */
-#define TARGET_NR_access              33 /* Common                                      */
-#define TARGET_NR_nice                34 /* Implemented via get/setpriority() in SunOS  */
-#define TARGET_NR_chown32             35 /*  Linux sparc32 specific                     */
-#define TARGET_NR_sync                36 /* Common                                      */
-#define TARGET_NR_kill                37 /* Common                                      */
-#define TARGET_NR_stat                38 /* Common                                      */
-#define TARGET_NR_sendfile              39 /* Linux Specific                              */
-#define TARGET_NR_lstat               40 /* Common                                      */
-#define TARGET_NR_dup                 41 /* Common                                      */
-#define TARGET_NR_pipe                42 /* Common                                      */
-#define TARGET_NR_times               43 /* Implemented via getrusage() in SunOS        */
-#define TARGET_NR_getuid32            44 /* Linux sparc32 specific                      */
-#define TARGET_NR_umount2             45 /* Linux Specific                              */
-#define TARGET_NR_setgid              46 /* Implemented via setregid() in SunOS         */
-#define TARGET_NR_getgid              47 /* Common                                      */
-#define TARGET_NR_signal              48 /* Implemented via sigvec() in SunOS           */
-#define TARGET_NR_geteuid             49 /* SunOS calls getuid()                        */
-#define TARGET_NR_getegid             50 /* SunOS calls getgid()                        */
-#define TARGET_NR_acct                51 /* Common                                      */
-#define TARGET_NR_memory_ordering       52 /* Linux Specific                              */
-#define TARGET_NR_getgid32            53 /* Linux sparc32 specific                      */
-#define TARGET_NR_ioctl               54 /* Common                                      */
-#define TARGET_NR_reboot              55 /* Common                                      */
-#define TARGET_NR_mmap2                      56 /* Linux sparc32 Specific                      */
-#define TARGET_NR_symlink             57 /* Common                                      */
-#define TARGET_NR_readlink            58 /* Common                                      */
-#define TARGET_NR_execve              59 /* Common                                      */
-#define TARGET_NR_umask               60 /* Common                                      */
-#define TARGET_NR_chroot              61 /* Common                                      */
-#define TARGET_NR_fstat               62 /* Common                                      */
-#define TARGET_NR_fstat64             63 /* Linux sparc32 Specific                      */
-#define TARGET_NR_getpagesize         64 /* Common                                      */
-#define TARGET_NR_msync               65 /* Common in newer 1.3.x revs...               */
-#define TARGET_NR_vfork               66 /* Common                                      */
-#define TARGET_NR_pread64             67 /* Linux Specific                              */
-#define TARGET_NR_pwrite64            68 /* Linux Specific                              */
-#define TARGET_NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */
-#define TARGET_NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */
-#define TARGET_NR_mmap                71 /* Common                                      */
-#define TARGET_NR_setreuid32          72 /* Linux sparc32, vadvise under SunOS          */
-#define TARGET_NR_munmap              73 /* Common                                      */
-#define TARGET_NR_mprotect            74 /* Common                                      */
-#define TARGET_NR_madvise             75 /* Common                                      */
-#define TARGET_NR_vhangup             76 /* Common                                      */
-#define TARGET_NR_truncate64          77 /* Linux sparc32 Specific                     */
-#define TARGET_NR_mincore             78 /* Common                                      */
-#define TARGET_NR_getgroups           79 /* Common                                      */
-#define TARGET_NR_setgroups           80 /* Common                                      */
-#define TARGET_NR_getpgrp             81 /* Common                                      */
-#define TARGET_NR_setgroups32         82 /* Linux sparc32, setpgrp under SunOS          */
-#define TARGET_NR_setitimer           83 /* Common                                      */
-#define TARGET_NR_ftruncate64         84 /* Linux sparc32 Specific                      */
-#define TARGET_NR_swapon              85 /* Common                                      */
-#define TARGET_NR_getitimer           86 /* Common                                      */
-#define TARGET_NR_setuid32            87 /* Linux sparc32, gethostname under SunOS      */
-#define TARGET_NR_sethostname         88 /* Common                                      */
-#define TARGET_NR_setgid32            89 /* Linux sparc32, getdtablesize under SunOS    */
-#define TARGET_NR_dup2                90 /* Common                                      */
-#define TARGET_NR_setfsuid32          91 /* Linux sparc32, getdopt under SunOS          */
-#define TARGET_NR_fcntl               92 /* Common                                      */
-#define TARGET_NR_select              93 /* Common                                      */
-#define TARGET_NR_setfsgid32          94 /* Linux sparc32, setdopt under SunOS          */
-#define TARGET_NR_fsync               95 /* Common                                      */
-#define TARGET_NR_setpriority         96 /* Common                                      */
-#define TARGET_NR_socket              97 /* Common                                      */
-#define TARGET_NR_connect             98 /* Common                                      */
-#define TARGET_NR_accept              99 /* Common                                      */
-#define TARGET_NR_getpriority        100 /* Common                                      */
-#define TARGET_NR_rt_sigreturn       101 /* Linux Specific                              */
-#define TARGET_NR_rt_sigaction       102 /* Linux Specific                              */
-#define TARGET_NR_rt_sigprocmask     103 /* Linux Specific                              */
-#define TARGET_NR_rt_sigpending      104 /* Linux Specific                              */
-#define TARGET_NR_rt_sigtimedwait    105 /* Linux Specific                              */
-#define TARGET_NR_rt_sigqueueinfo    106 /* Linux Specific                              */
-#define TARGET_NR_rt_sigsuspend      107 /* Linux Specific                              */
-#define TARGET_NR_setresuid          108 /* Linux Specific, sigvec under SunOS    */
-#define TARGET_NR_getresuid          109 /* Linux Specific, sigblock under SunOS          */
-#define TARGET_NR_setresgid          110 /* Linux Specific, sigsetmask under SunOS        */
-#define TARGET_NR_getresgid          111 /* Linux Specific, sigpause under SunOS          */
-/* #define TARGET_NR_setregid32          75  Linux sparc32, sigstack under SunOS         */
-#define TARGET_NR_recvmsg            113 /* Common                                      */
-#define TARGET_NR_sendmsg            114 /* Common                                      */
-#define TARGET_NR_getgroups32        115 /* Linux sparc32, vtrace under SunOS           */
-#define TARGET_NR_gettimeofday       116 /* Common                                      */
-#define TARGET_NR_getrusage          117 /* Common                                      */
-#define TARGET_NR_getsockopt         118 /* Common                                      */
-#define TARGET_NR_getcwd               119 /* Linux Specific                              */
-#define TARGET_NR_readv              120 /* Common                                      */
-#define TARGET_NR_writev             121 /* Common                                      */
-#define TARGET_NR_settimeofday       122 /* Common                                      */
-#define TARGET_NR_fchown             123 /* Common                                      */
-#define TARGET_NR_fchmod             124 /* Common                                      */
-#define TARGET_NR_recvfrom           125 /* Common                                      */
-#define TARGET_NR_setreuid           126 /* Common                                      */
-#define TARGET_NR_setregid           127 /* Common                                      */
-#define TARGET_NR_rename             128 /* Common                                      */
-#define TARGET_NR_truncate           129 /* Common                                      */
-#define TARGET_NR_ftruncate          130 /* Common                                      */
-#define TARGET_NR_flock              131 /* Common                                      */
-#define TARGET_NR_lstat64           132 /* Linux sparc32 Specific                      */
-#define TARGET_NR_sendto             133 /* Common                                      */
-#define TARGET_NR_shutdown           134 /* Common                                      */
-#define TARGET_NR_socketpair         135 /* Common                                      */
-#define TARGET_NR_mkdir              136 /* Common                                      */
-#define TARGET_NR_rmdir              137 /* Common                                      */
-#define TARGET_NR_utimes             138 /* SunOS Specific                              */
-#define TARGET_NR_stat64            139 /* Linux sparc32 Specific                         */
-#define TARGET_NR_sendfile64         140 /* adjtime under SunOS                         */
-#define TARGET_NR_getpeername        141 /* Common                                      */
-#define TARGET_NR_futex              142 /* gethostid under SunOS                       */
-#define TARGET_NR_gettid             143 /* ENOSYS under SunOS                          */
-#define TARGET_NR_getrlimit            144 /* Common                                      */
-#define TARGET_NR_setrlimit          145 /* Common                                      */
-#define TARGET_NR_pivot_root           146 /* Linux Specific, killpg under SunOS          */
-#define TARGET_NR_prctl                147 /* ENOSYS under SunOS                          */
-#define TARGET_NR_pciconfig_read       148 /* ENOSYS under SunOS                          */
-#define TARGET_NR_pciconfig_write      149 /* ENOSYS under SunOS                          */
-#define TARGET_NR_getsockname        150 /* Common                                      */
-#define TARGET_NR_inotify_init       151
-#define TARGET_NR_inotify_add_watch  152
-#define TARGET_NR_poll               153 /* Common                                      */
-#define TARGET_NR_getdents64           154 /* Linux specific                              */
-#define TARGET_NR_fcntl64            155 /* Linux sparc32 Specific                      */
-#define TARGET_NR_inotify_rm_watch   156 /* Linux specific                              */
-#define TARGET_NR_statfs             157 /* Common                                      */
-#define TARGET_NR_fstatfs            158 /* Common                                      */
-#define TARGET_NR_umount             159 /* Common                                      */
-#define TARGET_NR_sched_set_affinity 160 /* Linux specific, async_daemon under SunOS    */
-#define TARGET_NR_sched_get_affinity 161 /* Linux specific, getfh under SunOS           */
-#define TARGET_NR_getdomainname      162 /* SunOS Specific                              */
-#define TARGET_NR_setdomainname      163 /* Common                                      */
-#define TARGET_NR_utrap_install        164 /* SYSV ABI/v9 required                        */
-#define TARGET_NR_quotactl           165 /* Common                                      */
-#define TARGET_NR_set_tid_address    166 /* Linux specific, exportfs under SunOS        */
-#define TARGET_NR_mount              167 /* Common                                      */
-#define TARGET_NR_ustat              168 /* Common                                      */
-#define TARGET_NR_setxattr           169 /* SunOS: semsys                               */
-#define TARGET_NR_lsetxattr          170 /* SunOS: msgsys                               */
-#define TARGET_NR_fsetxattr          171 /* SunOS: shmsys                               */
-#define TARGET_NR_getxattr           172 /* SunOS: auditsys                             */
-#define TARGET_NR_lgetxattr          173 /* SunOS: rfssys                               */
-#define TARGET_NR_getdents           174 /* Common                                      */
-#define TARGET_NR_setsid             175 /* Common                                      */
-#define TARGET_NR_fchdir             176 /* Common                                      */
-#define TARGET_NR_fgetxattr          177 /* SunOS: fchroot                              */
-#define TARGET_NR_listxattr          178 /* SunOS: vpixsys                              */
-#define TARGET_NR_llistxattr         179 /* SunOS: aioread                              */
-#define TARGET_NR_flistxattr         180 /* SunOS: aiowrite                             */
-#define TARGET_NR_removexattr        181 /* SunOS: aiowait                              */
-#define TARGET_NR_lremovexattr       182 /* SunOS: aiocancel                            */
-#define TARGET_NR_sigpending         183 /* Common                                      */
-#define TARGET_NR_query_module 184 /* Linux Specific                              */
-#define TARGET_NR_setpgid            185 /* Common                                      */
-#define TARGET_NR_fremovexattr       186 /* SunOS: pathconf                             */
-#define TARGET_NR_tkill              187 /* SunOS: fpathconf                            */
-#define TARGET_NR_exit_group           188 /* Linux specific, sysconf undef SunOS         */
-#define TARGET_NR_uname              189 /* Linux Specific                              */
-#define TARGET_NR_init_module        190 /* Linux Specific                              */
-#define TARGET_NR_personality        191 /* Linux Specific                              */
-#define TARGET_NR_remap_file_pages   192 /* Linux Specific                              */
-#define TARGET_NR_epoll_create       193 /* Linux Specific                              */
-#define TARGET_NR_epoll_ctl          194 /* Linux Specific                              */
-#define TARGET_NR_epoll_wait         195 /* Linux Specific                              */
-#define TARGET_NR_ioprio_set         196
-#define TARGET_NR_getppid            197 /* Linux Specific                              */
-#define TARGET_NR_sigaction          198 /* Linux Specific                              */
-#define TARGET_NR_sgetmask           199 /* Linux Specific                              */
-#define TARGET_NR_ssetmask           200 /* Linux Specific                              */
-#define TARGET_NR_sigsuspend         201 /* Linux Specific                              */
-#define TARGET_NR_oldlstat           202 /* Linux Specific                              */
-#define TARGET_NR_uselib             203 /* Linux Specific                              */
-#define TARGET_NR_readdir            204 /* Linux Specific                              */
-#define TARGET_NR_readahead          205 /* Linux Specific                              */
-#define TARGET_NR_socketcall         206 /* Linux Specific                              */
-#define TARGET_NR_syslog             207 /* Linux Specific                              */
-#define TARGET_NR_lookup_dcookie     208 /* Linux Specific                              */
-#define TARGET_NR_fadvise64          209 /* Linux Specific                              */
-#define TARGET_NR_fadvise64_64       210 /* Linux Specific                              */
-#define TARGET_NR_tgkill             211 /* Linux Specific                              */
-#define TARGET_NR_waitpid            212 /* Linux Specific                              */
-#define TARGET_NR_swapoff            213 /* Linux Specific                              */
-#define TARGET_NR_sysinfo            214 /* Linux Specific                              */
-#define TARGET_NR_ipc                215 /* Linux Specific                              */
-#define TARGET_NR_sigreturn          216 /* Linux Specific                              */
-#define TARGET_NR_clone              217 /* Linux Specific                              */
-#define TARGET_NR_ioprio_get         218
-#define TARGET_NR_adjtimex           219 /* Linux Specific                              */
-#define TARGET_NR_sigprocmask        220 /* Linux Specific                              */
-#define TARGET_NR_create_module      221 /* Linux Specific                              */
-#define TARGET_NR_delete_module      222 /* Linux Specific                              */
-#define TARGET_NR_get_kernel_syms    223 /* Linux Specific                              */
-#define TARGET_NR_getpgid            224 /* Linux Specific                              */
-#define TARGET_NR_bdflush            225 /* Linux Specific                              */
-#define TARGET_NR_sysfs              226 /* Linux Specific                              */
-#define TARGET_NR_afs_syscall        227 /* Linux Specific                              */
-#define TARGET_NR_setfsuid           228 /* Linux Specific                              */
-#define TARGET_NR_setfsgid           229 /* Linux Specific                              */
-#define TARGET_NR__newselect         230 /* Linux Specific                              */
-#define TARGET_NR_time               231 /* Linux sparc32                               */
-#define TARGET_NR_splice             232
-#define TARGET_NR_stime              233 /* Linux Specific                              */
-#define TARGET_NR_statfs64           234 /* Linux Specific                              */
-#define TARGET_NR_fstatfs64          235 /* Linux Specific                              */
-#define TARGET_NR__llseek            236 /* Linux Specific                              */
-#define TARGET_NR_mlock              237
-#define TARGET_NR_munlock            238
-#define TARGET_NR_mlockall           239
-#define TARGET_NR_munlockall         240
-#define TARGET_NR_sched_setparam     241
-#define TARGET_NR_sched_getparam     242
-#define TARGET_NR_sched_setscheduler 243
-#define TARGET_NR_sched_getscheduler 244
-#define TARGET_NR_sched_yield        245
-#define TARGET_NR_sched_get_priority_max 246
-#define TARGET_NR_sched_get_priority_min 247
-#define TARGET_NR_sched_rr_get_interval  248
-#define TARGET_NR_nanosleep          249
-#define TARGET_NR_mremap             250
-#define TARGET_NR__sysctl            251
-#define TARGET_NR_getsid             252
-#define TARGET_NR_fdatasync          253
-#define TARGET_NR_nfsservctl         254
-#define TARGET_NR_sync_file_range    255
-#define TARGET_NR_clock_settime        256
-#define TARGET_NR_clock_gettime        257
-#define TARGET_NR_clock_getres 258
-#define TARGET_NR_clock_nanosleep      259
-#define TARGET_NR_sched_getaffinity    260
-#define TARGET_NR_sched_setaffinity    261
-#define TARGET_NR_timer_settime        262
-#define TARGET_NR_timer_gettime        263
-#define TARGET_NR_timer_getoverrun     264
-#define TARGET_NR_timer_delete 265
-#define TARGET_NR_timer_create 266
-/* #define TARGET_NR_vserver           267 Reserved for VSERVER */
-#define TARGET_NR_io_setup             268
-#define TARGET_NR_io_destroy           269
-#define TARGET_NR_io_submit            270
-#define TARGET_NR_io_cancel            271
-#define TARGET_NR_io_getevents 272
-#define TARGET_NR_mq_open              273
-#define TARGET_NR_mq_unlink            274
-#define TARGET_NR_mq_timedsend 275
-#define TARGET_NR_mq_timedreceive      276
-#define TARGET_NR_mq_notify            277
-#define TARGET_NR_mq_getsetattr        278
-#define TARGET_NR_waitid               279
-#define TARGET_NR_tee                   280
-#define TARGET_NR_add_key              281
-#define TARGET_NR_request_key  282
-#define TARGET_NR_keyctl               283
-#define TARGET_NR_openat               284
-#define TARGET_NR_mkdirat              285
-#define TARGET_NR_mknodat              286
-#define TARGET_NR_fchownat             287
-#define TARGET_NR_futimesat            288
-#define TARGET_NR_fstatat64            289
-#define TARGET_NR_unlinkat             290
-#define TARGET_NR_renameat             291
-#define TARGET_NR_linkat               292
-#define TARGET_NR_symlinkat            293
-#define TARGET_NR_readlinkat           294
-#define TARGET_NR_fchmodat             295
-#define TARGET_NR_faccessat            296
-#define TARGET_NR_pselect6             297
-#define TARGET_NR_ppoll                298
-#define TARGET_NR_unshare              299
-#define TARGET_NR_set_robust_list      300
-#define TARGET_NR_get_robust_list      301
-#define TARGET_NR_migrate_pages        302
-#define TARGET_NR_mbind                303
-#define TARGET_NR_get_mempolicy        304
-#define TARGET_NR_set_mempolicy        305
-#define TARGET_NR_kexec_load           306
-#define TARGET_NR_move_pages           307
-#define TARGET_NR_getcpu               308
-#define TARGET_NR_epoll_pwait  309
-#define TARGET_NR_utimensat            310
-#define TARGET_NR_signalfd             311
-#define TARGET_NR_timerfd_create        312
-#define TARGET_NR_eventfd              313
-#define TARGET_NR_fallocate            314
-#define TARGET_NR_timerfd_settime      315
-#define TARGET_NR_timerfd_gettime      316
-#define TARGET_NR_signalfd4            317
-#define TARGET_NR_eventfd2             318
-#define TARGET_NR_epoll_create1        319
-#define TARGET_NR_dup3                 320
-#define TARGET_NR_pipe2                321
-#define TARGET_NR_inotify_init1        322
-#define TARGET_NR_accept4              323
-#define TARGET_NR_preadv                324
-#define TARGET_NR_pwritev               325
-#define TARGET_NR_rt_tgsigqueueinfo     326
-#define TARGET_NR_perf_event_open       327
-#define TARGET_NR_recvmmsg              328
-#define TARGET_NR_fanotify_init         329
-#define TARGET_NR_fanotify_mark         330
-#define TARGET_NR_prlimit64             331
-#define TARGET_NR_name_to_handle_at     332
-#define TARGET_NR_open_by_handle_at     333
-#define TARGET_NR_clock_adjtime         334
-#define TARGET_NR_syncfs                335
-#define TARGET_NR_sendmmsg              336
-#define TARGET_NR_setns                 337
-#define TARGET_NR_process_vm_readv      338
-#define TARGET_NR_process_vm_writev     339
-#define TARGET_NR_kern_features         340
-#define TARGET_NR_kcmp                  341
-#define TARGET_NR_finit_module          342
-#define TARGET_NR_sched_setattr         343
-#define TARGET_NR_sched_getattr         344
-#define TARGET_NR_renameat2             345
-#define TARGET_NR_seccomp               346
-#define TARGET_NR_getrandom             347
-#define TARGET_NR_memfd_create          348
-#define TARGET_NR_bpf                   349
-#define TARGET_NR_execveat              350
-#define TARGET_NR_membarrier            351
-#define TARGET_NR_userfaultfd           352
-#define TARGET_NR_bind                  353
-#define TARGET_NR_listen                354
-#define TARGET_NR_setsockopt            355
-#define TARGET_NR_mlock2                356
-#define TARGET_NR_copy_file_range       357
-#define TARGET_NR_preadv2               358
-#define TARGET_NR_pwritev2              359
-#define TARGET_NR_statx                 360
-
-#endif
diff --git a/linux-user/sparc64/syscallhdr.sh b/linux-user/sparc64/syscallhdr.sh
new file mode 100644 (file)
index 0000000..08c7e39
--- /dev/null
@@ -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_SPARC64_`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 compat ; 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 */" "${fileguard}"
+) > "$out"
index 4f7130b2ff630c82751393673583982ed21883b2..0d9095c674f4dc8ca10f7a64d8fac6e942be94ae 100644 (file)
@@ -444,7 +444,7 @@ print_socket_domain(int domain)
 static void
 print_socket_type(int type)
 {
-    switch (type) {
+    switch (type & TARGET_SOCK_TYPE_MASK) {
     case TARGET_SOCK_DGRAM:
         qemu_log("SOCK_DGRAM");
         break;
@@ -464,6 +464,12 @@ print_socket_type(int type)
         qemu_log("SOCK_PACKET");
         break;
     }
+    if (type & TARGET_SOCK_CLOEXEC) {
+        qemu_log("|SOCK_CLOEXEC");
+    }
+    if (type & TARGET_SOCK_NONBLOCK) {
+        qemu_log("|SOCK_NONBLOCK");
+    }
 }
 
 static void
@@ -775,6 +781,7 @@ print_syscall_ret_newselect(const struct syscallname *name, abi_long ret)
 #define TARGET_TIME_OOP      3   /* leap second in progress */
 #define TARGET_TIME_WAIT     4   /* leap second has occurred */
 #define TARGET_TIME_ERROR    5   /* clock not synchronized */
+#ifdef TARGET_NR_adjtimex
 static void
 print_syscall_ret_adjtimex(const struct syscallname *name, abi_long ret)
 {
@@ -813,6 +820,7 @@ print_syscall_ret_adjtimex(const struct syscallname *name, abi_long ret)
 
     qemu_log("\n");
 }
+#endif
 
 UNUSED static struct flags access_flags[] = {
     FLAG_GENERIC(F_OK),
index 8d27d1080752ccbb88949b7fa2c55bc05456b6da..35f4146662432efa488b6dc67652eff4c2170904 100644 (file)
@@ -295,7 +295,7 @@ _syscall1(int,exit_group,int,error_code)
 #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address)
 _syscall1(int,set_tid_address,int *,tidptr)
 #endif
-#if defined(TARGET_NR_futex) && defined(__NR_futex)
+#if (defined(TARGET_NR_futex) || defined(TARGET_NR_exit)) && defined(__NR_futex)
 _syscall6(int,sys_futex,int *,uaddr,int,op,int,val,
           const struct timespec *,timeout,int *,uaddr2,int,val3)
 #endif
@@ -742,21 +742,30 @@ safe_syscall3(ssize_t, read, int, fd, void *, buff, size_t, count)
 safe_syscall3(ssize_t, write, int, fd, const void *, buff, size_t, count)
 safe_syscall4(int, openat, int, dirfd, const char *, pathname, \
               int, flags, mode_t, mode)
+#if defined(TARGET_NR_wait4) || defined(TARGET_NR_waitpid)
 safe_syscall4(pid_t, wait4, pid_t, pid, int *, status, int, options, \
               struct rusage *, rusage)
+#endif
 safe_syscall5(int, waitid, idtype_t, idtype, id_t, id, siginfo_t *, infop, \
               int, options, struct rusage *, rusage)
 safe_syscall3(int, execve, const char *, filename, char **, argv, char **, envp)
+#if defined(TARGET_NR_select) || defined(TARGET_NR__newselect) || \
+    defined(TARGET_NR_pselect6)
 safe_syscall6(int, pselect6, int, nfds, fd_set *, readfds, fd_set *, writefds, \
               fd_set *, exceptfds, struct timespec *, timeout, void *, sig)
+#endif
+#if defined(TARGET_NR_ppoll) || defined(TARGET_NR_poll)
 safe_syscall5(int, ppoll, struct pollfd *, ufds, unsigned int, nfds,
               struct timespec *, tsp, const sigset_t *, sigmask,
               size_t, sigsetsize)
+#endif
 safe_syscall6(int, epoll_pwait, int, epfd, struct epoll_event *, events,
               int, maxevents, int, timeout, const sigset_t *, sigmask,
               size_t, sigsetsize)
+#ifdef TARGET_NR_futex
 safe_syscall6(int,futex,int *,uaddr,int,op,int,val, \
               const struct timespec *,timeout,int *,uaddr2,int,val3)
+#endif
 safe_syscall2(int, rt_sigsuspend, sigset_t *, newset, size_t, sigsetsize)
 safe_syscall2(int, kill, pid_t, pid, int, sig)
 safe_syscall2(int, tkill, int, tid, int, sig)
@@ -776,12 +785,16 @@ safe_syscall6(ssize_t, recvfrom, int, fd, void *, buf, size_t, len,
 safe_syscall3(ssize_t, sendmsg, int, fd, const struct msghdr *, msg, int, flags)
 safe_syscall3(ssize_t, recvmsg, int, fd, struct msghdr *, msg, int, flags)
 safe_syscall2(int, flock, int, fd, int, operation)
+#ifdef TARGET_NR_rt_sigtimedwait
 safe_syscall4(int, rt_sigtimedwait, const sigset_t *, these, siginfo_t *, uinfo,
               const struct timespec *, uts, size_t, sigsetsize)
+#endif
 safe_syscall4(int, accept4, int, fd, struct sockaddr *, addr, socklen_t *, len,
               int, flags)
+#if defined(TARGET_NR_nanosleep)
 safe_syscall2(int, nanosleep, const struct timespec *, req,
               struct timespec *, rem)
+#endif
 #ifdef TARGET_NR_clock_nanosleep
 safe_syscall4(int, clock_nanosleep, const clockid_t, clock, int, flags,
               const struct timespec *, req, struct timespec *, rem)
@@ -802,9 +815,11 @@ safe_syscall5(int, msgrcv, int, msgid, void *, msgp, size_t, sz,
 safe_syscall4(int, semtimedop, int, semid, struct sembuf *, tsops,
               unsigned, nsops, const struct timespec *, timeout)
 #endif
-#if defined(TARGET_NR_mq_open) && defined(__NR_mq_open)
+#ifdef TARGET_NR_mq_timedsend
 safe_syscall5(int, mq_timedsend, int, mqdes, const char *, msg_ptr,
               size_t, len, unsigned, prio, const struct timespec *, timeout)
+#endif
+#ifdef TARGET_NR_mq_timedreceive
 safe_syscall5(int, mq_timedreceive, int, mqdes, char *, msg_ptr,
               size_t, len, unsigned *, prio, const struct timespec *, timeout)
 #endif
@@ -946,6 +961,8 @@ abi_long do_brk(abi_ulong new_brk)
     return target_brk;
 }
 
+#if defined(TARGET_NR_select) || defined(TARGET_NR__newselect) || \
+    defined(TARGET_NR_pselect6)
 static inline abi_long copy_from_user_fdset(fd_set *fds,
                                             abi_ulong target_fds_addr,
                                             int n)
@@ -1021,6 +1038,7 @@ static inline abi_long copy_to_user_fdset(abi_ulong target_fds_addr,
 
     return 0;
 }
+#endif
 
 #if defined(__alpha__)
 #define HOST_HZ 1024
@@ -1067,6 +1085,7 @@ static inline abi_long host_to_target_rusage(abi_ulong target_addr,
     return 0;
 }
 
+#ifdef TARGET_NR_setrlimit
 static inline rlim_t target_to_host_rlim(abi_ulong target_rlim)
 {
     abi_ulong target_rlim_swap;
@@ -1082,7 +1101,9 @@ static inline rlim_t target_to_host_rlim(abi_ulong target_rlim)
     
     return result;
 }
+#endif
 
+#if defined(TARGET_NR_getrlimit) || defined(TARGET_NR_ugetrlimit)
 static inline abi_ulong host_to_target_rlim(rlim_t rlim)
 {
     abi_ulong target_rlim_swap;
@@ -1096,6 +1117,7 @@ static inline abi_ulong host_to_target_rlim(rlim_t rlim)
     
     return result;
 }
+#endif
 
 static inline int target_to_host_resource(int code)
 {
@@ -1186,6 +1208,12 @@ static inline abi_long copy_to_user_timeval64(abi_ulong target_tv_addr,
     return 0;
 }
 
+#if defined(TARGET_NR_futex) || \
+    defined(TARGET_NR_rt_sigtimedwait) || \
+    defined(TARGET_NR_pselect6) || defined(TARGET_NR_pselect6) || \
+    defined(TARGET_NR_nanosleep) || defined(TARGET_NR_clock_settime) || \
+    defined(TARGET_NR_utimensat) || defined(TARGET_NR_mq_timedsend) || \
+    defined(TARGET_NR_mq_timedreceive)
 static inline abi_long target_to_host_timespec(struct timespec *host_ts,
                                                abi_ulong target_addr)
 {
@@ -1199,6 +1227,23 @@ static inline abi_long target_to_host_timespec(struct timespec *host_ts,
     unlock_user_struct(target_ts, target_addr, 0);
     return 0;
 }
+#endif
+
+#if defined(TARGET_NR_clock_settime64)
+static inline abi_long target_to_host_timespec64(struct timespec *host_ts,
+                                                 abi_ulong target_addr)
+{
+    struct target__kernel_timespec *target_ts;
+
+    if (!lock_user_struct(VERIFY_READ, target_ts, target_addr, 1)) {
+        return -TARGET_EFAULT;
+    }
+    __get_user(host_ts->tv_sec, &target_ts->tv_sec);
+    __get_user(host_ts->tv_nsec, &target_ts->tv_nsec);
+    unlock_user_struct(target_ts, target_addr, 0);
+    return 0;
+}
+#endif
 
 static inline abi_long host_to_target_timespec(abi_ulong target_addr,
                                                struct timespec *host_ts)
@@ -1228,6 +1273,7 @@ static inline abi_long host_to_target_timespec64(abi_ulong target_addr,
     return 0;
 }
 
+#if defined(TARGET_NR_settimeofday)
 static inline abi_long copy_from_user_timezone(struct timezone *tz,
                                                abi_ulong target_tz_addr)
 {
@@ -1244,6 +1290,7 @@ static inline abi_long copy_from_user_timezone(struct timezone *tz,
 
     return 0;
 }
+#endif
 
 #if defined(TARGET_NR_mq_open) && defined(__NR_mq_open)
 #include <mqueue.h>
@@ -5498,6 +5545,10 @@ static bitmask_transtbl mmap_flags_tbl[] = {
     { 0, 0, 0, 0 }
 };
 
+/*
+ * NOTE: TARGET_ABI32 is defined for TARGET_I386 (but not for TARGET_X86_64)
+ *       TARGET_I386 is defined if TARGET_X86_64 is defined
+ */
 #if defined(TARGET_I386)
 
 /* NOTE: there is really one LDT for all the threads */
@@ -5637,7 +5688,7 @@ static abi_long do_modify_ldt(CPUX86State *env, int func, abi_ulong ptr,
     return ret;
 }
 
-#if defined(TARGET_I386) && defined(TARGET_ABI32)
+#if defined(TARGET_ABI32)
 abi_long do_set_thread_area(CPUX86State *env, abi_ulong ptr)
 {
     uint64_t *gdt_table = g2h(env->gdt.base);
@@ -5769,9 +5820,12 @@ static abi_long do_get_thread_area(CPUX86State *env, abi_ulong ptr)
     unlock_user_struct(target_ldt_info, ptr, 1);
     return 0;
 }
-#endif /* TARGET_I386 && TARGET_ABI32 */
 
-#ifndef TARGET_ABI32
+abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
+{
+    return -ENOSYS;
+}
+#else
 abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
 {
     abi_long ret = 0;
@@ -5804,7 +5858,7 @@ abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
     }
     return ret;
 }
-#endif
+#endif /* defined(TARGET_ABI32 */
 
 #endif /* defined(TARGET_I386) */
 
@@ -6565,6 +6619,8 @@ static inline abi_long target_ftruncate64(void *cpu_env, abi_long arg1,
 }
 #endif
 
+#if defined(TARGET_NR_timer_settime) || \
+    (defined(TARGET_NR_timerfd_settime) && defined(CONFIG_TIMERFD))
 static inline abi_long target_to_host_itimerspec(struct itimerspec *host_itspec,
                                                  abi_ulong target_addr)
 {
@@ -6584,7 +6640,11 @@ static inline abi_long target_to_host_itimerspec(struct itimerspec *host_itspec,
     unlock_user_struct(target_itspec, target_addr, 1);
     return 0;
 }
+#endif
 
+#if ((defined(TARGET_NR_timerfd_gettime) || \
+      defined(TARGET_NR_timerfd_settime)) && defined(CONFIG_TIMERFD)) || \
+    defined(TARGET_NR_timer_gettime) || defined(TARGET_NR_timer_settime)
 static inline abi_long host_to_target_itimerspec(abi_ulong target_addr,
                                                struct itimerspec *host_its)
 {
@@ -6603,7 +6663,10 @@ static inline abi_long host_to_target_itimerspec(abi_ulong target_addr,
     unlock_user_struct(target_itspec, target_addr, 0);
     return 0;
 }
+#endif
 
+#if defined(TARGET_NR_adjtimex) || \
+    (defined(TARGET_NR_clock_adjtime) && defined(CONFIG_CLOCK_ADJTIME))
 static inline abi_long target_to_host_timex(struct timex *host_tx,
                                             abi_long target_addr)
 {
@@ -6673,7 +6736,7 @@ static inline abi_long host_to_target_timex(abi_long target_addr,
     unlock_user_struct(target_tx, target_addr, 1);
     return 0;
 }
-
+#endif
 
 static inline abi_long target_to_host_sigevent(struct sigevent *host_sevp,
                                                abi_ulong target_addr)
@@ -6840,6 +6903,7 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx,
    futexes locally would make futexes shared between multiple processes
    tricky.  However they're probably useless because guest atomic
    operations won't work either.  */
+#if defined(TARGET_NR_futex)
 static int do_futex(target_ulong uaddr, int op, int val, target_ulong timeout,
                     target_ulong uaddr2, int val3)
 {
@@ -6886,6 +6950,7 @@ static int do_futex(target_ulong uaddr, int op, int val, target_ulong timeout,
         return -TARGET_ENOSYS;
     }
 }
+#endif
 #if defined(TARGET_NR_name_to_handle_at) && defined(CONFIG_OPEN_BY_HANDLE)
 static abi_long do_name_to_handle_at(abi_long dirfd, abi_long pathname,
                                      abi_long handle, abi_long mount_id,
@@ -8494,6 +8559,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#ifdef TARGET_NR_rt_sigtimedwait
     case TARGET_NR_rt_sigtimedwait:
         {
             sigset_t set;
@@ -8530,6 +8596,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
     case TARGET_NR_rt_sigqueueinfo:
         {
             siginfo_t uinfo;
@@ -8629,6 +8696,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#if defined(TARGET_NR_gettimeofday)
     case TARGET_NR_gettimeofday:
         {
             struct timeval tv;
@@ -8639,6 +8707,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
+#if defined(TARGET_NR_settimeofday)
     case TARGET_NR_settimeofday:
         {
             struct timeval tv, *ptv = NULL;
@@ -8660,6 +8730,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
 
             return get_errno(settimeofday(ptv, ptz));
         }
+#endif
 #if defined(TARGET_NR_select)
     case TARGET_NR_select:
 #if defined(TARGET_WANT_NI_OLD_SELECT)
@@ -9131,6 +9202,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
 #ifdef TARGET_NR_sendmmsg
     case TARGET_NR_sendmmsg:
         return do_sendrecvmmsg(arg1, arg2, arg3, arg4, 1);
+#endif
+#ifdef TARGET_NR_recvmmsg
     case TARGET_NR_recvmmsg:
         return do_sendrecvmmsg(arg1, arg2, arg3, arg4, 0);
 #endif
@@ -9305,6 +9378,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         return do_syscall(cpu_env, arg1 & 0xffff, arg2, arg3, arg4, arg5,
                           arg6, arg7, arg8, 0);
 #endif
+#if defined(TARGET_NR_wait4)
     case TARGET_NR_wait4:
         {
             int status;
@@ -9332,6 +9406,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
 #ifdef TARGET_NR_swapoff
     case TARGET_NR_swapoff:
         if (!(p = lock_user_string(arg1)))
@@ -9476,6 +9551,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         return do_vm86(cpu_env, arg1, arg2);
 #endif
 #endif
+#if defined(TARGET_NR_adjtimex)
     case TARGET_NR_adjtimex:
         {
             struct timex host_buf;
@@ -9491,6 +9567,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
 #if defined(TARGET_NR_clock_adjtime) && defined(CONFIG_CLOCK_ADJTIME)
     case TARGET_NR_clock_adjtime:
         {
@@ -10007,6 +10084,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         return get_errno(sched_get_priority_max(arg1));
     case TARGET_NR_sched_get_priority_min:
         return get_errno(sched_get_priority_min(arg1));
+#ifdef TARGET_NR_sched_rr_get_interval
     case TARGET_NR_sched_rr_get_interval:
         {
             struct timespec ts;
@@ -10016,6 +10094,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
+#if defined(TARGET_NR_nanosleep)
     case TARGET_NR_nanosleep:
         {
             struct timespec req, rem;
@@ -10026,6 +10106,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             }
         }
         return ret;
+#endif
     case TARGET_NR_prctl:
         switch (arg1) {
         case PR_GET_PDEATHSIG:
@@ -10247,11 +10328,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         break;
 #ifdef TARGET_NR_arch_prctl
     case TARGET_NR_arch_prctl:
-#if defined(TARGET_I386) && !defined(TARGET_ABI32)
         return do_arch_prctl(cpu_env, arg1, arg2);
-#else
-#error unreachable
-#endif
 #endif
 #ifdef TARGET_NR_pread64
     case TARGET_NR_pread64:
@@ -11400,6 +11477,18 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         return ret;
     }
 #endif
+#ifdef TARGET_NR_clock_settime64
+    case TARGET_NR_clock_settime64:
+    {
+        struct timespec ts;
+
+        ret = target_to_host_timespec64(&ts, arg2);
+        if (!is_error(ret)) {
+            ret = get_errno(clock_settime(arg1, &ts));
+        }
+        return ret;
+    }
+#endif
 #ifdef TARGET_NR_clock_gettime
     case TARGET_NR_clock_gettime:
     {
@@ -11411,6 +11500,17 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         return ret;
     }
 #endif
+#ifdef TARGET_NR_clock_gettime64
+    case TARGET_NR_clock_gettime64:
+    {
+        struct timespec ts;
+        ret = get_errno(clock_gettime(arg1, &ts));
+        if (!is_error(ret)) {
+            ret = host_to_target_timespec64(arg2, &ts);
+        }
+        return ret;
+    }
+#endif
 #ifdef TARGET_NR_clock_getres
     case TARGET_NR_clock_getres:
     {
@@ -11496,8 +11596,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         }
         return ret;
 #endif
+#ifdef TARGET_NR_futex
     case TARGET_NR_futex:
         return do_futex(arg1, arg2, arg3, arg4, arg5, arg6);
+#endif
 #if defined(TARGET_NR_inotify_init) && defined(__NR_inotify_init)
     case TARGET_NR_inotify_init:
         ret = get_errno(sys_inotify_init());
@@ -11562,6 +11664,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         unlock_user (p, arg1, 0);
         return ret;
 
+#ifdef TARGET_NR_mq_timedsend
     case TARGET_NR_mq_timedsend:
         {
             struct timespec ts;
@@ -11577,7 +11680,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             unlock_user (p, arg2, arg3);
         }
         return ret;
+#endif
 
+#ifdef TARGET_NR_mq_timedreceive
     case TARGET_NR_mq_timedreceive:
         {
             struct timespec ts;
@@ -11598,6 +11703,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
                 put_user_u32(prio, arg4);
         }
         return ret;
+#endif
 
     /* Not implemented for now... */
 /*     case TARGET_NR_mq_notify: */
@@ -11727,8 +11833,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),
@@ -11871,7 +11983,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
         struct target_rlimit64 *target_rnew, *target_rold;
         struct host_rlimit64 rnew, rold, *rnewp = 0;
         int resource = target_to_host_resource(arg2);
-        if (arg3) {
+
+        if (arg3 && (resource != RLIMIT_AS &&
+                     resource != RLIMIT_DATA &&
+                     resource != RLIMIT_STACK)) {
             if (!lock_user_struct(VERIFY_READ, target_rnew, arg3, 1)) {
                 return -TARGET_EFAULT;
             }
diff --git a/linux-user/x86_64/Makefile.objs b/linux-user/x86_64/Makefile.objs
new file mode 100644 (file)
index 0000000..2cef1d4
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/x86_64/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/x86_64/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/x86_64/syscall_64.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/x86_64/syscall_64.tbl b/linux-user/x86_64/syscall_64.tbl
new file mode 100644 (file)
index 0000000..44d510b
--- /dev/null
@@ -0,0 +1,404 @@
+#
+# 64-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The __x64_sys_*() stubs are created on-the-fly for sys_*() system calls
+#
+# The abi is "common", "64" or "x32" for this file.
+#
+0      common  read                    __x64_sys_read
+1      common  write                   __x64_sys_write
+2      common  open                    __x64_sys_open
+3      common  close                   __x64_sys_close
+4      common  stat                    __x64_sys_newstat
+5      common  fstat                   __x64_sys_newfstat
+6      common  lstat                   __x64_sys_newlstat
+7      common  poll                    __x64_sys_poll
+8      common  lseek                   __x64_sys_lseek
+9      common  mmap                    __x64_sys_mmap
+10     common  mprotect                __x64_sys_mprotect
+11     common  munmap                  __x64_sys_munmap
+12     common  brk                     __x64_sys_brk
+13     64      rt_sigaction            __x64_sys_rt_sigaction
+14     common  rt_sigprocmask          __x64_sys_rt_sigprocmask
+15     64      rt_sigreturn            __x64_sys_rt_sigreturn/ptregs
+16     64      ioctl                   __x64_sys_ioctl
+17     common  pread64                 __x64_sys_pread64
+18     common  pwrite64                __x64_sys_pwrite64
+19     64      readv                   __x64_sys_readv
+20     64      writev                  __x64_sys_writev
+21     common  access                  __x64_sys_access
+22     common  pipe                    __x64_sys_pipe
+23     common  select                  __x64_sys_select
+24     common  sched_yield             __x64_sys_sched_yield
+25     common  mremap                  __x64_sys_mremap
+26     common  msync                   __x64_sys_msync
+27     common  mincore                 __x64_sys_mincore
+28     common  madvise                 __x64_sys_madvise
+29     common  shmget                  __x64_sys_shmget
+30     common  shmat                   __x64_sys_shmat
+31     common  shmctl                  __x64_sys_shmctl
+32     common  dup                     __x64_sys_dup
+33     common  dup2                    __x64_sys_dup2
+34     common  pause                   __x64_sys_pause
+35     common  nanosleep               __x64_sys_nanosleep
+36     common  getitimer               __x64_sys_getitimer
+37     common  alarm                   __x64_sys_alarm
+38     common  setitimer               __x64_sys_setitimer
+39     common  getpid                  __x64_sys_getpid
+40     common  sendfile                __x64_sys_sendfile64
+41     common  socket                  __x64_sys_socket
+42     common  connect                 __x64_sys_connect
+43     common  accept                  __x64_sys_accept
+44     common  sendto                  __x64_sys_sendto
+45     64      recvfrom                __x64_sys_recvfrom
+46     64      sendmsg                 __x64_sys_sendmsg
+47     64      recvmsg                 __x64_sys_recvmsg
+48     common  shutdown                __x64_sys_shutdown
+49     common  bind                    __x64_sys_bind
+50     common  listen                  __x64_sys_listen
+51     common  getsockname             __x64_sys_getsockname
+52     common  getpeername             __x64_sys_getpeername
+53     common  socketpair              __x64_sys_socketpair
+54     64      setsockopt              __x64_sys_setsockopt
+55     64      getsockopt              __x64_sys_getsockopt
+56     common  clone                   __x64_sys_clone/ptregs
+57     common  fork                    __x64_sys_fork/ptregs
+58     common  vfork                   __x64_sys_vfork/ptregs
+59     64      execve                  __x64_sys_execve/ptregs
+60     common  exit                    __x64_sys_exit
+61     common  wait4                   __x64_sys_wait4
+62     common  kill                    __x64_sys_kill
+63     common  uname                   __x64_sys_newuname
+64     common  semget                  __x64_sys_semget
+65     common  semop                   __x64_sys_semop
+66     common  semctl                  __x64_sys_semctl
+67     common  shmdt                   __x64_sys_shmdt
+68     common  msgget                  __x64_sys_msgget
+69     common  msgsnd                  __x64_sys_msgsnd
+70     common  msgrcv                  __x64_sys_msgrcv
+71     common  msgctl                  __x64_sys_msgctl
+72     common  fcntl                   __x64_sys_fcntl
+73     common  flock                   __x64_sys_flock
+74     common  fsync                   __x64_sys_fsync
+75     common  fdatasync               __x64_sys_fdatasync
+76     common  truncate                __x64_sys_truncate
+77     common  ftruncate               __x64_sys_ftruncate
+78     common  getdents                __x64_sys_getdents
+79     common  getcwd                  __x64_sys_getcwd
+80     common  chdir                   __x64_sys_chdir
+81     common  fchdir                  __x64_sys_fchdir
+82     common  rename                  __x64_sys_rename
+83     common  mkdir                   __x64_sys_mkdir
+84     common  rmdir                   __x64_sys_rmdir
+85     common  creat                   __x64_sys_creat
+86     common  link                    __x64_sys_link
+87     common  unlink                  __x64_sys_unlink
+88     common  symlink                 __x64_sys_symlink
+89     common  readlink                __x64_sys_readlink
+90     common  chmod                   __x64_sys_chmod
+91     common  fchmod                  __x64_sys_fchmod
+92     common  chown                   __x64_sys_chown
+93     common  fchown                  __x64_sys_fchown
+94     common  lchown                  __x64_sys_lchown
+95     common  umask                   __x64_sys_umask
+96     common  gettimeofday            __x64_sys_gettimeofday
+97     common  getrlimit               __x64_sys_getrlimit
+98     common  getrusage               __x64_sys_getrusage
+99     common  sysinfo                 __x64_sys_sysinfo
+100    common  times                   __x64_sys_times
+101    64      ptrace                  __x64_sys_ptrace
+102    common  getuid                  __x64_sys_getuid
+103    common  syslog                  __x64_sys_syslog
+104    common  getgid                  __x64_sys_getgid
+105    common  setuid                  __x64_sys_setuid
+106    common  setgid                  __x64_sys_setgid
+107    common  geteuid                 __x64_sys_geteuid
+108    common  getegid                 __x64_sys_getegid
+109    common  setpgid                 __x64_sys_setpgid
+110    common  getppid                 __x64_sys_getppid
+111    common  getpgrp                 __x64_sys_getpgrp
+112    common  setsid                  __x64_sys_setsid
+113    common  setreuid                __x64_sys_setreuid
+114    common  setregid                __x64_sys_setregid
+115    common  getgroups               __x64_sys_getgroups
+116    common  setgroups               __x64_sys_setgroups
+117    common  setresuid               __x64_sys_setresuid
+118    common  getresuid               __x64_sys_getresuid
+119    common  setresgid               __x64_sys_setresgid
+120    common  getresgid               __x64_sys_getresgid
+121    common  getpgid                 __x64_sys_getpgid
+122    common  setfsuid                __x64_sys_setfsuid
+123    common  setfsgid                __x64_sys_setfsgid
+124    common  getsid                  __x64_sys_getsid
+125    common  capget                  __x64_sys_capget
+126    common  capset                  __x64_sys_capset
+127    64      rt_sigpending           __x64_sys_rt_sigpending
+128    64      rt_sigtimedwait         __x64_sys_rt_sigtimedwait
+129    64      rt_sigqueueinfo         __x64_sys_rt_sigqueueinfo
+130    common  rt_sigsuspend           __x64_sys_rt_sigsuspend
+131    64      sigaltstack             __x64_sys_sigaltstack
+132    common  utime                   __x64_sys_utime
+133    common  mknod                   __x64_sys_mknod
+134    64      uselib
+135    common  personality             __x64_sys_personality
+136    common  ustat                   __x64_sys_ustat
+137    common  statfs                  __x64_sys_statfs
+138    common  fstatfs                 __x64_sys_fstatfs
+139    common  sysfs                   __x64_sys_sysfs
+140    common  getpriority             __x64_sys_getpriority
+141    common  setpriority             __x64_sys_setpriority
+142    common  sched_setparam          __x64_sys_sched_setparam
+143    common  sched_getparam          __x64_sys_sched_getparam
+144    common  sched_setscheduler      __x64_sys_sched_setscheduler
+145    common  sched_getscheduler      __x64_sys_sched_getscheduler
+146    common  sched_get_priority_max  __x64_sys_sched_get_priority_max
+147    common  sched_get_priority_min  __x64_sys_sched_get_priority_min
+148    common  sched_rr_get_interval   __x64_sys_sched_rr_get_interval
+149    common  mlock                   __x64_sys_mlock
+150    common  munlock                 __x64_sys_munlock
+151    common  mlockall                __x64_sys_mlockall
+152    common  munlockall              __x64_sys_munlockall
+153    common  vhangup                 __x64_sys_vhangup
+154    common  modify_ldt              __x64_sys_modify_ldt
+155    common  pivot_root              __x64_sys_pivot_root
+156    64      _sysctl                 __x64_sys_sysctl
+157    common  prctl                   __x64_sys_prctl
+158    common  arch_prctl              __x64_sys_arch_prctl
+159    common  adjtimex                __x64_sys_adjtimex
+160    common  setrlimit               __x64_sys_setrlimit
+161    common  chroot                  __x64_sys_chroot
+162    common  sync                    __x64_sys_sync
+163    common  acct                    __x64_sys_acct
+164    common  settimeofday            __x64_sys_settimeofday
+165    common  mount                   __x64_sys_mount
+166    common  umount2                 __x64_sys_umount
+167    common  swapon                  __x64_sys_swapon
+168    common  swapoff                 __x64_sys_swapoff
+169    common  reboot                  __x64_sys_reboot
+170    common  sethostname             __x64_sys_sethostname
+171    common  setdomainname           __x64_sys_setdomainname
+172    common  iopl                    __x64_sys_iopl/ptregs
+173    common  ioperm                  __x64_sys_ioperm
+174    64      create_module
+175    common  init_module             __x64_sys_init_module
+176    common  delete_module           __x64_sys_delete_module
+177    64      get_kernel_syms
+178    64      query_module
+179    common  quotactl                __x64_sys_quotactl
+180    64      nfsservctl
+181    common  getpmsg
+182    common  putpmsg
+183    common  afs_syscall
+184    common  tuxcall
+185    common  security
+186    common  gettid                  __x64_sys_gettid
+187    common  readahead               __x64_sys_readahead
+188    common  setxattr                __x64_sys_setxattr
+189    common  lsetxattr               __x64_sys_lsetxattr
+190    common  fsetxattr               __x64_sys_fsetxattr
+191    common  getxattr                __x64_sys_getxattr
+192    common  lgetxattr               __x64_sys_lgetxattr
+193    common  fgetxattr               __x64_sys_fgetxattr
+194    common  listxattr               __x64_sys_listxattr
+195    common  llistxattr              __x64_sys_llistxattr
+196    common  flistxattr              __x64_sys_flistxattr
+197    common  removexattr             __x64_sys_removexattr
+198    common  lremovexattr            __x64_sys_lremovexattr
+199    common  fremovexattr            __x64_sys_fremovexattr
+200    common  tkill                   __x64_sys_tkill
+201    common  time                    __x64_sys_time
+202    common  futex                   __x64_sys_futex
+203    common  sched_setaffinity       __x64_sys_sched_setaffinity
+204    common  sched_getaffinity       __x64_sys_sched_getaffinity
+205    64      set_thread_area
+206    64      io_setup                __x64_sys_io_setup
+207    common  io_destroy              __x64_sys_io_destroy
+208    common  io_getevents            __x64_sys_io_getevents
+209    64      io_submit               __x64_sys_io_submit
+210    common  io_cancel               __x64_sys_io_cancel
+211    64      get_thread_area
+212    common  lookup_dcookie          __x64_sys_lookup_dcookie
+213    common  epoll_create            __x64_sys_epoll_create
+214    64      epoll_ctl_old
+215    64      epoll_wait_old
+216    common  remap_file_pages        __x64_sys_remap_file_pages
+217    common  getdents64              __x64_sys_getdents64
+218    common  set_tid_address         __x64_sys_set_tid_address
+219    common  restart_syscall         __x64_sys_restart_syscall
+220    common  semtimedop              __x64_sys_semtimedop
+221    common  fadvise64               __x64_sys_fadvise64
+222    64      timer_create            __x64_sys_timer_create
+223    common  timer_settime           __x64_sys_timer_settime
+224    common  timer_gettime           __x64_sys_timer_gettime
+225    common  timer_getoverrun        __x64_sys_timer_getoverrun
+226    common  timer_delete            __x64_sys_timer_delete
+227    common  clock_settime           __x64_sys_clock_settime
+228    common  clock_gettime           __x64_sys_clock_gettime
+229    common  clock_getres            __x64_sys_clock_getres
+230    common  clock_nanosleep         __x64_sys_clock_nanosleep
+231    common  exit_group              __x64_sys_exit_group
+232    common  epoll_wait              __x64_sys_epoll_wait
+233    common  epoll_ctl               __x64_sys_epoll_ctl
+234    common  tgkill                  __x64_sys_tgkill
+235    common  utimes                  __x64_sys_utimes
+236    64      vserver
+237    common  mbind                   __x64_sys_mbind
+238    common  set_mempolicy           __x64_sys_set_mempolicy
+239    common  get_mempolicy           __x64_sys_get_mempolicy
+240    common  mq_open                 __x64_sys_mq_open
+241    common  mq_unlink               __x64_sys_mq_unlink
+242    common  mq_timedsend            __x64_sys_mq_timedsend
+243    common  mq_timedreceive         __x64_sys_mq_timedreceive
+244    64      mq_notify               __x64_sys_mq_notify
+245    common  mq_getsetattr           __x64_sys_mq_getsetattr
+246    64      kexec_load              __x64_sys_kexec_load
+247    64      waitid                  __x64_sys_waitid
+248    common  add_key                 __x64_sys_add_key
+249    common  request_key             __x64_sys_request_key
+250    common  keyctl                  __x64_sys_keyctl
+251    common  ioprio_set              __x64_sys_ioprio_set
+252    common  ioprio_get              __x64_sys_ioprio_get
+253    common  inotify_init            __x64_sys_inotify_init
+254    common  inotify_add_watch       __x64_sys_inotify_add_watch
+255    common  inotify_rm_watch        __x64_sys_inotify_rm_watch
+256    common  migrate_pages           __x64_sys_migrate_pages
+257    common  openat                  __x64_sys_openat
+258    common  mkdirat                 __x64_sys_mkdirat
+259    common  mknodat                 __x64_sys_mknodat
+260    common  fchownat                __x64_sys_fchownat
+261    common  futimesat               __x64_sys_futimesat
+262    common  newfstatat              __x64_sys_newfstatat
+263    common  unlinkat                __x64_sys_unlinkat
+264    common  renameat                __x64_sys_renameat
+265    common  linkat                  __x64_sys_linkat
+266    common  symlinkat               __x64_sys_symlinkat
+267    common  readlinkat              __x64_sys_readlinkat
+268    common  fchmodat                __x64_sys_fchmodat
+269    common  faccessat               __x64_sys_faccessat
+270    common  pselect6                __x64_sys_pselect6
+271    common  ppoll                   __x64_sys_ppoll
+272    common  unshare                 __x64_sys_unshare
+273    64      set_robust_list         __x64_sys_set_robust_list
+274    64      get_robust_list         __x64_sys_get_robust_list
+275    common  splice                  __x64_sys_splice
+276    common  tee                     __x64_sys_tee
+277    common  sync_file_range         __x64_sys_sync_file_range
+278    64      vmsplice                __x64_sys_vmsplice
+279    64      move_pages              __x64_sys_move_pages
+280    common  utimensat               __x64_sys_utimensat
+281    common  epoll_pwait             __x64_sys_epoll_pwait
+282    common  signalfd                __x64_sys_signalfd
+283    common  timerfd_create          __x64_sys_timerfd_create
+284    common  eventfd                 __x64_sys_eventfd
+285    common  fallocate               __x64_sys_fallocate
+286    common  timerfd_settime         __x64_sys_timerfd_settime
+287    common  timerfd_gettime         __x64_sys_timerfd_gettime
+288    common  accept4                 __x64_sys_accept4
+289    common  signalfd4               __x64_sys_signalfd4
+290    common  eventfd2                __x64_sys_eventfd2
+291    common  epoll_create1           __x64_sys_epoll_create1
+292    common  dup3                    __x64_sys_dup3
+293    common  pipe2                   __x64_sys_pipe2
+294    common  inotify_init1           __x64_sys_inotify_init1
+295    64      preadv                  __x64_sys_preadv
+296    64      pwritev                 __x64_sys_pwritev
+297    64      rt_tgsigqueueinfo       __x64_sys_rt_tgsigqueueinfo
+298    common  perf_event_open         __x64_sys_perf_event_open
+299    64      recvmmsg                __x64_sys_recvmmsg
+300    common  fanotify_init           __x64_sys_fanotify_init
+301    common  fanotify_mark           __x64_sys_fanotify_mark
+302    common  prlimit64               __x64_sys_prlimit64
+303    common  name_to_handle_at       __x64_sys_name_to_handle_at
+304    common  open_by_handle_at       __x64_sys_open_by_handle_at
+305    common  clock_adjtime           __x64_sys_clock_adjtime
+306    common  syncfs                  __x64_sys_syncfs
+307    64      sendmmsg                __x64_sys_sendmmsg
+308    common  setns                   __x64_sys_setns
+309    common  getcpu                  __x64_sys_getcpu
+310    64      process_vm_readv        __x64_sys_process_vm_readv
+311    64      process_vm_writev       __x64_sys_process_vm_writev
+312    common  kcmp                    __x64_sys_kcmp
+313    common  finit_module            __x64_sys_finit_module
+314    common  sched_setattr           __x64_sys_sched_setattr
+315    common  sched_getattr           __x64_sys_sched_getattr
+316    common  renameat2               __x64_sys_renameat2
+317    common  seccomp                 __x64_sys_seccomp
+318    common  getrandom               __x64_sys_getrandom
+319    common  memfd_create            __x64_sys_memfd_create
+320    common  kexec_file_load         __x64_sys_kexec_file_load
+321    common  bpf                     __x64_sys_bpf
+322    64      execveat                __x64_sys_execveat/ptregs
+323    common  userfaultfd             __x64_sys_userfaultfd
+324    common  membarrier              __x64_sys_membarrier
+325    common  mlock2                  __x64_sys_mlock2
+326    common  copy_file_range         __x64_sys_copy_file_range
+327    64      preadv2                 __x64_sys_preadv2
+328    64      pwritev2                __x64_sys_pwritev2
+329    common  pkey_mprotect           __x64_sys_pkey_mprotect
+330    common  pkey_alloc              __x64_sys_pkey_alloc
+331    common  pkey_free               __x64_sys_pkey_free
+332    common  statx                   __x64_sys_statx
+333    common  io_pgetevents           __x64_sys_io_pgetevents
+334    common  rseq                    __x64_sys_rseq
+# don't use numbers 387 through 423, add new calls after the last
+# 'common' entry
+424    common  pidfd_send_signal       __x64_sys_pidfd_send_signal
+425    common  io_uring_setup          __x64_sys_io_uring_setup
+426    common  io_uring_enter          __x64_sys_io_uring_enter
+427    common  io_uring_register       __x64_sys_io_uring_register
+428    common  open_tree               __x64_sys_open_tree
+429    common  move_mount              __x64_sys_move_mount
+430    common  fsopen                  __x64_sys_fsopen
+431    common  fsconfig                __x64_sys_fsconfig
+432    common  fsmount                 __x64_sys_fsmount
+433    common  fspick                  __x64_sys_fspick
+434    common  pidfd_open              __x64_sys_pidfd_open
+435    common  clone3                  __x64_sys_clone3/ptregs
+437    common  openat2                 __x64_sys_openat2
+438    common  pidfd_getfd             __x64_sys_pidfd_getfd
+
+#
+# x32-specific system call numbers start at 512 to avoid cache impact
+# for native 64-bit operation. The __x32_compat_sys stubs are created
+# on-the-fly for compat_sys_*() compatibility system calls if X86_X32
+# is defined.
+#
+512    x32     rt_sigaction            __x32_compat_sys_rt_sigaction
+513    x32     rt_sigreturn            sys32_x32_rt_sigreturn
+514    x32     ioctl                   __x32_compat_sys_ioctl
+515    x32     readv                   __x32_compat_sys_readv
+516    x32     writev                  __x32_compat_sys_writev
+517    x32     recvfrom                __x32_compat_sys_recvfrom
+518    x32     sendmsg                 __x32_compat_sys_sendmsg
+519    x32     recvmsg                 __x32_compat_sys_recvmsg
+520    x32     execve                  __x32_compat_sys_execve/ptregs
+521    x32     ptrace                  __x32_compat_sys_ptrace
+522    x32     rt_sigpending           __x32_compat_sys_rt_sigpending
+523    x32     rt_sigtimedwait         __x32_compat_sys_rt_sigtimedwait_time64
+524    x32     rt_sigqueueinfo         __x32_compat_sys_rt_sigqueueinfo
+525    x32     sigaltstack             __x32_compat_sys_sigaltstack
+526    x32     timer_create            __x32_compat_sys_timer_create
+527    x32     mq_notify               __x32_compat_sys_mq_notify
+528    x32     kexec_load              __x32_compat_sys_kexec_load
+529    x32     waitid                  __x32_compat_sys_waitid
+530    x32     set_robust_list         __x32_compat_sys_set_robust_list
+531    x32     get_robust_list         __x32_compat_sys_get_robust_list
+532    x32     vmsplice                __x32_compat_sys_vmsplice
+533    x32     move_pages              __x32_compat_sys_move_pages
+534    x32     preadv                  __x32_compat_sys_preadv64
+535    x32     pwritev                 __x32_compat_sys_pwritev64
+536    x32     rt_tgsigqueueinfo       __x32_compat_sys_rt_tgsigqueueinfo
+537    x32     recvmmsg                __x32_compat_sys_recvmmsg_time64
+538    x32     sendmmsg                __x32_compat_sys_sendmmsg
+539    x32     process_vm_readv        __x32_compat_sys_process_vm_readv
+540    x32     process_vm_writev       __x32_compat_sys_process_vm_writev
+541    x32     setsockopt              __x32_compat_sys_setsockopt
+542    x32     getsockopt              __x32_compat_sys_getsockopt
+543    x32     io_setup                __x32_compat_sys_io_setup
+544    x32     io_submit               __x32_compat_sys_io_submit
+545    x32     execveat                __x32_compat_sys_execveat/ptregs
+546    x32     preadv2                 __x32_compat_sys_preadv64v2
+547    x32     pwritev2                __x32_compat_sys_pwritev64v2
diff --git a/linux-user/x86_64/syscall_nr.h b/linux-user/x86_64/syscall_nr.h
deleted file mode 100644 (file)
index e5d14ec..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-#ifndef LINUX_USER_X86_64_SYSCALL_NR_H
-#define LINUX_USER_X86_64_SYSCALL_NR_H
-
-#define TARGET_NR_read                                0
-#define TARGET_NR_write                               1
-#define TARGET_NR_open                                2
-#define TARGET_NR_close                               3
-#define TARGET_NR_stat                                4
-#define TARGET_NR_fstat                               5
-#define TARGET_NR_lstat                               6
-#define TARGET_NR_poll                                7
-#define TARGET_NR_lseek                               8
-#define TARGET_NR_mmap                                9
-#define TARGET_NR_mprotect                           10
-#define TARGET_NR_munmap                             11
-#define TARGET_NR_brk                                12
-#define TARGET_NR_rt_sigaction                       13
-#define TARGET_NR_rt_sigprocmask                     14
-#define TARGET_NR_rt_sigreturn                       15
-#define TARGET_NR_ioctl                              16
-#define TARGET_NR_pread64                            17
-#define TARGET_NR_pwrite64                           18
-#define TARGET_NR_readv                              19
-#define TARGET_NR_writev                             20
-#define TARGET_NR_access                             21
-#define TARGET_NR_pipe                               22
-#define TARGET_NR_select                             23
-#define TARGET_NR_sched_yield                        24
-#define TARGET_NR_mremap                             25
-#define TARGET_NR_msync                              26
-#define TARGET_NR_mincore                            27
-#define TARGET_NR_madvise                            28
-#define TARGET_NR_shmget                             29
-#define TARGET_NR_shmat                              30
-#define TARGET_NR_shmctl                             31
-#define TARGET_NR_dup                                32
-#define TARGET_NR_dup2                               33
-#define TARGET_NR_pause                              34
-#define TARGET_NR_nanosleep                          35
-#define TARGET_NR_getitimer                          36
-#define TARGET_NR_alarm                              37
-#define TARGET_NR_setitimer                          38
-#define TARGET_NR_getpid                             39
-#define TARGET_NR_sendfile                           40
-#define TARGET_NR_socket                             41
-#define TARGET_NR_connect                            42
-#define TARGET_NR_accept                             43
-#define TARGET_NR_sendto                             44
-#define TARGET_NR_recvfrom                           45
-#define TARGET_NR_sendmsg                            46
-#define TARGET_NR_recvmsg                            47
-#define TARGET_NR_shutdown                           48
-#define TARGET_NR_bind                               49
-#define TARGET_NR_listen                             50
-#define TARGET_NR_getsockname                        51
-#define TARGET_NR_getpeername                        52
-#define TARGET_NR_socketpair                         53
-#define TARGET_NR_setsockopt                         54
-#define TARGET_NR_getsockopt                         55
-#define TARGET_NR_clone                              56
-#define TARGET_NR_fork                               57
-#define TARGET_NR_vfork                              58
-#define TARGET_NR_execve                             59
-#define TARGET_NR_exit                               60
-#define TARGET_NR_wait4                              61
-#define TARGET_NR_kill                               62
-#define TARGET_NR_uname                              63
-#define TARGET_NR_semget                             64
-#define TARGET_NR_semop                              65
-#define TARGET_NR_semctl                             66
-#define TARGET_NR_shmdt                              67
-#define TARGET_NR_msgget                             68
-#define TARGET_NR_msgsnd                             69
-#define TARGET_NR_msgrcv                             70
-#define TARGET_NR_msgctl                             71
-#define TARGET_NR_fcntl                              72
-#define TARGET_NR_flock                              73
-#define TARGET_NR_fsync                              74
-#define TARGET_NR_fdatasync                          75
-#define TARGET_NR_truncate                           76
-#define TARGET_NR_ftruncate                          77
-#define TARGET_NR_getdents                           78
-#define TARGET_NR_getcwd                             79
-#define TARGET_NR_chdir                              80
-#define TARGET_NR_fchdir                             81
-#define TARGET_NR_rename                             82
-#define TARGET_NR_mkdir                              83
-#define TARGET_NR_rmdir                              84
-#define TARGET_NR_creat                              85
-#define TARGET_NR_link                               86
-#define TARGET_NR_unlink                             87
-#define TARGET_NR_symlink                            88
-#define TARGET_NR_readlink                           89
-#define TARGET_NR_chmod                              90
-#define TARGET_NR_fchmod                             91
-#define TARGET_NR_chown                              92
-#define TARGET_NR_fchown                             93
-#define TARGET_NR_lchown                             94
-#define TARGET_NR_umask                              95
-#define TARGET_NR_gettimeofday                       96
-#define TARGET_NR_getrlimit                          97
-#define TARGET_NR_getrusage                          98
-#define TARGET_NR_sysinfo                            99
-#define TARGET_NR_times                             100
-#define TARGET_NR_ptrace                            101
-#define TARGET_NR_getuid                            102
-#define TARGET_NR_syslog                            103
-#define TARGET_NR_getgid                            104
-#define TARGET_NR_setuid                            105
-#define TARGET_NR_setgid                            106
-#define TARGET_NR_geteuid                           107
-#define TARGET_NR_getegid                           108
-#define TARGET_NR_setpgid                           109
-#define TARGET_NR_getppid                           110
-#define TARGET_NR_getpgrp                           111
-#define TARGET_NR_setsid                            112
-#define TARGET_NR_setreuid                          113
-#define TARGET_NR_setregid                          114
-#define TARGET_NR_getgroups                         115
-#define TARGET_NR_setgroups                         116
-#define TARGET_NR_setresuid                         117
-#define TARGET_NR_getresuid                         118
-#define TARGET_NR_setresgid                         119
-#define TARGET_NR_getresgid                         120
-#define TARGET_NR_getpgid                           121
-#define TARGET_NR_setfsuid                          122
-#define TARGET_NR_setfsgid                          123
-#define TARGET_NR_getsid                            124
-#define TARGET_NR_capget                            125
-#define TARGET_NR_capset                            126
-#define TARGET_NR_rt_sigpending                     127
-#define TARGET_NR_rt_sigtimedwait                   128
-#define TARGET_NR_rt_sigqueueinfo                   129
-#define TARGET_NR_rt_sigsuspend                     130
-#define TARGET_NR_sigaltstack                       131
-#define TARGET_NR_utime                             132
-#define TARGET_NR_mknod                             133
-#define TARGET_NR_uselib                            134
-#define TARGET_NR_personality                       135
-#define TARGET_NR_ustat                             136
-#define TARGET_NR_statfs                            137
-#define TARGET_NR_fstatfs                           138
-#define TARGET_NR_sysfs                             139
-#define TARGET_NR_getpriority                       140
-#define TARGET_NR_setpriority                       141
-#define TARGET_NR_sched_setparam                    142
-#define TARGET_NR_sched_getparam                    143
-#define TARGET_NR_sched_setscheduler                144
-#define TARGET_NR_sched_getscheduler                145
-#define TARGET_NR_sched_get_priority_max            146
-#define TARGET_NR_sched_get_priority_min            147
-#define TARGET_NR_sched_rr_get_interval             148
-#define TARGET_NR_mlock                             149
-#define TARGET_NR_munlock                           150
-#define TARGET_NR_mlockall                          151
-#define TARGET_NR_munlockall                        152
-#define TARGET_NR_vhangup                           153
-#define TARGET_NR_modify_ldt                        154
-#define TARGET_NR_pivot_root                        155
-#define TARGET_NR__sysctl                           156
-#define TARGET_NR_prctl                             157
-#define TARGET_NR_arch_prctl                        158
-#define TARGET_NR_adjtimex                          159
-#define TARGET_NR_setrlimit                         160
-#define TARGET_NR_chroot                            161
-#define TARGET_NR_sync                              162
-#define TARGET_NR_acct                              163
-#define TARGET_NR_settimeofday                      164
-#define TARGET_NR_mount                             165
-#define TARGET_NR_umount2                           166
-#define TARGET_NR_swapon                            167
-#define TARGET_NR_swapoff                           168
-#define TARGET_NR_reboot                            169
-#define TARGET_NR_sethostname                       170
-#define TARGET_NR_setdomainname                     171
-#define TARGET_NR_iopl                              172
-#define TARGET_NR_ioperm                            173
-#define TARGET_NR_create_module                     174
-#define TARGET_NR_init_module                       175
-#define TARGET_NR_delete_module                     176
-#define TARGET_NR_get_kernel_syms                   177
-#define TARGET_NR_query_module                      178
-#define TARGET_NR_quotactl                          179
-#define TARGET_NR_nfsservctl                        180
-#define TARGET_NR_getpmsg                           181        /* reserved for LiS/STREAMS */
-#define TARGET_NR_putpmsg                           182        /* reserved for LiS/STREAMS */
-#define TARGET_NR_afs_syscall                       183        /* reserved for AFS */
-#define TARGET_NR_tuxcall                      184 /* reserved for tux */
-#define TARGET_NR_security                     185
-#define TARGET_NR_gettid               186
-#define TARGET_NR_readahead            187
-#define TARGET_NR_setxattr             188
-#define TARGET_NR_lsetxattr            189
-#define TARGET_NR_fsetxattr            190
-#define TARGET_NR_getxattr             191
-#define TARGET_NR_lgetxattr            192
-#define TARGET_NR_fgetxattr            193
-#define TARGET_NR_listxattr            194
-#define TARGET_NR_llistxattr           195
-#define TARGET_NR_flistxattr           196
-#define TARGET_NR_removexattr  197
-#define TARGET_NR_lremovexattr 198
-#define TARGET_NR_fremovexattr 199
-#define TARGET_NR_tkill        200
-#define TARGET_NR_time      201
-#define TARGET_NR_futex     202
-#define TARGET_NR_sched_setaffinity    203
-#define TARGET_NR_sched_getaffinity     204
-#define TARGET_NR_set_thread_area      205
-#define TARGET_NR_io_setup     206
-#define TARGET_NR_io_destroy   207
-#define TARGET_NR_io_getevents 208
-#define TARGET_NR_io_submit    209
-#define TARGET_NR_io_cancel    210
-#define TARGET_NR_get_thread_area      211
-#define TARGET_NR_lookup_dcookie       212
-#define TARGET_NR_epoll_create 213
-#define TARGET_NR_epoll_ctl_old        214
-#define TARGET_NR_epoll_wait_old       215
-#define TARGET_NR_remap_file_pages     216
-#define TARGET_NR_getdents64   217
-#define TARGET_NR_set_tid_address      218
-#define TARGET_NR_restart_syscall      219
-#define TARGET_NR_semtimedop           220
-#define TARGET_NR_fadvise64            221
-#define TARGET_NR_timer_create         222
-#define TARGET_NR_timer_settime                223
-#define TARGET_NR_timer_gettime                224
-#define TARGET_NR_timer_getoverrun             225
-#define TARGET_NR_timer_delete 226
-#define TARGET_NR_clock_settime        227
-#define TARGET_NR_clock_gettime        228
-#define TARGET_NR_clock_getres 229
-#define TARGET_NR_clock_nanosleep      230
-#define TARGET_NR_exit_group           231
-#define TARGET_NR_epoll_wait           232
-#define TARGET_NR_epoll_ctl            233
-#define TARGET_NR_tgkill               234
-#define TARGET_NR_utimes               235
-#define TARGET_NR_vserver              236
-#define TARGET_NR_mbind                237
-#define TARGET_NR_set_mempolicy        238
-#define TARGET_NR_get_mempolicy        239
-#define TARGET_NR_mq_open              240
-#define TARGET_NR_mq_unlink            241
-#define TARGET_NR_mq_timedsend         242
-#define TARGET_NR_mq_timedreceive      243
-#define TARGET_NR_mq_notify            244
-#define TARGET_NR_mq_getsetattr        245
-#define TARGET_NR_kexec_load   246
-#define TARGET_NR_waitid               247
-#define TARGET_NR_add_key              248
-#define TARGET_NR_request_key  249
-#define TARGET_NR_keyctl               250
-#define TARGET_NR_ioprio_set           251
-#define TARGET_NR_ioprio_get           252
-#define TARGET_NR_inotify_init 253
-#define TARGET_NR_inotify_add_watch    254
-#define TARGET_NR_inotify_rm_watch     255
-#define TARGET_NR_migrate_pages        256
-#define TARGET_NR_openat               257
-#define TARGET_NR_mkdirat              258
-#define TARGET_NR_mknodat              259
-#define TARGET_NR_fchownat             260
-#define TARGET_NR_futimesat            261
-#define TARGET_NR_newfstatat           262
-#define TARGET_NR_unlinkat             263
-#define TARGET_NR_renameat             264
-#define TARGET_NR_linkat               265
-#define TARGET_NR_symlinkat            266
-#define TARGET_NR_readlinkat           267
-#define TARGET_NR_fchmodat             268
-#define TARGET_NR_faccessat            269
-#define TARGET_NR_pselect6             270
-#define TARGET_NR_ppoll                271
-#define TARGET_NR_unshare              272
-#define TARGET_NR_set_robust_list      273
-#define TARGET_NR_get_robust_list      274
-#define TARGET_NR_splice               275
-#define TARGET_NR_tee          276
-#define TARGET_NR_sync_file_range      277
-#define TARGET_NR_vmsplice             278
-#define TARGET_NR_move_pages           279
-#define TARGET_NR_utimensat            280
-#define TARGET_NR_epoll_pwait  281
-#define TARGET_NR_signalfd             282
-#define TARGET_NR_timerfd_create       283
-#define TARGET_NR_eventfd              284
-#define TARGET_NR_fallocate            285
-#define TARGET_NR_timerfd_settime      286
-#define TARGET_NR_timerfd_gettime      287
-#define TARGET_NR_accept4              288
-#define TARGET_NR_signalfd4            289
-#define TARGET_NR_eventfd2             290
-#define TARGET_NR_epoll_create1        291
-#define TARGET_NR_dup3                 292
-#define TARGET_NR_pipe2                293
-#define TARGET_NR_inotify_init1        294
-#define TARGET_NR_preadv                295
-#define TARGET_NR_pwritev               296
-#define TARGET_NR_rt_tgsigqueueinfo     297
-#define TARGET_NR_perf_event_open       298
-#define TARGET_NR_recvmmsg              299
-#define TARGET_NR_fanotify_init         300
-#define TARGET_NR_fanotify_mark         301
-#define TARGET_NR_prlimit64             302
-#define TARGET_NR_name_to_handle_at     303
-#define TARGET_NR_open_by_handle_at     304
-#define TARGET_NR_clock_adjtime         305
-#define TARGET_NR_syncfs                306
-#define TARGET_NR_sendmmsg              307
-#define TARGET_NR_setns                 308
-#define TARGET_NR_getcpu                309
-#define TARGET_NR_process_vm_readv      310
-#define TARGET_NR_process_vm_writev     311
-#define TARGET_NR_kcmp                  312
-#define TARGET_NR_finit_module          313
-#define TARGET_NR_sched_setattr         314
-#define TARGET_NR_sched_getattr         315
-#define TARGET_NR_renameat2             316
-#define TARGET_NR_seccomp               317
-#define TARGET_NR_getrandom             318
-#define TARGET_NR_memfd_create          319
-#define TARGET_NR_kexec_file_load       320
-#define TARGET_NR_bpf                   321
-#define TARGET_NR_execveat              322
-#define TARGET_NR_userfaultfd           323
-#define TARGET_NR_membarrier            324
-#define TARGET_NR_mlock2                325
-#define TARGET_NR_copy_file_range       326
-#define TARGET_NR_preadv2               327
-#define TARGET_NR_pwritev2              328
-#define TARGET_NR_pkey_mprotect         329
-#define TARGET_NR_pkey_alloc            330
-#define TARGET_NR_pkey_free             331
-#define TARGET_NR_statx                 332
-#define TARGET_NR_io_pgetevents         333
-#define TARGET_NR_rseq                  334
-/*
- * don't use numbers 387 through 423, add new calls after the last
- * 'common' entry
- */
-#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/x86_64/syscallhdr.sh b/linux-user/x86_64/syscallhdr.sh
new file mode 100644 (file)
index 0000000..182be52
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=LINUX_USER_X86_64_`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 | (
+    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/xtensa/Makefile.objs b/linux-user/xtensa/Makefile.objs
new file mode 100644 (file)
index 0000000..d4be1b7
--- /dev/null
@@ -0,0 +1,5 @@
+generated-files-y += linux-user/xtensa/syscall_nr.h
+
+syshdr := $(SRC_PATH)/linux-user/xtensa/syscallhdr.sh
+%/syscall_nr.h: $(SRC_PATH)/linux-user/xtensa/syscall.tbl $(syshdr)
+       $(call quiet-command, sh $(syshdr) $< $@ $(TARGET_SYSTBL_ABI),"GEN","$@")
diff --git a/linux-user/xtensa/syscall.tbl b/linux-user/xtensa/syscall.tbl
new file mode 100644 (file)
index 0000000..85a9ab1
--- /dev/null
@@ -0,0 +1,410 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for xtensa
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The <abi> is always "common" for this file
+#
+0      common  spill                           sys_ni_syscall
+1      common  xtensa                          sys_ni_syscall
+2      common  available4                      sys_ni_syscall
+3      common  available5                      sys_ni_syscall
+4      common  available6                      sys_ni_syscall
+5      common  available7                      sys_ni_syscall
+6      common  available8                      sys_ni_syscall
+7      common  available9                      sys_ni_syscall
+# File Operations
+8      common  open                            sys_open
+9      common  close                           sys_close
+10     common  dup                             sys_dup
+11     common  dup2                            sys_dup2
+12     common  read                            sys_read
+13     common  write                           sys_write
+14     common  select                          sys_select
+15     common  lseek                           sys_lseek
+16     common  poll                            sys_poll
+17     common  _llseek                         sys_llseek
+18     common  epoll_wait                      sys_epoll_wait
+19     common  epoll_ctl                       sys_epoll_ctl
+20     common  epoll_create                    sys_epoll_create
+21     common  creat                           sys_creat
+22     common  truncate                        sys_truncate
+23     common  ftruncate                       sys_ftruncate
+24     common  readv                           sys_readv
+25     common  writev                          sys_writev
+26     common  fsync                           sys_fsync
+27     common  fdatasync                       sys_fdatasync
+28     common  truncate64                      sys_truncate64
+29     common  ftruncate64                     sys_ftruncate64
+30     common  pread64                         sys_pread64
+31     common  pwrite64                        sys_pwrite64
+32     common  link                            sys_link
+33     common  rename                          sys_rename
+34     common  symlink                         sys_symlink
+35     common  readlink                        sys_readlink
+36     common  mknod                           sys_mknod
+37     common  pipe                            sys_pipe
+38     common  unlink                          sys_unlink
+39     common  rmdir                           sys_rmdir
+40     common  mkdir                           sys_mkdir
+41     common  chdir                           sys_chdir
+42     common  fchdir                          sys_fchdir
+43     common  getcwd                          sys_getcwd
+44     common  chmod                           sys_chmod
+45     common  chown                           sys_chown
+46     common  stat                            sys_newstat
+47     common  stat64                          sys_stat64
+48     common  lchown                          sys_lchown
+49     common  lstat                           sys_newlstat
+50     common  lstat64                         sys_lstat64
+51     common  available51                     sys_ni_syscall
+52     common  fchmod                          sys_fchmod
+53     common  fchown                          sys_fchown
+54     common  fstat                           sys_newfstat
+55     common  fstat64                         sys_fstat64
+56     common  flock                           sys_flock
+57     common  access                          sys_access
+58     common  umask                           sys_umask
+59     common  getdents                        sys_getdents
+60     common  getdents64                      sys_getdents64
+61     common  fcntl64                         sys_fcntl64
+62     common  fallocate                       sys_fallocate
+63     common  fadvise64_64                    xtensa_fadvise64_64
+64     common  utime                           sys_utime32
+65     common  utimes                          sys_utimes_time32
+66     common  ioctl                           sys_ioctl
+67     common  fcntl                           sys_fcntl
+68     common  setxattr                        sys_setxattr
+69     common  getxattr                        sys_getxattr
+70     common  listxattr                       sys_listxattr
+71     common  removexattr                     sys_removexattr
+72     common  lsetxattr                       sys_lsetxattr
+73     common  lgetxattr                       sys_lgetxattr
+74     common  llistxattr                      sys_llistxattr
+75     common  lremovexattr                    sys_lremovexattr
+76     common  fsetxattr                       sys_fsetxattr
+77     common  fgetxattr                       sys_fgetxattr
+78     common  flistxattr                      sys_flistxattr
+79     common  fremovexattr                    sys_fremovexattr
+# File Map / Shared Memory Operations
+80     common  mmap2                           sys_mmap_pgoff
+81     common  munmap                          sys_munmap
+82     common  mprotect                        sys_mprotect
+83     common  brk                             sys_brk
+84     common  mlock                           sys_mlock
+85     common  munlock                         sys_munlock
+86     common  mlockall                        sys_mlockall
+87     common  munlockall                      sys_munlockall
+88     common  mremap                          sys_mremap
+89     common  msync                           sys_msync
+90     common  mincore                         sys_mincore
+91     common  madvise                         sys_madvise
+92     common  shmget                          sys_shmget
+93     common  shmat                           xtensa_shmat
+94     common  shmctl                          sys_old_shmctl
+95     common  shmdt                           sys_shmdt
+# Socket Operations
+96     common  socket                          sys_socket
+97     common  setsockopt                      sys_setsockopt
+98     common  getsockopt                      sys_getsockopt
+99     common  shutdown                        sys_shutdown
+100    common  bind                            sys_bind
+101    common  connect                         sys_connect
+102    common  listen                          sys_listen
+103    common  accept                          sys_accept
+104    common  getsockname                     sys_getsockname
+105    common  getpeername                     sys_getpeername
+106    common  sendmsg                         sys_sendmsg
+107    common  recvmsg                         sys_recvmsg
+108    common  send                            sys_send
+109    common  recv                            sys_recv
+110    common  sendto                          sys_sendto
+111    common  recvfrom                        sys_recvfrom
+112    common  socketpair                      sys_socketpair
+113    common  sendfile                        sys_sendfile
+114    common  sendfile64                      sys_sendfile64
+115    common  sendmmsg                        sys_sendmmsg
+# Process Operations
+116    common  clone                           sys_clone
+117    common  execve                          sys_execve
+118    common  exit                            sys_exit
+119    common  exit_group                      sys_exit_group
+120    common  getpid                          sys_getpid
+121    common  wait4                           sys_wait4
+122    common  waitid                          sys_waitid
+123    common  kill                            sys_kill
+124    common  tkill                           sys_tkill
+125    common  tgkill                          sys_tgkill
+126    common  set_tid_address                 sys_set_tid_address
+127    common  gettid                          sys_gettid
+128    common  setsid                          sys_setsid
+129    common  getsid                          sys_getsid
+130    common  prctl                           sys_prctl
+131    common  personality                     sys_personality
+132    common  getpriority                     sys_getpriority
+133    common  setpriority                     sys_setpriority
+134    common  setitimer                       sys_setitimer
+135    common  getitimer                       sys_getitimer
+136    common  setuid                          sys_setuid
+137    common  getuid                          sys_getuid
+138    common  setgid                          sys_setgid
+139    common  getgid                          sys_getgid
+140    common  geteuid                         sys_geteuid
+141    common  getegid                         sys_getegid
+142    common  setreuid                        sys_setreuid
+143    common  setregid                        sys_setregid
+144    common  setresuid                       sys_setresuid
+145    common  getresuid                       sys_getresuid
+146    common  setresgid                       sys_setresgid
+147    common  getresgid                       sys_getresgid
+148    common  setpgid                         sys_setpgid
+149    common  getpgid                         sys_getpgid
+150    common  getppid                         sys_getppid
+151    common  getpgrp                         sys_getpgrp
+# 152 was set_thread_area
+152    common  reserved152                     sys_ni_syscall
+# 153 was get_thread_area
+153    common  reserved153                     sys_ni_syscall
+154    common  times                           sys_times
+155    common  acct                            sys_acct
+156    common  sched_setaffinity               sys_sched_setaffinity
+157    common  sched_getaffinity               sys_sched_getaffinity
+158    common  capget                          sys_capget
+159    common  capset                          sys_capset
+160    common  ptrace                          sys_ptrace
+161    common  semtimedop                      sys_semtimedop_time32
+162    common  semget                          sys_semget
+163    common  semop                           sys_semop
+164    common  semctl                          sys_old_semctl
+165    common  available165                    sys_ni_syscall
+166    common  msgget                          sys_msgget
+167    common  msgsnd                          sys_msgsnd
+168    common  msgrcv                          sys_msgrcv
+169    common  msgctl                          sys_old_msgctl
+170    common  available170                    sys_ni_syscall
+# File System
+171    common  umount2                         sys_umount
+172    common  mount                           sys_mount
+173    common  swapon                          sys_swapon
+174    common  chroot                          sys_chroot
+175    common  pivot_root                      sys_pivot_root
+176    common  umount                          sys_oldumount
+177    common  swapoff                         sys_swapoff
+178    common  sync                            sys_sync
+179    common  syncfs                          sys_syncfs
+180    common  setfsuid                        sys_setfsuid
+181    common  setfsgid                        sys_setfsgid
+182    common  sysfs                           sys_sysfs
+183    common  ustat                           sys_ustat
+184    common  statfs                          sys_statfs
+185    common  fstatfs                         sys_fstatfs
+186    common  statfs64                        sys_statfs64
+187    common  fstatfs64                       sys_fstatfs64
+# System
+188    common  setrlimit                       sys_setrlimit
+189    common  getrlimit                       sys_getrlimit
+190    common  getrusage                       sys_getrusage
+191    common  futex                           sys_futex_time32
+192    common  gettimeofday                    sys_gettimeofday
+193    common  settimeofday                    sys_settimeofday
+194    common  adjtimex                        sys_adjtimex_time32
+195    common  nanosleep                       sys_nanosleep_time32
+196    common  getgroups                       sys_getgroups
+197    common  setgroups                       sys_setgroups
+198    common  sethostname                     sys_sethostname
+199    common  setdomainname                   sys_setdomainname
+200    common  syslog                          sys_syslog
+201    common  vhangup                         sys_vhangup
+202    common  uselib                          sys_uselib
+203    common  reboot                          sys_reboot
+204    common  quotactl                        sys_quotactl
+# 205 was old nfsservctl
+205    common  nfsservctl                      sys_ni_syscall
+206    common  _sysctl                         sys_sysctl
+207    common  bdflush                         sys_bdflush
+208    common  uname                           sys_newuname
+209    common  sysinfo                         sys_sysinfo
+210    common  init_module                     sys_init_module
+211    common  delete_module                   sys_delete_module
+212    common  sched_setparam                  sys_sched_setparam
+213    common  sched_getparam                  sys_sched_getparam
+214    common  sched_setscheduler              sys_sched_setscheduler
+215    common  sched_getscheduler              sys_sched_getscheduler
+216    common  sched_get_priority_max          sys_sched_get_priority_max
+217    common  sched_get_priority_min          sys_sched_get_priority_min
+218    common  sched_rr_get_interval           sys_sched_rr_get_interval_time32
+219    common  sched_yield                     sys_sched_yield
+222    common  available222                    sys_ni_syscall
+# Signal Handling
+223    common  restart_syscall                 sys_restart_syscall
+224    common  sigaltstack                     sys_sigaltstack
+225    common  rt_sigreturn                    xtensa_rt_sigreturn
+226    common  rt_sigaction                    sys_rt_sigaction
+227    common  rt_sigprocmask                  sys_rt_sigprocmask
+228    common  rt_sigpending                   sys_rt_sigpending
+229    common  rt_sigtimedwait                 sys_rt_sigtimedwait_time32
+230    common  rt_sigqueueinfo                 sys_rt_sigqueueinfo
+231    common  rt_sigsuspend                   sys_rt_sigsuspend
+# Message
+232    common  mq_open                         sys_mq_open
+233    common  mq_unlink                       sys_mq_unlink
+234    common  mq_timedsend                    sys_mq_timedsend_time32
+235    common  mq_timedreceive                 sys_mq_timedreceive_time32
+236    common  mq_notify                       sys_mq_notify
+237    common  mq_getsetattr                   sys_mq_getsetattr
+238    common  available238                    sys_ni_syscall
+239    common  io_setup                        sys_io_setup
+# IO
+240    common  io_destroy                      sys_io_destroy
+241    common  io_submit                       sys_io_submit
+242    common  io_getevents                    sys_io_getevents_time32
+243    common  io_cancel                       sys_io_cancel
+244    common  clock_settime                   sys_clock_settime32
+245    common  clock_gettime                   sys_clock_gettime32
+246    common  clock_getres                    sys_clock_getres_time32
+247    common  clock_nanosleep                 sys_clock_nanosleep_time32
+# Timer
+248    common  timer_create                    sys_timer_create
+249    common  timer_delete                    sys_timer_delete
+250    common  timer_settime                   sys_timer_settime32
+251    common  timer_gettime                   sys_timer_gettime32
+252    common  timer_getoverrun                sys_timer_getoverrun
+# System
+253    common  reserved253                     sys_ni_syscall
+254    common  lookup_dcookie                  sys_lookup_dcookie
+255    common  available255                    sys_ni_syscall
+256    common  add_key                         sys_add_key
+257    common  request_key                     sys_request_key
+258    common  keyctl                          sys_keyctl
+259    common  available259                    sys_ni_syscall
+260    common  readahead                       sys_readahead
+261    common  remap_file_pages                sys_remap_file_pages
+262    common  migrate_pages                   sys_migrate_pages
+263    common  mbind                           sys_mbind
+264    common  get_mempolicy                   sys_get_mempolicy
+265    common  set_mempolicy                   sys_set_mempolicy
+266    common  unshare                         sys_unshare
+267    common  move_pages                      sys_move_pages
+268    common  splice                          sys_splice
+269    common  tee                             sys_tee
+270    common  vmsplice                        sys_vmsplice
+271    common  available271                    sys_ni_syscall
+272    common  pselect6                        sys_pselect6_time32
+273    common  ppoll                           sys_ppoll_time32
+274    common  epoll_pwait                     sys_epoll_pwait
+275    common  epoll_create1                   sys_epoll_create1
+276    common  inotify_init                    sys_inotify_init
+277    common  inotify_add_watch               sys_inotify_add_watch
+278    common  inotify_rm_watch                sys_inotify_rm_watch
+279    common  inotify_init1                   sys_inotify_init1
+280    common  getcpu                          sys_getcpu
+281    common  kexec_load                      sys_ni_syscall
+282    common  ioprio_set                      sys_ioprio_set
+283    common  ioprio_get                      sys_ioprio_get
+284    common  set_robust_list                 sys_set_robust_list
+285    common  get_robust_list                 sys_get_robust_list
+286    common  available286                    sys_ni_syscall
+287    common  available287                    sys_ni_syscall
+# Relative File Operations
+288    common  openat                          sys_openat
+289    common  mkdirat                         sys_mkdirat
+290    common  mknodat                         sys_mknodat
+291    common  unlinkat                        sys_unlinkat
+292    common  renameat                        sys_renameat
+293    common  linkat                          sys_linkat
+294    common  symlinkat                       sys_symlinkat
+295    common  readlinkat                      sys_readlinkat
+296    common  utimensat                       sys_utimensat_time32
+297    common  fchownat                        sys_fchownat
+298    common  futimesat                       sys_futimesat_time32
+299    common  fstatat64                       sys_fstatat64
+300    common  fchmodat                        sys_fchmodat
+301    common  faccessat                       sys_faccessat
+302    common  available302                    sys_ni_syscall
+303    common  available303                    sys_ni_syscall
+304    common  signalfd                        sys_signalfd
+# 305 was timerfd
+306    common  eventfd                         sys_eventfd
+307    common  recvmmsg                        sys_recvmmsg_time32
+308    common  setns                           sys_setns
+309    common  signalfd4                       sys_signalfd4
+310    common  dup3                            sys_dup3
+311    common  pipe2                           sys_pipe2
+312    common  timerfd_create                  sys_timerfd_create
+313    common  timerfd_settime                 sys_timerfd_settime32
+314    common  timerfd_gettime                 sys_timerfd_gettime32
+315    common  available315                    sys_ni_syscall
+316    common  eventfd2                        sys_eventfd2
+317    common  preadv                          sys_preadv
+318    common  pwritev                         sys_pwritev
+319    common  available319                    sys_ni_syscall
+320    common  fanotify_init                   sys_fanotify_init
+321    common  fanotify_mark                   sys_fanotify_mark
+322    common  process_vm_readv                sys_process_vm_readv
+323    common  process_vm_writev               sys_process_vm_writev
+324    common  name_to_handle_at               sys_name_to_handle_at
+325    common  open_by_handle_at               sys_open_by_handle_at
+326    common  sync_file_range2                sys_sync_file_range2
+327    common  perf_event_open                 sys_perf_event_open
+328    common  rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo
+329    common  clock_adjtime                   sys_clock_adjtime32
+330    common  prlimit64                       sys_prlimit64
+331    common  kcmp                            sys_kcmp
+332    common  finit_module                    sys_finit_module
+333    common  accept4                         sys_accept4
+334    common  sched_setattr                   sys_sched_setattr
+335    common  sched_getattr                   sys_sched_getattr
+336    common  renameat2                       sys_renameat2
+337    common  seccomp                         sys_seccomp
+338    common  getrandom                       sys_getrandom
+339    common  memfd_create                    sys_memfd_create
+340    common  bpf                             sys_bpf
+341    common  execveat                        sys_execveat
+342    common  userfaultfd                     sys_userfaultfd
+343    common  membarrier                      sys_membarrier
+344    common  mlock2                          sys_mlock2
+345    common  copy_file_range                 sys_copy_file_range
+346    common  preadv2                         sys_preadv2
+347    common  pwritev2                        sys_pwritev2
+348    common  pkey_mprotect                   sys_pkey_mprotect
+349    common  pkey_alloc                      sys_pkey_alloc
+350    common  pkey_free                       sys_pkey_free
+351    common  statx                           sys_statx
+352    common  rseq                            sys_rseq
+# 353 through 402 are unassigned to sync up with generic numbers
+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
+437    common  openat2                         sys_openat2
+438    common  pidfd_getfd                     sys_pidfd_getfd
diff --git a/linux-user/xtensa/syscall_nr.h b/linux-user/xtensa/syscall_nr.h
deleted file mode 100644 (file)
index 39bff65..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * include/asm-xtensa/unistd.h
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2001 - 2009 Tensilica Inc.
- */
-
-#ifndef XTENSA_SYSCALL_NR_H
-#define XTENSA_SYSCALL_NR_H
-
-#define TARGET_NR_spill                                0
-#define TARGET_NR_xtensa                               1
-#define TARGET_NR_available4                           2
-#define TARGET_NR_available5                           3
-#define TARGET_NR_available6                           4
-#define TARGET_NR_available7                           5
-#define TARGET_NR_available8                           6
-#define TARGET_NR_available9                           7
-
-/* File Operations */
-
-#define TARGET_NR_open                                 8
-#define TARGET_NR_close                                9
-#define TARGET_NR_dup                                 10
-#define TARGET_NR_dup2                                11
-#define TARGET_NR_read                                12
-#define TARGET_NR_write                               13
-#define TARGET_NR_select                              14
-#define TARGET_NR_lseek                               15
-#define TARGET_NR_poll                                16
-#define TARGET_NR__llseek                             17
-#define TARGET_NR_epoll_wait                          18
-#define TARGET_NR_epoll_ctl                           19
-#define TARGET_NR_epoll_create                        20
-#define TARGET_NR_creat                               21
-#define TARGET_NR_truncate                            22
-#define TARGET_NR_ftruncate                           23
-#define TARGET_NR_readv                               24
-#define TARGET_NR_writev                              25
-#define TARGET_NR_fsync                               26
-#define TARGET_NR_fdatasync                           27
-#define TARGET_NR_truncate64                          28
-#define TARGET_NR_ftruncate64                         29
-#define TARGET_NR_pread64                             30
-#define TARGET_NR_pwrite64                            31
-
-#define TARGET_NR_link                                32
-#define TARGET_NR_rename                              33
-#define TARGET_NR_symlink                             34
-#define TARGET_NR_readlink                            35
-#define TARGET_NR_mknod                               36
-#define TARGET_NR_pipe                                37
-#define TARGET_NR_unlink                              38
-#define TARGET_NR_rmdir                               39
-
-#define TARGET_NR_mkdir                               40
-#define TARGET_NR_chdir                               41
-#define TARGET_NR_fchdir                              42
-#define TARGET_NR_getcwd                              43
-
-#define TARGET_NR_chmod                               44
-#define TARGET_NR_chown                               45
-#define TARGET_NR_stat                                46
-#define TARGET_NR_stat64                              47
-
-#define TARGET_NR_lchown                              48
-#define TARGET_NR_lstat                               49
-#define TARGET_NR_lstat64                             50
-#define TARGET_NR_available51                         51
-
-#define TARGET_NR_fchmod                              52
-#define TARGET_NR_fchown                              53
-#define TARGET_NR_fstat                               54
-#define TARGET_NR_fstat64                             55
-
-#define TARGET_NR_flock                               56
-#define TARGET_NR_access                              57
-#define TARGET_NR_umask                               58
-#define TARGET_NR_getdents                            59
-#define TARGET_NR_getdents64                          60
-#define TARGET_NR_fcntl64                             61
-#define TARGET_NR_fallocate                           62
-#define TARGET_NR_fadvise64_64                        63
-#define TARGET_NR_utime                               64     /* glibc 2.3.3 ?? */
-#define TARGET_NR_utimes                              65
-#define TARGET_NR_ioctl                               66
-#define TARGET_NR_fcntl                               67
-
-#define TARGET_NR_setxattr                            68
-#define TARGET_NR_getxattr                            69
-#define TARGET_NR_listxattr                           70
-#define TARGET_NR_removexattr                         71
-#define TARGET_NR_lsetxattr                           72
-#define TARGET_NR_lgetxattr                           73
-#define TARGET_NR_llistxattr                          74
-#define TARGET_NR_lremovexattr                        75
-#define TARGET_NR_fsetxattr                           76
-#define TARGET_NR_fgetxattr                           77
-#define TARGET_NR_flistxattr                          78
-#define TARGET_NR_fremovexattr                        79
-
-/* File Map / Shared Memory Operations */
-
-#define TARGET_NR_mmap2                               80
-#define TARGET_NR_munmap                              81
-#define TARGET_NR_mprotect                            82
-#define TARGET_NR_brk                                 83
-#define TARGET_NR_mlock                               84
-#define TARGET_NR_munlock                             85
-#define TARGET_NR_mlockall                            86
-#define TARGET_NR_munlockall                          87
-#define TARGET_NR_mremap                              88
-#define TARGET_NR_msync                               89
-#define TARGET_NR_mincore                             90
-#define TARGET_NR_madvise                             91
-#define TARGET_NR_shmget                              92
-#define TARGET_NR_shmat                               93
-#define TARGET_NR_shmctl                              94
-#define TARGET_NR_shmdt                               95
-
-/* Socket Operations */
-
-#define TARGET_NR_socket                              96
-#define TARGET_NR_setsockopt                          97
-#define TARGET_NR_getsockopt                          98
-#define TARGET_NR_shutdown                            99
-
-#define TARGET_NR_bind                               100
-#define TARGET_NR_connect                            101
-#define TARGET_NR_listen                             102
-#define TARGET_NR_accept                             103
-
-#define TARGET_NR_getsockname                        104
-#define TARGET_NR_getpeername                        105
-#define TARGET_NR_sendmsg                            106
-#define TARGET_NR_recvmsg                            107
-#define TARGET_NR_send                               108
-#define TARGET_NR_recv                               109
-#define TARGET_NR_sendto                             110
-#define TARGET_NR_recvfrom                           111
-
-#define TARGET_NR_socketpair                         112
-#define TARGET_NR_sendfile                           113
-#define TARGET_NR_sendfile64                         114
-#define TARGET_NR_sendmmsg                           115
-
-/* Process Operations */
-
-#define TARGET_NR_clone                              116
-#define TARGET_NR_execve                             117
-#define TARGET_NR_exit                               118
-#define TARGET_NR_exit_group                         119
-#define TARGET_NR_getpid                             120
-#define TARGET_NR_wait4                              121
-#define TARGET_NR_waitid                             122
-#define TARGET_NR_kill                               123
-#define TARGET_NR_tkill                              124
-#define TARGET_NR_tgkill                             125
-#define TARGET_NR_set_tid_address                    126
-#define TARGET_NR_gettid                             127
-#define TARGET_NR_setsid                             128
-#define TARGET_NR_getsid                             129
-#define TARGET_NR_prctl                              130
-#define TARGET_NR_personality                        131
-#define TARGET_NR_getpriority                        132
-#define TARGET_NR_setpriority                        133
-#define TARGET_NR_setitimer                          134
-#define TARGET_NR_getitimer                          135
-#define TARGET_NR_setuid                             136
-#define TARGET_NR_getuid                             137
-#define TARGET_NR_setgid                             138
-#define TARGET_NR_getgid                             139
-#define TARGET_NR_geteuid                            140
-#define TARGET_NR_getegid                            141
-#define TARGET_NR_setreuid                           142
-#define TARGET_NR_setregid                           143
-#define TARGET_NR_setresuid                          144
-#define TARGET_NR_getresuid                          145
-#define TARGET_NR_setresgid                          146
-#define TARGET_NR_getresgid                          147
-#define TARGET_NR_setpgid                            148
-#define TARGET_NR_getpgid                            149
-#define TARGET_NR_getppid                            150
-#define TARGET_NR_getpgrp                            151
-
-#define TARGET_NR_reserved152                        152     /* set_thread_area */
-#define TARGET_NR_reserved153                        153     /* get_thread_area */
-#define TARGET_NR_times                              154
-#define TARGET_NR_acct                               155
-#define TARGET_NR_sched_setaffinity                  156
-#define TARGET_NR_sched_getaffinity                  157
-#define TARGET_NR_capget                             158
-#define TARGET_NR_capset                             159
-#define TARGET_NR_ptrace                             160
-#define TARGET_NR_semtimedop                         161
-#define TARGET_NR_semget                             162
-#define TARGET_NR_semop                              163
-#define TARGET_NR_semctl                             164
-#define TARGET_NR_available165                       165
-#define TARGET_NR_msgget                             166
-#define TARGET_NR_msgsnd                             167
-#define TARGET_NR_msgrcv                             168
-#define TARGET_NR_msgctl                             169
-#define TARGET_NR_available170                       170
-
-/* File System */
-
-#define TARGET_NR_umount2                            171
-#define TARGET_NR_mount                              172
-#define TARGET_NR_swapon                             173
-#define TARGET_NR_chroot                             174
-#define TARGET_NR_pivot_root                         175
-#define TARGET_NR_umount                             176
-#define TARGET_NR_swapoff                            177
-#define TARGET_NR_sync                               178
-#define TARGET_NR_syncfs                             179
-#define TARGET_NR_setfsuid                           180
-#define TARGET_NR_setfsgid                           181
-#define TARGET_NR_sysfs                              182
-#define TARGET_NR_ustat                              183
-#define TARGET_NR_statfs                             184
-#define TARGET_NR_fstatfs                            185
-#define TARGET_NR_statfs64                           186
-#define TARGET_NR_fstatfs64                          187
-
-/* System */
-
-#define TARGET_NR_setrlimit                          188
-#define TARGET_NR_getrlimit                          189
-#define TARGET_NR_getrusage                          190
-#define TARGET_NR_futex                              191
-#define TARGET_NR_gettimeofday                       192
-#define TARGET_NR_settimeofday                       193
-#define TARGET_NR_adjtimex                           194
-#define TARGET_NR_nanosleep                          195
-#define TARGET_NR_getgroups                          196
-#define TARGET_NR_setgroups                          197
-#define TARGET_NR_sethostname                        198
-#define TARGET_NR_setdomainname                      199
-#define TARGET_NR_syslog                             200
-#define TARGET_NR_vhangup                            201
-#define TARGET_NR_uselib                             202
-#define TARGET_NR_reboot                             203
-#define TARGET_NR_quotactl                           204
-#define TARGET_NR_nfsservctl                         205
-#define TARGET_NR__sysctl                            206
-#define TARGET_NR_bdflush                            207
-#define TARGET_NR_uname                              208
-#define TARGET_NR_sysinfo                            209
-#define TARGET_NR_init_module                        210
-#define TARGET_NR_delete_module                      211
-
-#define TARGET_NR_sched_setparam                     212
-#define TARGET_NR_sched_getparam                     213
-#define TARGET_NR_sched_setscheduler                 214
-#define TARGET_NR_sched_getscheduler                 215
-#define TARGET_NR_sched_get_priority_max             216
-#define TARGET_NR_sched_get_priority_min             217
-#define TARGET_NR_sched_rr_get_interval              218
-#define TARGET_NR_sched_yield                        219
-#define TARGET_NR_available222                       222
-
-/* Signal Handling */
-
-#define TARGET_NR_restart_syscall                    223
-#define TARGET_NR_sigaltstack                        224
-#define TARGET_NR_rt_sigreturn                       225
-#define TARGET_NR_rt_sigaction                       226
-#define TARGET_NR_rt_sigprocmask                     227
-#define TARGET_NR_rt_sigpending                      228
-#define TARGET_NR_rt_sigtimedwait                    229
-#define TARGET_NR_rt_sigqueueinfo                    230
-#define TARGET_NR_rt_sigsuspend                      231
-
-/* Message */
-
-#define TARGET_NR_mq_open                            232
-#define TARGET_NR_mq_unlink                          233
-#define TARGET_NR_mq_timedsend                       234
-#define TARGET_NR_mq_timedreceive                    235
-#define TARGET_NR_mq_notify                          236
-#define TARGET_NR_mq_getsetattr                      237
-#define TARGET_NR_available238                       238
-
-/* IO */
-
-#define TARGET_NR_io_setup                           239
-#define TARGET_NR_io_destroy                         240
-#define TARGET_NR_io_submit                          241
-#define TARGET_NR_io_getevents                       242
-#define TARGET_NR_io_cancel                          243
-#define TARGET_NR_clock_settime                      244
-#define TARGET_NR_clock_gettime                      245
-#define TARGET_NR_clock_getres                       246
-#define TARGET_NR_clock_nanosleep                    247
-
-/* Timer */
-
-#define TARGET_NR_timer_create                       248
-#define TARGET_NR_timer_delete                       249
-#define TARGET_NR_timer_settime                      250
-#define TARGET_NR_timer_gettime                      251
-#define TARGET_NR_timer_getoverrun                   252
-
-/* System */
-
-#define TARGET_NR_reserved253                        253
-#define TARGET_NR_lookup_dcookie                     254
-#define TARGET_NR_available255                       255
-#define TARGET_NR_add_key                            256
-#define TARGET_NR_request_key                        257
-#define TARGET_NR_keyctl                             258
-#define TARGET_NR_available259                       259
-
-
-#define TARGET_NR_readahead                          260
-#define TARGET_NR_remap_file_pages                   261
-#define TARGET_NR_migrate_pages                      262
-#define TARGET_NR_mbind                              263
-#define TARGET_NR_get_mempolicy                      264
-#define TARGET_NR_set_mempolicy                      265
-#define TARGET_NR_unshare                            266
-#define TARGET_NR_move_pages                         267
-#define TARGET_NR_splice                             268
-#define TARGET_NR_tee                                269
-#define TARGET_NR_vmsplice                           270
-#define TARGET_NR_available271                       271
-
-#define TARGET_NR_pselect6                           272
-#define TARGET_NR_ppoll                              273
-#define TARGET_NR_epoll_pwait                        274
-#define TARGET_NR_epoll_create1                      275
-
-#define TARGET_NR_inotify_init                       276
-#define TARGET_NR_inotify_add_watch                  277
-#define TARGET_NR_inotify_rm_watch                   278
-#define TARGET_NR_inotify_init1                      279
-
-#define TARGET_NR_getcpu                             280
-#define TARGET_NR_kexec_load                         281
-
-#define TARGET_NR_ioprio_set                         282
-#define TARGET_NR_ioprio_get                         283
-
-#define TARGET_NR_set_robust_list                    284
-#define TARGET_NR_get_robust_list                    285
-#define TARGET_NR_available286                       286
-#define TARGET_NR_available287                       287
-
-/* Relative File Operations */
-
-#define TARGET_NR_openat                             288
-#define TARGET_NR_mkdirat                            289
-#define TARGET_NR_mknodat                            290
-#define TARGET_NR_unlinkat                           291
-#define TARGET_NR_renameat                           292
-#define TARGET_NR_linkat                             293
-#define TARGET_NR_symlinkat                          294
-#define TARGET_NR_readlinkat                         295
-#define TARGET_NR_utimensat                          296
-#define TARGET_NR_fchownat                           297
-#define TARGET_NR_futimesat                          298
-#define TARGET_NR_fstatat64                          299
-#define TARGET_NR_fchmodat                           300
-#define TARGET_NR_faccessat                          301
-#define TARGET_NR_available302                       302
-#define TARGET_NR_available303                       303
-
-#define TARGET_NR_signalfd                           304
-/*  305 was TARGET_NR_timerfd  */
-#define TARGET_NR_eventfd                            306
-#define TARGET_NR_recvmmsg                           307
-
-#define TARGET_NR_setns                              308
-#define TARGET_NR_signalfd4                          309
-#define TARGET_NR_dup3                               310
-#define TARGET_NR_pipe2                              311
-
-#define TARGET_NR_timerfd_create                     312
-#define TARGET_NR_timerfd_settime                    313
-#define TARGET_NR_timerfd_gettime                    314
-#define TARGET_NR_available315                       315
-
-#define TARGET_NR_eventfd2                           316
-#define TARGET_NR_preadv                             317
-#define TARGET_NR_pwritev                            318
-#define TARGET_NR_available319                       319
-
-#define TARGET_NR_fanotify_init                      320
-#define TARGET_NR_fanotify_mark                      321
-#define TARGET_NR_process_vm_readv                   322
-#define TARGET_NR_process_vm_writev                  323
-
-#define TARGET_NR_name_to_handle_at                  324
-#define TARGET_NR_open_by_handle_at                  325
-#define TARGET_NR_sync_file_range2                   326
-#define TARGET_NR_perf_event_open                    327
-
-#define TARGET_NR_rt_tgsigqueueinfo                  328
-#define TARGET_NR_clock_adjtime                      329
-#define TARGET_NR_prlimit64                          330
-#define TARGET_NR_kcmp                               331
-
-#define TARGET_NR_finit_module                       332
-
-#define TARGET_NR_accept4                            333
-
-#define TARGET_NR_sched_setattr                      334
-#define TARGET_NR_sched_getattr                      335
-
-#define TARGET_NR_renameat2                          336
-
-#define TARGET_NR_seccomp                            337
-#define TARGET_NR_getrandom                          338
-#define TARGET_NR_memfd_create                       339
-#define TARGET_NR_bpf                                340
-#define TARGET_NR_execveat                           341
-
-#define TARGET_NR_userfaultfd                        342
-#define TARGET_NR_membarrier                         343
-#define TARGET_NR_mlock2                             344
-#define TARGET_NR_copy_file_range                    345
-#define TARGET_NR_preadv2                            346
-#define TARGET_NR_pwritev2                           347
-
-#define TARGET_NR_pkey_mprotect                      348
-#define TARGET_NR_pkey_alloc                         349
-#define TARGET_NR_pkey_free                          350
-
-#define TARGET_NR_statx                              351
-#define TARGET_NR_rseq                               352
-/* 353 through 402 are unassigned to sync up with generic numbers */
-#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 /* XTENSA_SYSCALL_NR_H */
diff --git a/linux-user/xtensa/syscallhdr.sh b/linux-user/xtensa/syscallhdr.sh
new file mode 100644 (file)
index 0000000..eef0644
--- /dev/null
@@ -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_XTENSA_`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 */" "${fileguard}"
+) > "$out"
index 11a31094ff835eea773b2db8930a57c4d57af502..02b1ed080145b3f99979887d4268b4838caad43a 100644 (file)
@@ -1909,27 +1909,98 @@ static int coroutine_fn nbd_co_send_sparse_read(NBDClient *client,
     return ret;
 }
 
+typedef struct NBDExtentArray {
+    NBDExtent *extents;
+    unsigned int nb_alloc;
+    unsigned int count;
+    uint64_t total_length;
+    bool can_add;
+    bool converted_to_be;
+} NBDExtentArray;
+
+static NBDExtentArray *nbd_extent_array_new(unsigned int nb_alloc)
+{
+    NBDExtentArray *ea = g_new0(NBDExtentArray, 1);
+
+    ea->nb_alloc = nb_alloc;
+    ea->extents = g_new(NBDExtent, nb_alloc);
+    ea->can_add = true;
+
+    return ea;
+}
+
+static void nbd_extent_array_free(NBDExtentArray *ea)
+{
+    g_free(ea->extents);
+    g_free(ea);
+}
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(NBDExtentArray, nbd_extent_array_free);
+
+/* Further modifications of the array after conversion are abandoned */
+static void nbd_extent_array_convert_to_be(NBDExtentArray *ea)
+{
+    int i;
+
+    assert(!ea->converted_to_be);
+    ea->can_add = false;
+    ea->converted_to_be = true;
+
+    for (i = 0; i < ea->count; i++) {
+        ea->extents[i].flags = cpu_to_be32(ea->extents[i].flags);
+        ea->extents[i].length = cpu_to_be32(ea->extents[i].length);
+    }
+}
+
 /*
- * Populate @extents from block status. Update @bytes to be the actual
- * length encoded (which may be smaller than the original), and update
- * @nb_extents to the number of extents used.
- *
- * Returns zero on success and -errno on bdrv_block_status_above failure.
+ * Add extent to NBDExtentArray. If extent can't be added (no available space),
+ * return -1.
+ * For safety, when returning -1 for the first time, .can_add is set to false,
+ * further call to nbd_extent_array_add() will crash.
+ * (to avoid the situation, when after failing to add an extent (returned -1),
+ * user miss this failure and add another extent, which is successfully added
+ * (array is full, but new extent may be squashed into the last one), then we
+ * have invalid array with skipped extent)
  */
-static int blockstatus_to_extents(BlockDriverState *bs, uint64_t offset,
-                                  uint64_t *bytes, NBDExtent *extents,
-                                  unsigned int *nb_extents)
+static int nbd_extent_array_add(NBDExtentArray *ea,
+                                uint32_t length, uint32_t flags)
 {
-    uint64_t remaining_bytes = *bytes;
-    NBDExtent *extent = extents, *extents_end = extents + *nb_extents;
-    bool first_extent = true;
+    assert(ea->can_add);
+
+    if (!length) {
+        return 0;
+    }
+
+    /* Extend previous extent if flags are the same */
+    if (ea->count > 0 && flags == ea->extents[ea->count - 1].flags) {
+        uint64_t sum = (uint64_t)length + ea->extents[ea->count - 1].length;
+
+        if (sum <= UINT32_MAX) {
+            ea->extents[ea->count - 1].length = sum;
+            ea->total_length += length;
+            return 0;
+        }
+    }
 
-    assert(*nb_extents);
-    while (remaining_bytes) {
+    if (ea->count >= ea->nb_alloc) {
+        ea->can_add = false;
+        return -1;
+    }
+
+    ea->total_length += length;
+    ea->extents[ea->count] = (NBDExtent) {.length = length, .flags = flags};
+    ea->count++;
+
+    return 0;
+}
+
+static int blockstatus_to_extents(BlockDriverState *bs, uint64_t offset,
+                                  uint64_t bytes, NBDExtentArray *ea)
+{
+    while (bytes) {
         uint32_t flags;
         int64_t num;
-        int ret = bdrv_block_status_above(bs, NULL, offset, remaining_bytes,
-                                          &num, NULL, NULL);
+        int ret = bdrv_block_status_above(bs, NULL, offset, bytes, &num,
+                                          NULL, NULL);
 
         if (ret < 0) {
             return ret;
@@ -1938,60 +2009,37 @@ static int blockstatus_to_extents(BlockDriverState *bs, uint64_t offset,
         flags = (ret & BDRV_BLOCK_ALLOCATED ? 0 : NBD_STATE_HOLE) |
                 (ret & BDRV_BLOCK_ZERO      ? NBD_STATE_ZERO : 0);
 
-        if (first_extent) {
-            extent->flags = flags;
-            extent->length = num;
-            first_extent = false;
-        } else if (flags == extent->flags) {
-            /* extend current extent */
-            extent->length += num;
-        } else {
-            if (extent + 1 == extents_end) {
-                break;
-            }
-
-            /* start new extent */
-            extent++;
-            extent->flags = flags;
-            extent->length = num;
+        if (nbd_extent_array_add(ea, num, flags) < 0) {
+            return 0;
         }
-        offset += num;
-        remaining_bytes -= num;
-    }
 
-    extents_end = extent + 1;
-
-    for (extent = extents; extent < extents_end; extent++) {
-        extent->flags = cpu_to_be32(extent->flags);
-        extent->length = cpu_to_be32(extent->length);
+        offset += num;
+        bytes -= num;
     }
 
-    *bytes -= remaining_bytes;
-    *nb_extents = extents_end - extents;
-
     return 0;
 }
 
-/* nbd_co_send_extents
+/*
+ * nbd_co_send_extents
  *
- * @length is only for tracing purposes (and may be smaller or larger
- * than the client's original request). @last controls whether
- * NBD_REPLY_FLAG_DONE is sent. @extents should already be in
- * big-endian format.
+ * @ea is converted to BE by the function
+ * @last controls whether NBD_REPLY_FLAG_DONE is sent.
  */
 static int nbd_co_send_extents(NBDClient *client, uint64_t handle,
-                               NBDExtent *extents, unsigned int nb_extents,
-                               uint64_t length, bool last,
-                               uint32_t context_id, Error **errp)
+                               NBDExtentArray *ea,
+                               bool last, uint32_t context_id, Error **errp)
 {
     NBDStructuredMeta chunk;
-
     struct iovec iov[] = {
         {.iov_base = &chunk, .iov_len = sizeof(chunk)},
-        {.iov_base = extents, .iov_len = nb_extents * sizeof(extents[0])}
+        {.iov_base = ea->extents, .iov_len = ea->count * sizeof(ea->extents[0])}
     };
 
-    trace_nbd_co_send_extents(handle, nb_extents, context_id, length, last);
+    nbd_extent_array_convert_to_be(ea);
+
+    trace_nbd_co_send_extents(handle, ea->count, context_id, ea->total_length,
+                              last);
     set_be_chunk(&chunk.h, last ? NBD_REPLY_FLAG_DONE : 0,
                  NBD_REPLY_TYPE_BLOCK_STATUS,
                  handle, sizeof(chunk) - sizeof(chunk.h) + iov[1].iov_len);
@@ -2009,82 +2057,47 @@ static int nbd_co_send_block_status(NBDClient *client, uint64_t handle,
 {
     int ret;
     unsigned int nb_extents = dont_fragment ? 1 : NBD_MAX_BLOCK_STATUS_EXTENTS;
-    NBDExtent *extents = g_new(NBDExtent, nb_extents);
-    uint64_t final_length = length;
+    g_autoptr(NBDExtentArray) ea = nbd_extent_array_new(nb_extents);
 
-    ret = blockstatus_to_extents(bs, offset, &final_length, extents,
-                                 &nb_extents);
+    ret = blockstatus_to_extents(bs, offset, length, ea);
     if (ret < 0) {
-        g_free(extents);
         return nbd_co_send_structured_error(
                 client, handle, -ret, "can't get block status", errp);
     }
 
-    ret = nbd_co_send_extents(client, handle, extents, nb_extents,
-                              final_length, last, context_id, errp);
-
-    g_free(extents);
-
-    return ret;
+    return nbd_co_send_extents(client, handle, ea, last, context_id, errp);
 }
 
-/*
- * Populate @extents from a dirty bitmap. Unless @dont_fragment, the
- * final extent may exceed the original @length. Store in @length the
- * byte length encoded (which may be smaller or larger than the
- * original), and return the number of extents used.
- */
-static unsigned int bitmap_to_extents(BdrvDirtyBitmap *bitmap, uint64_t offset,
-                                      uint64_t *length, NBDExtent *extents,
-                                      unsigned int nb_extents,
-                                      bool dont_fragment)
+/* Populate @ea from a dirty bitmap. */
+static void bitmap_to_extents(BdrvDirtyBitmap *bitmap,
+                              uint64_t offset, uint64_t length,
+                              NBDExtentArray *es)
 {
-    uint64_t begin = offset, end = offset;
-    uint64_t overall_end = offset + *length;
-    unsigned int i = 0;
-    BdrvDirtyBitmapIter *it;
-    bool dirty;
+    int64_t start, dirty_start, dirty_count;
+    int64_t end = offset + length;
+    bool full = false;
 
     bdrv_dirty_bitmap_lock(bitmap);
 
-    it = bdrv_dirty_iter_new(bitmap);
-    dirty = bdrv_dirty_bitmap_get_locked(bitmap, offset);
-
-    assert(begin < overall_end && nb_extents);
-    while (begin < overall_end && i < nb_extents) {
-        bool next_dirty = !dirty;
-
-        if (dirty) {
-            end = bdrv_dirty_bitmap_next_zero(bitmap, begin, UINT64_MAX);
-        } else {
-            bdrv_set_dirty_iter(it, begin);
-            end = bdrv_dirty_iter_next(it);
-        }
-        if (end == -1 || end - begin > UINT32_MAX) {
-            /* Cap to an aligned value < 4G beyond begin. */
-            end = MIN(bdrv_dirty_bitmap_size(bitmap),
-                      begin + UINT32_MAX + 1 -
-                      bdrv_dirty_bitmap_granularity(bitmap));
-            next_dirty = dirty;
-        }
-        if (dont_fragment && end > overall_end) {
-            end = overall_end;
+    for (start = offset;
+         bdrv_dirty_bitmap_next_dirty_area(bitmap, start, end, INT32_MAX,
+                                           &dirty_start, &dirty_count);
+         start = dirty_start + dirty_count)
+    {
+        if ((nbd_extent_array_add(es, dirty_start - start, 0) < 0) ||
+            (nbd_extent_array_add(es, dirty_count, NBD_STATE_DIRTY) < 0))
+        {
+            full = true;
+            break;
         }
-
-        extents[i].length = cpu_to_be32(end - begin);
-        extents[i].flags = cpu_to_be32(dirty ? NBD_STATE_DIRTY : 0);
-        i++;
-        begin = end;
-        dirty = next_dirty;
     }
 
-    bdrv_dirty_iter_free(it);
+    if (!full) {
+        /* last non dirty extent */
+        nbd_extent_array_add(es, end - start, 0);
+    }
 
     bdrv_dirty_bitmap_unlock(bitmap);
-
-    assert(offset < end);
-    *length = end - offset;
-    return i;
 }
 
 static int nbd_co_send_bitmap(NBDClient *client, uint64_t handle,
@@ -2092,20 +2105,12 @@ static int nbd_co_send_bitmap(NBDClient *client, uint64_t handle,
                               uint32_t length, bool dont_fragment, bool last,
                               uint32_t context_id, Error **errp)
 {
-    int ret;
     unsigned int nb_extents = dont_fragment ? 1 : NBD_MAX_BLOCK_STATUS_EXTENTS;
-    NBDExtent *extents = g_new(NBDExtent, nb_extents);
-    uint64_t final_length = length;
-
-    nb_extents = bitmap_to_extents(bitmap, offset, &final_length, extents,
-                                   nb_extents, dont_fragment);
+    g_autoptr(NBDExtentArray) ea = nbd_extent_array_new(nb_extents);
 
-    ret = nbd_co_send_extents(client, handle, extents, nb_extents,
-                              final_length, last, context_id, errp);
+    bitmap_to_extents(bitmap, offset, length, ea);
 
-    g_free(extents);
-
-    return ret;
+    return nbd_co_send_extents(client, handle, ea, last, context_id, errp);
 }
 
 /* nbd_co_receive_request
index 183d8f3d3894b201c8c512e32a833fb6a2d4634a..b9a98e2c862767a3e639fbb359cf9fa9b7b2d221 100644 (file)
@@ -270,7 +270,8 @@ class QEMUMachine(object):
                 self._vm_monitor = os.path.join(self._sock_dir,
                                                 self._name + "-monitor.sock")
                 self._remove_files.append(self._vm_monitor)
-            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True)
+            self._qmp = qmp.QEMUMonitorProtocol(self._vm_monitor, server=True,
+                                                nickname=self._name)
 
     def _post_launch(self):
         if self._qmp:
@@ -358,6 +359,7 @@ class QEMUMachine(object):
                     if not has_quit:
                         self._qmp.cmd('quit')
                     self._qmp.close()
+                    self._popen.wait(timeout=3)
                 except:
                     self._popen.kill()
             self._popen.wait()
index f40586eedddc8b972cd4b4ad39b8a2421e347ccf..d6c9b2f4b12bfd08ff14e65d52671ddc849b9fb7 100644 (file)
@@ -46,7 +46,7 @@ class QEMUMonitorProtocol:
     #: Logger object for debugging messages
     logger = logging.getLogger('QMP')
 
-    def __init__(self, address, server=False):
+    def __init__(self, address, server=False, nickname=None):
         """
         Create a QEMUMonitorProtocol class.
 
@@ -62,6 +62,9 @@ class QEMUMonitorProtocol:
         self.__address = address
         self.__sock = self.__get_sock()
         self.__sockfile = None
+        self._nickname = nickname
+        if self._nickname:
+            self.logger = logging.getLogger('QMP').getChild(self._nickname)
         if server:
             self.__sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
             self.__sock.bind(self.__address)
index 0da3f3adc448674668ad148bc8cd3a69cff105be..ff7b5032e3aa66cca811905e6b14537035e3460a 100644 (file)
@@ -16,6 +16,8 @@
 # individual target constants are not documented here, for the time
 # being.
 #
+# @rx: since 5.0
+#
 # Notes: The resulting QMP strings can be appended to the "qemu-system-"
 #        prefix to produce the corresponding QEMU executable name. This
 #        is true even for "qemu-system-x86_64".
@@ -26,7 +28,7 @@
   'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
              'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
              'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
-             'ppc64', 'riscv32', 'riscv64', 's390x', 'sh4',
+             'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
              'sh4eb', 'sparc', 'sparc64', 'tricore', 'unicore32',
              'x86_64', 'xtensa', 'xtensaeb' ] }
 
diff --git a/scripts/coccinelle/cpu-reset.cocci b/scripts/coccinelle/cpu-reset.cocci
new file mode 100644 (file)
index 0000000..396a724
--- /dev/null
@@ -0,0 +1,47 @@
+// Convert targets using the old CPUState reset to DeviceState reset
+//
+// Copyright Linaro Ltd 2020
+// This work is licensed under the terms of the GNU GPLv2 or later.
+//
+// spatch --macro-file scripts/cocci-macro-file.h \
+//        --sp-file scripts/coccinelle/cpu-reset.cocci \
+//        --keep-comments --smpl-spacing --in-place --include-headers --dir target
+//
+// For simplicity we assume some things about the code we're modifying
+// that happen to be true for all our targets:
+//  * all cpu_class_set_parent_reset() callsites have a 'DeviceClass *dc' local
+//  * the parent reset field in the target CPU class is 'parent_reset'
+//  * no reset function already has a 'dev' local
+
+@@
+identifier cpu, x;
+typedef CPUState;
+@@
+struct x {
+...
+- void (*parent_reset)(CPUState *cpu);
++ DeviceReset parent_reset;
+...
+};
+@ rule1 @
+identifier resetfn;
+expression resetfield;
+identifier cc;
+@@
+- cpu_class_set_parent_reset(cc, resetfn, resetfield)
++ device_class_set_parent_reset(dc, resetfn, resetfield)
+@@
+identifier rule1.resetfn;
+identifier cpu, cc;
+typedef CPUState, DeviceState;
+@@
+-resetfn(CPUState *cpu)
+-{
++resetfn(DeviceState *dev)
++{
++    CPUState *cpu = CPU(dev);
+<...
+-    cc->parent_reset(cpu);
++    cc->parent_reset(dev);
+...>
+}
diff --git a/scripts/gensyscalls.sh b/scripts/gensyscalls.sh
new file mode 100755 (executable)
index 0000000..b7b8456
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# Update syscall_nr.h files from linux headers asm-generic/unistd.h
+#
+# This code is licensed under the GPL version 2 or later.  See
+# the COPYING file in the top-level directory.
+#
+
+linux="$1"
+output="$2"
+
+TMP=$(mktemp -d)
+
+if [ "$linux" = "" ] ; then
+    echo "Needs path to linux source tree" 1>&2
+    exit 1
+fi
+
+if [ "$output" = "" ] ; then
+    output="$PWD"
+fi
+
+upper()
+{
+    echo "$1" | tr "[:lower:]" "[:upper:]" | tr "[:punct:]" "_"
+}
+
+qemu_arch()
+{
+    case "$1" in
+    arm64)
+        echo "aarch64"
+        ;;
+    *)
+        echo "$1"
+        ;;
+    esac
+}
+
+read_includes()
+{
+    arch=$1
+    bits=$2
+
+     cpp -P -nostdinc -fdirectives-only \
+        -D_UAPI_ASM_$(upper ${arch})_BITSPERLONG_H \
+        -D__BITS_PER_LONG=${bits} \
+        -I${linux}/arch/${arch}/include/uapi/ \
+        -I${linux}/include/uapi \
+        -I${TMP} \
+        "${linux}/arch/${arch}/include/uapi/asm/unistd.h"
+}
+
+filter_defines()
+{
+    grep -e "#define __NR_" -e "#define __NR3264"
+}
+
+rename_defines()
+{
+    sed "s/ __NR_/ TARGET_NR_/g;s/(__NR_/(TARGET_NR_/g"
+}
+
+evaluate_values()
+{
+    sed "s/#define TARGET_NR_/QEMU TARGET_NR_/" | \
+    cpp -P -nostdinc | \
+    sed "s/^QEMU /#define /"
+}
+
+generate_syscall_nr()
+{
+    arch=$1
+    bits=$2
+    file="$3"
+    guard="$(upper LINUX_USER_$(qemu_arch $arch)_$(basename "$file"))"
+
+    (echo "/*"
+    echo " * This file contains the system call numbers."
+    echo " * Do not modify."
+    echo " * This file is generated by scripts/gensyscalls.sh"
+    echo " */"
+    echo "#ifndef ${guard}"
+    echo "#define ${guard}"
+    echo
+    read_includes $arch $bits | filter_defines | rename_defines | \
+                                evaluate_values | sort -n -k 3
+    echo
+    echo "#endif /* ${guard} */"
+    echo) > "$file"
+}
+
+mkdir "$TMP/asm"
+> "$TMP/asm/bitsperlong.h"
+
+generate_syscall_nr arm64 64 "$output/linux-user/aarch64/syscall_nr.h"
+generate_syscall_nr nios2 32 "$output/linux-user/nios2/syscall_nr.h"
+generate_syscall_nr openrisc 32 "$output/linux-user/openrisc/syscall_nr.h"
+
+generate_syscall_nr riscv 32 "$output/linux-user/riscv/syscall32_nr.h"
+generate_syscall_nr riscv 64 "$output/linux-user/riscv/syscall64_nr.h"
+rm -fr "$TMP"
diff --git a/scripts/simplebench/bench-example.py b/scripts/simplebench/bench-example.py
new file mode 100644 (file)
index 0000000..c642a5b
--- /dev/null
@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+#
+# Benchmark example
+#
+# Copyright (c) 2019 Virtuozzo International GmbH.
+#
+# 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, see <http://www.gnu.org/licenses/>.
+#
+
+import simplebench
+from bench_block_job import bench_block_copy, drv_file, drv_nbd
+
+
+def bench_func(env, case):
+    """ Handle one "cell" of benchmarking table. """
+    return bench_block_copy(env['qemu_binary'], env['cmd'],
+                            case['source'], case['target'])
+
+
+# You may set the following five variables to correct values, to turn this
+# example to real benchmark.
+ssd_source = '/path-to-raw-source-image-at-ssd'
+ssd_target = '/path-to-raw-target-image-at-ssd'
+hdd_target = '/path-to-raw-source-image-at-hdd'
+nbd_ip = 'nbd-ip-addr'
+nbd_port = 'nbd-port-number'
+
+# Test-cases are "rows" in benchmark resulting table, 'id' is a caption for
+# the row, other fields are handled by bench_func.
+test_cases = [
+    {
+        'id': 'ssd -> ssd',
+        'source': drv_file(ssd_source),
+        'target': drv_file(ssd_target)
+    },
+    {
+        'id': 'ssd -> hdd',
+        'source': drv_file(ssd_source),
+        'target': drv_file(hdd_target)
+    },
+    {
+        'id': 'ssd -> nbd',
+        'source': drv_file(ssd_source),
+        'target': drv_nbd(nbd_ip, nbd_port)
+    },
+]
+
+# Test-envs are "columns" in benchmark resulting table, 'id is a caption for
+# the column, other fields are handled by bench_func.
+test_envs = [
+    {
+        'id': 'backup-1',
+        'cmd': 'blockdev-backup',
+        'qemu_binary': '/path-to-qemu-binary-1'
+    },
+    {
+        'id': 'backup-2',
+        'cmd': 'blockdev-backup',
+        'qemu_binary': '/path-to-qemu-binary-2'
+    },
+    {
+        'id': 'mirror',
+        'cmd': 'blockdev-mirror',
+        'qemu_binary': '/path-to-qemu-binary-1'
+    }
+]
+
+result = simplebench.bench(bench_func, test_envs, test_cases, count=3)
+print(simplebench.ascii(result))
diff --git a/scripts/simplebench/bench_block_job.py b/scripts/simplebench/bench_block_job.py
new file mode 100755 (executable)
index 0000000..9808d69
--- /dev/null
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+#
+# Benchmark block jobs
+#
+# Copyright (c) 2019 Virtuozzo International GmbH.
+#
+# 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, see <http://www.gnu.org/licenses/>.
+#
+
+
+import sys
+import os
+import socket
+import json
+
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
+from qemu.machine import QEMUMachine
+from qemu.qmp import QMPConnectError
+
+
+def bench_block_job(cmd, cmd_args, qemu_args):
+    """Benchmark block-job
+
+    cmd       -- qmp command to run block-job (like blockdev-backup)
+    cmd_args  -- dict of qmp command arguments
+    qemu_args -- list of Qemu command line arguments, including path to Qemu
+                 binary
+
+    Returns {'seconds': int} on success and {'error': str} on failure, dict may
+    contain addional 'vm-log' field. Return value is compatible with
+    simplebench lib.
+    """
+
+    vm = QEMUMachine(qemu_args[0], args=qemu_args[1:])
+
+    try:
+        vm.launch()
+    except OSError as e:
+        return {'error': 'popen failed: ' + str(e)}
+    except (QMPConnectError, socket.timeout):
+        return {'error': 'qemu failed: ' + str(vm.get_log())}
+
+    try:
+        res = vm.qmp(cmd, **cmd_args)
+        if res != {'return': {}}:
+            vm.shutdown()
+            return {'error': '"{}" command failed: {}'.format(cmd, str(res))}
+
+        e = vm.event_wait('JOB_STATUS_CHANGE')
+        assert e['data']['status'] == 'created'
+        start_ms = e['timestamp']['seconds'] * 1000000 + \
+            e['timestamp']['microseconds']
+
+        e = vm.events_wait((('BLOCK_JOB_READY', None),
+                            ('BLOCK_JOB_COMPLETED', None),
+                            ('BLOCK_JOB_FAILED', None)), timeout=True)
+        if e['event'] not in ('BLOCK_JOB_READY', 'BLOCK_JOB_COMPLETED'):
+            vm.shutdown()
+            return {'error': 'block-job failed: ' + str(e),
+                    'vm-log': vm.get_log()}
+        end_ms = e['timestamp']['seconds'] * 1000000 + \
+            e['timestamp']['microseconds']
+    finally:
+        vm.shutdown()
+
+    return {'seconds': (end_ms - start_ms) / 1000000.0}
+
+
+# Bench backup or mirror
+def bench_block_copy(qemu_binary, cmd, source, target):
+    """Helper to run bench_block_job() for mirror or backup"""
+    assert cmd in ('blockdev-backup', 'blockdev-mirror')
+
+    source['node-name'] = 'source'
+    target['node-name'] = 'target'
+
+    return bench_block_job(cmd,
+                           {'job-id': 'job0', 'device': 'source',
+                            'target': 'target', 'sync': 'full'},
+                           [qemu_binary,
+                            '-blockdev', json.dumps(source),
+                            '-blockdev', json.dumps(target)])
+
+
+def drv_file(filename):
+    return {'driver': 'file', 'filename': filename,
+            'cache': {'direct': True}, 'aio': 'native'}
+
+
+def drv_nbd(host, port):
+    return {'driver': 'nbd',
+            'server': {'type': 'inet', 'host': host, 'port': port}}
+
+
+if __name__ == '__main__':
+    import sys
+
+    if len(sys.argv) < 4:
+        print('USAGE: {} <qmp block-job command name> '
+              '<json string of arguments for the command> '
+              '<qemu binary path and arguments>'.format(sys.argv[0]))
+        exit(1)
+
+    res = bench_block_job(sys.argv[1], json.loads(sys.argv[2]), sys.argv[3:])
+    if 'seconds' in res:
+        print('{:.2f}'.format(res['seconds']))
+    else:
+        print(res)
diff --git a/scripts/simplebench/simplebench.py b/scripts/simplebench/simplebench.py
new file mode 100644 (file)
index 0000000..59e7314
--- /dev/null
@@ -0,0 +1,128 @@
+#!/usr/bin/env python
+#
+# Simple benchmarking framework
+#
+# Copyright (c) 2019 Virtuozzo International GmbH.
+#
+# 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, see <http://www.gnu.org/licenses/>.
+#
+
+
+def bench_one(test_func, test_env, test_case, count=5, initial_run=True):
+    """Benchmark one test-case
+
+    test_func   -- benchmarking function with prototype
+                   test_func(env, case), which takes test_env and test_case
+                   arguments and returns {'seconds': int} (which is benchmark
+                   result) on success and {'error': str} on error. Returned
+                   dict may contain any other additional fields.
+    test_env    -- test environment - opaque first argument for test_func
+    test_case   -- test case - opaque second argument for test_func
+    count       -- how many times to call test_func, to calculate average
+    initial_run -- do initial run of test_func, which don't get into result
+
+    Returns dict with the following fields:
+        'runs':     list of test_func results
+        'average':  average seconds per run (exists only if at least one run
+                    succeeded)
+        'delta':    maximum delta between test_func result and the average
+                    (exists only if at least one run succeeded)
+        'n-failed': number of failed runs (exists only if at least one run
+                    failed)
+    """
+    if initial_run:
+        print('  #initial run:')
+        print('   ', test_func(test_env, test_case))
+
+    runs = []
+    for i in range(count):
+        print('  #run {}'.format(i+1))
+        res = test_func(test_env, test_case)
+        print('   ', res)
+        runs.append(res)
+
+    result = {'runs': runs}
+
+    successed = [r for r in runs if ('seconds' in r)]
+    if successed:
+        avg = sum(r['seconds'] for r in successed) / len(successed)
+        result['average'] = avg
+        result['delta'] = max(abs(r['seconds'] - avg) for r in successed)
+
+    if len(successed) < count:
+        result['n-failed'] = count - len(successed)
+
+    return result
+
+
+def ascii_one(result):
+    """Return ASCII representation of bench_one() returned dict."""
+    if 'average' in result:
+        s = '{:.2f} +- {:.2f}'.format(result['average'], result['delta'])
+        if 'n-failed' in result:
+            s += '\n({} failed)'.format(result['n-failed'])
+        return s
+    else:
+        return 'FAILED'
+
+
+def bench(test_func, test_envs, test_cases, *args, **vargs):
+    """Fill benchmark table
+
+    test_func -- benchmarking function, see bench_one for description
+    test_envs -- list of test environments, see bench_one
+    test_cases -- list of test cases, see bench_one
+    args, vargs -- additional arguments for bench_one
+
+    Returns dict with the following fields:
+        'envs':  test_envs
+        'cases': test_cases
+        'tab':   filled 2D array, where cell [i][j] is bench_one result for
+                 test_cases[i] for test_envs[j] (i.e., rows are test cases and
+                 columns are test environments)
+    """
+    tab = {}
+    results = {
+        'envs': test_envs,
+        'cases': test_cases,
+        'tab': tab
+    }
+    n = 1
+    n_tests = len(test_envs) * len(test_cases)
+    for env in test_envs:
+        for case in test_cases:
+            print('Testing {}/{}: {} :: {}'.format(n, n_tests,
+                                                   env['id'], case['id']))
+            if case['id'] not in tab:
+                tab[case['id']] = {}
+            tab[case['id']][env['id']] = bench_one(test_func, env, case,
+                                                   *args, **vargs)
+            n += 1
+
+    print('Done')
+    return results
+
+
+def ascii(results):
+    """Return ASCII representation of bench() returned dict."""
+    from tabulate import tabulate
+
+    tab = [[""] + [c['id'] for c in results['envs']]]
+    for case in results['cases']:
+        row = [case['id']]
+        for env in results['envs']:
+            row.append(ascii_one(results['tab'][case['id']][env['id']]))
+        tab.append(row)
+
+    return tabulate(tab)
diff --git a/scripts/update-mips-syscall-args.sh b/scripts/update-mips-syscall-args.sh
new file mode 100755 (executable)
index 0000000..4f0dda4
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+URL=https://raw.githubusercontent.com/strace/strace/master
+FILES="sysent.h sysent_shorthand_defs.h linux/mips/syscallent-compat.h \
+       linux/mips/syscallent-o32.h linux/syscallent-common-32.h \
+       linux/syscallent-common.h"
+
+output="$1"
+if [ "$output" = "" ] ; then
+    output="$PWD"
+fi
+
+INC=linux-user/mips/syscall-args-o32.c.inc
+
+TMP=$(mktemp -d)
+cd $TMP
+
+for file in $FILES; do
+    curl -O $URL/$file
+done
+
+> subcall32.h
+
+cat > gen_mips_o32.c <<EOF
+#include <stdio.h>
+
+#define LINUX_MIPSO32
+#define MAX_ARGS 7
+
+#include "sysent.h"
+#include "sysent_shorthand_defs.h"
+
+#define SEN(syscall_name) 0,0
+const struct_sysent sysent0[] = {
+#include  "syscallent-o32.h"
+};
+
+int main(void)
+{
+    int i;
+
+    for (i = 4000; i < sizeof(sysent0) / sizeof(struct_sysent); i++) {
+        if (sysent0[i].sys_name == NULL) {
+            printf("    [% 4d] = MIPS_SYSCALL_NUMBER_UNUSED,\n", i - 4000);
+        } else {
+            printf("    [% 4d] = %d, /* %s */\n", i - 4000,
+                   sysent0[i].nargs, sysent0[i].sys_name);
+        }
+    }
+
+    return 0;
+}
+EOF
+
+cc -o gen_mips_o32 gen_mips_o32.c && ./gen_mips_o32 > "$output/$INC"
+
+rm -fr "$TMP"
diff --git a/scripts/update-syscalltbl.sh b/scripts/update-syscalltbl.sh
new file mode 100755 (executable)
index 0000000..2d23e56
--- /dev/null
@@ -0,0 +1,49 @@
+TBL_LIST="\
+arch/alpha/kernel/syscalls/syscall.tbl,linux-user/alpha/syscall.tbl \
+arch/arm/tools/syscall.tbl,linux-user/arm/syscall.tbl \
+arch/m68k/kernel/syscalls/syscall.tbl,linux-user/m68k/syscall.tbl \
+arch/microblaze/kernel/syscalls/syscall.tbl,linux-user/microblaze/syscall.tbl \
+arch/mips/kernel/syscalls/syscall_n32.tbl,linux-user/mips64/syscall_n32.tbl \
+arch/mips/kernel/syscalls/syscall_n64.tbl,linux-user/mips64/syscall_n64.tbl \
+arch/mips/kernel/syscalls/syscall_o32.tbl,linux-user/mips/syscall_o32.tbl \
+arch/parisc/kernel/syscalls/syscall.tbl,linux-user/hppa/syscall.tbl \
+arch/powerpc/kernel/syscalls/syscall.tbl,linux-user/ppc/syscall.tbl \
+arch/s390/kernel/syscalls/syscall.tbl,linux-user/s390x/syscall.tbl \
+arch/sh/kernel/syscalls/syscall.tbl,linux-user/sh4/syscall.tbl \
+arch/sparc/kernel/syscalls/syscall.tbl,linux-user/sparc64/syscall.tbl \
+arch/sparc/kernel/syscalls/syscall.tbl,linux-user/sparc/syscall.tbl \
+arch/x86/entry/syscalls/syscall_32.tbl,linux-user/i386/syscall_32.tbl \
+arch/x86/entry/syscalls/syscall_64.tbl,linux-user/x86_64/syscall_64.tbl \
+arch/xtensa/kernel/syscalls/syscall.tbl,linux-user/xtensa/syscall.tbl\
+"
+
+linux="$1"
+output="$2"
+
+if [ -z "$linux" ] || ! [ -d "$linux" ]; then
+    cat << EOF
+usage: update-syscalltbl.sh LINUX_PATH [OUTPUT_PATH]
+
+LINUX_PATH      Linux kernel directory to obtain the syscall.tbl from
+OUTPUT_PATH     output directory, usually the qemu source tree (default: $PWD)
+EOF
+    exit 1
+fi
+
+if [ -z "$output" ]; then
+    output="$PWD"
+fi
+
+for entry in $TBL_LIST; do
+    OFS="$IFS"
+    IFS=,
+    set $entry
+    src=$1
+    dst=$2
+    IFS="$OFS"
+    if ! cp "$linux/$src" "$output/$dst" ; then
+        echo "Cannot copy $linux/$src to $output/$dst" 1>&2
+        exit 1
+    fi
+done
+
index 6a285925b37337437e406ee9523f9802834dde74..1d33a2834037e5b0329105a2e7f08c4ac8594a05 100644 (file)
@@ -3946,6 +3946,7 @@ void qemu_init(int argc, char **argv, char **envp)
     current_machine->smp.max_cpus = machine_class->default_cpus;
     current_machine->smp.cores = 1;
     current_machine->smp.threads = 1;
+    current_machine->smp.sockets = 1;
 
     machine_class->smp_parse(current_machine,
         qemu_opts_find(qemu_find_opts("smp-opts"), NULL));
index 6f0a0adb9efa9b87508fdbe1c6ab14b53cf99d9f..08832fa7672cdbf6607d06a2231b050ab17eacb1 100644 (file)
@@ -44,7 +44,7 @@ typedef struct AlphaCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } AlphaCPUClass;
 
 typedef struct AlphaCPU AlphaCPU;
index 3a9d31ea9dfd7620e03145c2597310163e65c582..d95568bf05238b9fc368cbac8c652abf36547ac0 100644 (file)
@@ -51,7 +51,7 @@ typedef struct ARMCPUClass {
 
     const ARMCPUInfo *info;
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } ARMCPUClass;
 
 typedef struct ARMCPU ARMCPU;
index 3a5d1379cf89b130516d22ab548cb6a63d2546c6..a79f233b17014c273e93eb3e73f9431217a0b4c0 100644 (file)
@@ -155,14 +155,14 @@ static void cp_reg_check_reset(gpointer key, gpointer value,  gpointer opaque)
     assert(oldvalue == newvalue);
 }
 
-/* CPUClass::reset() */
-static void arm_cpu_reset(CPUState *s)
+static void arm_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     ARMCPU *cpu = ARM_CPU(s);
     ARMCPUClass *acc = ARM_CPU_GET_CLASS(cpu);
     CPUARMState *env = &cpu->env;
 
-    acc->parent_reset(s);
+    acc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUARMState, end_reset_fields));
 
@@ -2786,7 +2786,7 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
                                     &acc->parent_realize);
 
     device_class_set_props(dc, arm_cpu_properties);
-    cpu_class_set_parent_reset(cc, arm_cpu_reset, &acc->parent_reset);
+    device_class_set_parent_reset(dc, arm_cpu_reset, &acc->parent_reset);
 
     cc->class_by_name = arm_cpu_class_by_name;
     cc->has_work = arm_cpu_has_work;
index 308c1f95bdf676b3e51ac9992d6ce9d4564fb027..f1de6041dcb17fab9237a0f07743a92e50ea91f3 100644 (file)
@@ -45,7 +45,7 @@ typedef struct CRISCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 
     uint32_t vr;
 } CRISCPUClass;
index 17c6712e2985abf565afbb46fd605b1c3f14e18c..cff6b9eabf6d2021837be440c171e7c2c5774e8d 100644 (file)
@@ -40,15 +40,15 @@ static bool cris_cpu_has_work(CPUState *cs)
     return cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_NMI);
 }
 
-/* CPUClass::reset() */
-static void cris_cpu_reset(CPUState *s)
+static void cris_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     CRISCPU *cpu = CRIS_CPU(s);
     CRISCPUClass *ccc = CRIS_CPU_GET_CLASS(cpu);
     CPUCRISState *env = &cpu->env;
     uint32_t vr;
 
-    ccc->parent_reset(s);
+    ccc->parent_reset(dev);
 
     vr = env->pregs[PR_VR];
     memset(env, 0, offsetof(CPUCRISState, end_reset_fields));
@@ -264,7 +264,7 @@ static void cris_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_parent_realize(dc, cris_cpu_realizefn,
                                     &ccc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, cris_cpu_reset, &ccc->parent_reset);
+    device_class_set_parent_reset(dc, cris_cpu_reset, &ccc->parent_reset);
 
     cc->class_by_name = cris_cpu_class_by_name;
     cc->has_work = cris_cpu_has_work;
index 6367dc4793916ad004ea959354be37632b0ca15c..b1f604549538fa0e64e01f50d7d02c09a42a52b7 100644 (file)
@@ -44,7 +44,7 @@ typedef struct HPPACPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } HPPACPUClass;
 
 typedef struct HPPACPU HPPACPU;
index 0efab2fc670f91c6a024c80a959dc37c16d29cb8..3e96f8d668efd735bbd89c249ed6099323f7ba97 100644 (file)
@@ -71,7 +71,7 @@ typedef struct X86CPUClass {
 
     DeviceRealize parent_realize;
     DeviceUnrealize parent_unrealize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } X86CPUClass;
 
 typedef struct X86CPU X86CPU;
index 92fafa2659141d6ce269520d5e554306b701a88c..34b511f078e5d33c9f3e621179a57112db9179ad 100644 (file)
@@ -1133,7 +1133,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
             "clzero", NULL, "xsaveerptr", NULL,
             NULL, NULL, NULL, NULL,
             NULL, "wbnoinvd", NULL, NULL,
-            "ibpb", NULL, NULL, NULL,
+            "ibpb", NULL, NULL, "amd-stibp",
             NULL, NULL, NULL, NULL,
             NULL, NULL, NULL, NULL,
             "amd-ssbd", "virt-ssbd", "amd-no-ssb", NULL,
@@ -1690,6 +1690,7 @@ typedef struct PropValue {
 typedef struct X86CPUVersionDefinition {
     X86CPUVersion version;
     const char *alias;
+    const char *note;
     PropValue *props;
 } X86CPUVersionDefinition;
 
@@ -1720,6 +1721,7 @@ struct X86CPUModel {
     X86CPUDefinition *cpudef;
     /* CPU model version */
     X86CPUVersion version;
+    const char *note;
     /*
      * If true, this is an alias CPU model.
      * This matters only for "-cpu help" and query-cpu-definitions
@@ -1796,6 +1798,56 @@ static CPUCaches epyc_cache_info = {
     },
 };
 
+static CPUCaches epyc_rome_cache_info = {
+    .l1d_cache = &(CPUCacheInfo) {
+        .type = DATA_CACHE,
+        .level = 1,
+        .size = 32 * KiB,
+        .line_size = 64,
+        .associativity = 8,
+        .partitions = 1,
+        .sets = 64,
+        .lines_per_tag = 1,
+        .self_init = 1,
+        .no_invd_sharing = true,
+    },
+    .l1i_cache = &(CPUCacheInfo) {
+        .type = INSTRUCTION_CACHE,
+        .level = 1,
+        .size = 32 * KiB,
+        .line_size = 64,
+        .associativity = 8,
+        .partitions = 1,
+        .sets = 64,
+        .lines_per_tag = 1,
+        .self_init = 1,
+        .no_invd_sharing = true,
+    },
+    .l2_cache = &(CPUCacheInfo) {
+        .type = UNIFIED_CACHE,
+        .level = 2,
+        .size = 512 * KiB,
+        .line_size = 64,
+        .associativity = 8,
+        .partitions = 1,
+        .sets = 1024,
+        .lines_per_tag = 1,
+    },
+    .l3_cache = &(CPUCacheInfo) {
+        .type = UNIFIED_CACHE,
+        .level = 3,
+        .size = 16 * MiB,
+        .line_size = 64,
+        .associativity = 16,
+        .partitions = 1,
+        .sets = 16384,
+        .lines_per_tag = 1,
+        .self_init = true,
+        .inclusive = true,
+        .complex_indexing = true,
+    },
+};
+
 /* The following VMX features are not supported by KVM and are left out in the
  * CPU definitions:
  *
@@ -3592,6 +3644,18 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_VMX_VMFUNC] = MSR_VMX_VMFUNC_EPT_SWITCHING,
         .xlevel = 0x80000008,
         .model_id = "Intel Atom Processor (Denverton)",
+        .versions = (X86CPUVersionDefinition[]) {
+            { .version = 1 },
+            {
+                .version = 2,
+                .props = (PropValue[]) {
+                    { "monitor", "off" },
+                    { "mpx", "off" },
+                    { /* end of list */ },
+                },
+            },
+            { /* end of list */ },
+        },
     },
     {
         .name = "Snowridge",
@@ -3928,10 +3992,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED |
             CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLFLUSHOPT |
             CPUID_7_0_EBX_SHA_NI,
-        /* Missing: XSAVES (not supported by some Linux versions,
-         * including v4.1 to v4.12).
-         * KVM doesn't yet expose any XSAVES state save component.
-         */
         .features[FEAT_XSAVE] =
             CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC |
             CPUID_XSAVE_XGETBV1,
@@ -3954,6 +4014,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
                     { /* end of list */ }
                 }
             },
+            {
+                .version = 3,
+                .props = (PropValue[]) {
+                    { "ibpb", "on" },
+                    { "perfctr-core", "on" },
+                    { "clzero", "on" },
+                    { "xsaveerptr", "on" },
+                    { "xsaves", "on" },
+                    { "model-id",
+                      "AMD EPYC Processor" },
+                    { /* end of list */ }
+                }
+            },
             { /* end of list */ }
         }
     },
@@ -4007,6 +4080,56 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .model_id = "Hygon Dhyana Processor",
         .cache_info = &epyc_cache_info,
     },
+    {
+        .name = "EPYC-Rome",
+        .level = 0xd,
+        .vendor = CPUID_VENDOR_AMD,
+        .family = 23,
+        .model = 49,
+        .stepping = 0,
+        .features[FEAT_1_EDX] =
+            CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH |
+            CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | CPUID_PGE |
+            CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | CPUID_MCE |
+            CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE |
+            CPUID_VME | CPUID_FP87,
+        .features[FEAT_1_ECX] =
+            CPUID_EXT_RDRAND | CPUID_EXT_F16C | CPUID_EXT_AVX |
+            CPUID_EXT_XSAVE | CPUID_EXT_AES |  CPUID_EXT_POPCNT |
+            CPUID_EXT_MOVBE | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
+            CPUID_EXT_CX16 | CPUID_EXT_FMA | CPUID_EXT_SSSE3 |
+            CPUID_EXT_MONITOR | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
+        .features[FEAT_8000_0001_EDX] =
+            CPUID_EXT2_LM | CPUID_EXT2_RDTSCP | CPUID_EXT2_PDPE1GB |
+            CPUID_EXT2_FFXSR | CPUID_EXT2_MMXEXT | CPUID_EXT2_NX |
+            CPUID_EXT2_SYSCALL,
+        .features[FEAT_8000_0001_ECX] =
+            CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH |
+            CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM |
+            CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM |
+            CPUID_EXT3_TOPOEXT | CPUID_EXT3_PERFCORE,
+        .features[FEAT_8000_0008_EBX] =
+            CPUID_8000_0008_EBX_CLZERO | CPUID_8000_0008_EBX_XSAVEERPTR |
+            CPUID_8000_0008_EBX_WBNOINVD | CPUID_8000_0008_EBX_IBPB |
+            CPUID_8000_0008_EBX_STIBP,
+        .features[FEAT_7_0_EBX] =
+            CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 |
+            CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED |
+            CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLFLUSHOPT |
+            CPUID_7_0_EBX_SHA_NI | CPUID_7_0_EBX_CLWB,
+        .features[FEAT_7_0_ECX] =
+            CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_RDPID,
+        .features[FEAT_XSAVE] =
+            CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC |
+            CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES,
+        .features[FEAT_6_EAX] =
+            CPUID_6_EAX_ARAT,
+        .features[FEAT_SVM] =
+            CPUID_SVM_NPT | CPUID_SVM_NRIPSAVE,
+        .xlevel = 0x8000001E,
+        .model_id = "AMD EPYC-Rome Processor",
+        .cache_info = &epyc_rome_cache_info,
+    },
 };
 
 /* KVM-specific features that are automatically added/removed
@@ -4849,6 +4972,7 @@ static void x86_cpu_list_entry(gpointer data, gpointer user_data)
     g_autofree char *name = x86_cpu_class_get_model_name(cc);
     g_autofree char *desc = g_strdup(cc->model_description);
     g_autofree char *alias_of = x86_cpu_class_get_alias_of(cc);
+    g_autofree char *model_id = x86_cpu_class_get_model_id(cc);
 
     if (!desc && alias_of) {
         if (cc->model && cc->model->version == CPU_VERSION_AUTO) {
@@ -4857,11 +4981,14 @@ static void x86_cpu_list_entry(gpointer data, gpointer user_data)
             desc = g_strdup_printf("(alias of %s)", alias_of);
         }
     }
+    if (!desc && cc->model && cc->model->note) {
+        desc = g_strdup_printf("%s [%s]", model_id, cc->model->note);
+    }
     if (!desc) {
-        desc = x86_cpu_class_get_model_id(cc);
+        desc = g_strdup_printf("%s", model_id);
     }
 
-    qemu_printf("x86 %-20s  %-48s\n", name, desc);
+    qemu_printf("x86 %-20s  %-58s\n", name, desc);
 }
 
 /* list available CPU models and flags */
@@ -5338,6 +5465,7 @@ static void x86_register_cpudef_types(X86CPUDefinition *def)
             x86_cpu_versioned_model_name(def, vdef->version);
         m->cpudef = def;
         m->version = vdef->version;
+        m->note = vdef->note;
         x86_register_cpu_model_type(name, m);
 
         if (vdef->alias) {
@@ -5369,6 +5497,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
     uint32_t die_offset;
     uint32_t limit;
     uint32_t signature[3];
+    X86CPUTopoInfo topo_info;
+
+    topo_info.dies_per_pkg = env->nr_dies;
+    topo_info.cores_per_die = cs->nr_cores;
+    topo_info.threads_per_core = cs->nr_threads;
 
     /* Calculate & apply limits for different index ranges */
     if (index >= 0xC0000000) {
@@ -5455,8 +5588,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
                                     eax, ebx, ecx, edx);
                 break;
             case 3: /* L3 cache info */
-                die_offset = apicid_die_offset(env->nr_dies,
-                                        cs->nr_cores, cs->nr_threads);
+                die_offset = apicid_die_offset(&topo_info);
                 if (cpu->enable_l3_cache) {
                     encode_cache_cpuid4(env->cache_info_cpuid4.l3_cache,
                                         (1 << die_offset), cs->nr_cores,
@@ -5547,14 +5679,12 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
 
         switch (count) {
         case 0:
-            *eax = apicid_core_offset(env->nr_dies,
-                                      cs->nr_cores, cs->nr_threads);
+            *eax = apicid_core_offset(&topo_info);
             *ebx = cs->nr_threads;
             *ecx |= CPUID_TOPOLOGY_LEVEL_SMT;
             break;
         case 1:
-            *eax = apicid_pkg_offset(env->nr_dies,
-                                     cs->nr_cores, cs->nr_threads);
+            *eax = apicid_pkg_offset(&topo_info);
             *ebx = cs->nr_cores * cs->nr_threads;
             *ecx |= CPUID_TOPOLOGY_LEVEL_CORE;
             break;
@@ -5578,20 +5708,17 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
         *edx = cpu->apic_id;
         switch (count) {
         case 0:
-            *eax = apicid_core_offset(env->nr_dies, cs->nr_cores,
-                                                    cs->nr_threads);
+            *eax = apicid_core_offset(&topo_info);
             *ebx = cs->nr_threads;
             *ecx |= CPUID_TOPOLOGY_LEVEL_SMT;
             break;
         case 1:
-            *eax = apicid_die_offset(env->nr_dies, cs->nr_cores,
-                                                   cs->nr_threads);
+            *eax = apicid_die_offset(&topo_info);
             *ebx = cs->nr_cores * cs->nr_threads;
             *ecx |= CPUID_TOPOLOGY_LEVEL_CORE;
             break;
         case 2:
-            *eax = apicid_pkg_offset(env->nr_dies, cs->nr_cores,
-                                                   cs->nr_threads);
+            *eax = apicid_pkg_offset(&topo_info);
             *ebx = env->nr_dies * cs->nr_cores * cs->nr_threads;
             *ecx |= CPUID_TOPOLOGY_LEVEL_DIE;
             break;
@@ -5855,9 +5982,9 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
     }
 }
 
-/* CPUClass::reset() */
-static void x86_cpu_reset(CPUState *s)
+static void x86_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     X86CPU *cpu = X86_CPU(s);
     X86CPUClass *xcc = X86_CPU_GET_CLASS(cpu);
     CPUX86State *env = &cpu->env;
@@ -5865,7 +5992,7 @@ static void x86_cpu_reset(CPUState *s)
     uint64_t xcr0;
     int i;
 
-    xcc->parent_reset(s);
+    xcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUX86State, end_reset_fields));
 
@@ -6830,6 +6957,7 @@ static void x86_cpu_initfn(Object *obj)
     FeatureWord w;
 
     env->nr_dies = 1;
+    env->nr_nodes = 1;
     cpu_set_cpustate_pointers(cpu);
 
     object_property_add(obj, "family", "int",
@@ -7169,7 +7297,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
                                       &xcc->parent_unrealize);
     device_class_set_props(dc, x86_cpu_properties);
 
-    cpu_class_set_parent_reset(cc, x86_cpu_reset, &xcc->parent_reset);
+    device_class_set_parent_reset(dc, x86_cpu_reset, &xcc->parent_reset);
     cc->reset_dump_flags = CPU_DUMP_FPU | CPU_DUMP_CCOP;
 
     cc->class_by_name = x86_cpu_class_by_name;
index c2d89315b920ef4dfdddd21ecc8200b8cef83a35..60d797d5941ff216306b2497e1e41f43b90b0cfb 100644 (file)
@@ -792,6 +792,8 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
 #define CPUID_8000_0008_EBX_WBNOINVD    (1U << 9)
 /* Indirect Branch Prediction Barrier */
 #define CPUID_8000_0008_EBX_IBPB        (1U << 12)
+/* Single Thread Indirect Branch Predictors */
+#define CPUID_8000_0008_EBX_STIBP       (1U << 15)
 
 #define CPUID_XSAVE_XSAVEOPT   (1U << 0)
 #define CPUID_XSAVE_XSAVEC     (1U << 1)
@@ -1607,6 +1609,7 @@ typedef struct CPUX86State {
     TPRAccess tpr_access_type;
 
     unsigned nr_dies;
+    unsigned nr_nodes;
 } CPUX86State;
 
 struct kvm_msrs;
index dc9ac9ac9f7bfdbdddc10b2c6c0ba95123fe327d..bdedb3759acfcc9515366f52a4483f4575dadb93 100644 (file)
@@ -44,7 +44,7 @@ typedef struct LM32CPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } LM32CPUClass;
 
 typedef struct LM32CPU LM32CPU;
index 687bf35e65885f5d5d5069da44e60a3c4fc15b56..c50ad5fa15a6aaae095358ea5e7cac43628c139e 100644 (file)
@@ -99,14 +99,14 @@ static bool lm32_cpu_has_work(CPUState *cs)
     return cs->interrupt_request & CPU_INTERRUPT_HARD;
 }
 
-/* CPUClass::reset() */
-static void lm32_cpu_reset(CPUState *s)
+static void lm32_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     LM32CPU *cpu = LM32_CPU(s);
     LM32CPUClass *lcc = LM32_CPU_GET_CLASS(cpu);
     CPULM32State *env = &cpu->env;
 
-    lcc->parent_reset(s);
+    lcc->parent_reset(dev);
 
     /* reset cpu state */
     memset(env, 0, offsetof(CPULM32State, end_reset_fields));
@@ -218,7 +218,7 @@ static void lm32_cpu_class_init(ObjectClass *oc, void *data)
 
     device_class_set_parent_realize(dc, lm32_cpu_realizefn,
                                     &lcc->parent_realize);
-    cpu_class_set_parent_reset(cc, lm32_cpu_reset, &lcc->parent_reset);
+    device_class_set_parent_reset(dc, lm32_cpu_reset, &lcc->parent_reset);
 
     cc->class_by_name = lm32_cpu_class_by_name;
     cc->has_work = lm32_cpu_has_work;
index b56da8a21374823534ff792a5bff14882a7fe030..88b11b60f1318ec4e3036c05d50ea93ef0d39cee 100644 (file)
@@ -44,7 +44,7 @@ typedef struct M68kCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } M68kCPUClass;
 
 typedef struct M68kCPU M68kCPU;
index f0653cda2ffc3be176720994958896c35488a172..9445fcd6df5422db8426f19c0f65eb861a8d9d21 100644 (file)
@@ -41,16 +41,16 @@ static void m68k_set_feature(CPUM68KState *env, int feature)
     env->features |= (1u << feature);
 }
 
-/* CPUClass::reset() */
-static void m68k_cpu_reset(CPUState *s)
+static void m68k_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     M68kCPU *cpu = M68K_CPU(s);
     M68kCPUClass *mcc = M68K_CPU_GET_CLASS(cpu);
     CPUM68KState *env = &cpu->env;
     floatx80 nan = floatx80_default_nan(NULL);
     int i;
 
-    mcc->parent_reset(s);
+    mcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUM68KState, end_reset_fields));
 #ifdef CONFIG_SOFTMMU
@@ -273,7 +273,7 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
 
     device_class_set_parent_realize(dc, m68k_cpu_realizefn,
                                     &mcc->parent_realize);
-    cpu_class_set_parent_reset(cc, m68k_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, m68k_cpu_reset, &mcc->parent_reset);
 
     cc->class_by_name = m68k_cpu_class_by_name;
     cc->has_work = m68k_cpu_has_work;
index 49b07cc697b9d1987e938a5d5ac9cf46d714980d..053ba44ee8c3f77a72231062e89237bb67a7dd95 100644 (file)
@@ -44,7 +44,7 @@ typedef struct MicroBlazeCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } MicroBlazeCPUClass;
 
 typedef struct MicroBlazeCPU MicroBlazeCPU;
index 8c90110e525866b903e840a446cbdb8bccc83d0c..a2c2f271dfa8181b31f6cedfaf34cc9fba7eacf2 100644 (file)
@@ -102,14 +102,14 @@ static void microblaze_cpu_set_irq(void *opaque, int irq, int level)
 }
 #endif
 
-/* CPUClass::reset() */
-static void mb_cpu_reset(CPUState *s)
+static void mb_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     MicroBlazeCPU *cpu = MICROBLAZE_CPU(s);
     MicroBlazeCPUClass *mcc = MICROBLAZE_CPU_GET_CLASS(cpu);
     CPUMBState *env = &cpu->env;
 
-    mcc->parent_reset(s);
+    mcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUMBState, end_reset_fields));
     env->res_addr = RES_ADDR_NONE;
@@ -292,7 +292,7 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
 
     device_class_set_parent_realize(dc, mb_cpu_realizefn,
                                     &mcc->parent_realize);
-    cpu_class_set_parent_reset(cc, mb_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, mb_cpu_reset, &mcc->parent_reset);
 
     cc->class_by_name = mb_cpu_class_by_name;
     cc->has_work = mb_cpu_has_work;
index a430c0fe4bbf60405a2f11feb0e0a32d0f6521bc..9d0df6c034b4f19eed2710da8ffcfa9ea83e8837 100644 (file)
@@ -48,7 +48,7 @@ typedef struct MIPSCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
     const struct mips_def_t *cpu_def;
 } MIPSCPUClass;
 
index 6cd6b9650baaa5973b14e75e1688c4cb75a216a4..e86cd065483b3beb87b3604e8b09f3601be94838 100644 (file)
@@ -96,14 +96,14 @@ static bool mips_cpu_has_work(CPUState *cs)
     return has_work;
 }
 
-/* CPUClass::reset() */
-static void mips_cpu_reset(CPUState *s)
+static void mips_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     MIPSCPU *cpu = MIPS_CPU(s);
     MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(cpu);
     CPUMIPSState *env = &cpu->env;
 
-    mcc->parent_reset(s);
+    mcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUMIPSState, end_reset_fields));
 
@@ -189,7 +189,7 @@ static void mips_cpu_class_init(ObjectClass *c, void *data)
 
     device_class_set_parent_realize(dc, mips_cpu_realizefn,
                                     &mcc->parent_realize);
-    cpu_class_set_parent_reset(cc, mips_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, mips_cpu_reset, &mcc->parent_reset);
 
     cc->class_by_name = mips_cpu_class_by_name;
     cc->has_work = mips_cpu_has_work;
index cf47bc709b546d397e95b34a1d936f39a8f74af3..6e0443ccb735270d2ffa637d09461ed1bbf79058 100644 (file)
@@ -35,13 +35,14 @@ static bool moxie_cpu_has_work(CPUState *cs)
     return cs->interrupt_request & CPU_INTERRUPT_HARD;
 }
 
-static void moxie_cpu_reset(CPUState *s)
+static void moxie_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     MoxieCPU *cpu = MOXIE_CPU(s);
     MoxieCPUClass *mcc = MOXIE_CPU_GET_CLASS(cpu);
     CPUMoxieState *env = &cpu->env;
 
-    mcc->parent_reset(s);
+    mcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUMoxieState, end_reset_fields));
     env->pc = 0x1000;
@@ -101,7 +102,7 @@ static void moxie_cpu_class_init(ObjectClass *oc, void *data)
 
     device_class_set_parent_realize(dc, moxie_cpu_realizefn,
                                     &mcc->parent_realize);
-    cpu_class_set_parent_reset(cc, moxie_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, moxie_cpu_reset, &mcc->parent_reset);
 
     cc->class_by_name = moxie_cpu_class_by_name;
 
index 01dca548e5d53cd0fba88168825d2b9951258e0f..455553b794a41c7c24fd13e528620b847d06bdcd 100644 (file)
@@ -69,7 +69,7 @@ typedef struct MoxieCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } MoxieCPUClass;
 
 /**
index 1856b7fcc7ade7d0b749fa9ec699bc0a844dc60e..8f7011fcb92244ed36a8fb1c9878ae71289f11f2 100644 (file)
@@ -39,9 +39,9 @@ static bool nios2_cpu_has_work(CPUState *cs)
     return cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_NMI);
 }
 
-/* CPUClass::reset() */
-static void nios2_cpu_reset(CPUState *cs)
+static void nios2_cpu_reset(DeviceState *dev)
 {
+    CPUState *cs = CPU(dev);
     Nios2CPU *cpu = NIOS2_CPU(cs);
     Nios2CPUClass *ncc = NIOS2_CPU_GET_CLASS(cpu);
     CPUNios2State *env = &cpu->env;
@@ -51,7 +51,7 @@ static void nios2_cpu_reset(CPUState *cs)
         log_cpu_state(cs, 0);
     }
 
-    ncc->parent_reset(cs);
+    ncc->parent_reset(dev);
 
     memset(env->regs, 0, sizeof(uint32_t) * NUM_CORE_REGS);
     env->regs[R_PC] = cpu->reset_addr;
@@ -188,7 +188,7 @@ static void nios2_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_parent_realize(dc, nios2_cpu_realizefn,
                                     &ncc->parent_realize);
     device_class_set_props(dc, nios2_properties);
-    cpu_class_set_parent_reset(cc, nios2_cpu_reset, &ncc->parent_reset);
+    device_class_set_parent_reset(dc, nios2_cpu_reset, &ncc->parent_reset);
 
     cc->class_by_name = nios2_cpu_class_by_name;
     cc->has_work = nios2_cpu_has_work;
index 78f633f97030fcde705889763116f70983b40946..4dddf9c3a108f99fd20b7e99d88fe6fe3c152e0c 100644 (file)
@@ -50,7 +50,7 @@ typedef struct Nios2CPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } Nios2CPUClass;
 
 #define TARGET_HAS_ICE 1
index 5cd04dafab696a127da07864a2f6749df1968c6b..5528c0918f42335e3db4b5aaf5e867a80ece144c 100644 (file)
@@ -41,13 +41,13 @@ static void openrisc_disas_set_info(CPUState *cpu, disassemble_info *info)
     info->print_insn = print_insn_or1k;
 }
 
-/* CPUClass::reset() */
-static void openrisc_cpu_reset(CPUState *s)
+static void openrisc_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     OpenRISCCPU *cpu = OPENRISC_CPU(s);
     OpenRISCCPUClass *occ = OPENRISC_CPU_GET_CLASS(cpu);
 
-    occ->parent_reset(s);
+    occ->parent_reset(dev);
 
     memset(&cpu->env, 0, offsetof(CPUOpenRISCState, end_reset_fields));
 
@@ -150,7 +150,7 @@ static void openrisc_cpu_class_init(ObjectClass *oc, void *data)
 
     device_class_set_parent_realize(dc, openrisc_cpu_realizefn,
                                     &occ->parent_realize);
-    cpu_class_set_parent_reset(cc, openrisc_cpu_reset, &occ->parent_reset);
+    device_class_set_parent_reset(dc, openrisc_cpu_reset, &occ->parent_reset);
 
     cc->class_by_name = openrisc_cpu_class_by_name;
     cc->has_work = openrisc_cpu_has_work;
index d9484b802f31d666a2a349942706b9dcd4ec44ea..f37a52e1530535b05033513bd74c38574d62033c 100644 (file)
@@ -48,7 +48,7 @@ typedef struct OpenRISCCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } OpenRISCCPUClass;
 
 #define TARGET_INSN_START_EXTRA_WORDS 1
index 15d6b54a7dc952a8ab4cdd9c72d6bc6b408b51bd..000c7d405b70abf4353b6a1b7625a271e8845c6e 100644 (file)
@@ -166,7 +166,7 @@ typedef struct PowerPCCPUClass {
 
     DeviceRealize parent_realize;
     DeviceUnrealize parent_unrealize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
     void (*parent_parse_features)(const char *type, char *str, Error **errp);
 
     uint32_t pvr;
index 997c8b0b4b073a3de8eabeabc6400c04abeca782..e853164a8652593f4f67683f8ed9222e30b5c6fa 100644 (file)
@@ -10663,16 +10663,16 @@ static bool ppc_cpu_has_work(CPUState *cs)
     return msr_ee && (cs->interrupt_request & CPU_INTERRUPT_HARD);
 }
 
-/* CPUClass::reset() */
-static void ppc_cpu_reset(CPUState *s)
+static void ppc_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     PowerPCCPU *cpu = POWERPC_CPU(s);
     PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
     CPUPPCState *env = &cpu->env;
     target_ulong msr;
     int i;
 
-    pcc->parent_reset(s);
+    pcc->parent_reset(dev);
 
     msr = (target_ulong)0;
     msr |= (target_ulong)MSR_HVB;
@@ -10879,7 +10879,7 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
     pcc->interrupts_big_endian = ppc_cpu_interrupts_big_endian_always;
     device_class_set_props(dc, ppc_cpu_properties);
 
-    cpu_class_set_parent_reset(cc, ppc_cpu_reset, &pcc->parent_reset);
+    device_class_set_parent_reset(dc, ppc_cpu_reset, &pcc->parent_reset);
 
     cc->class_by_name = ppc_cpu_class_by_name;
     pcc->parent_parse_features = cc->parse_features;
index c0b70231004cae0915df71f48e180dd7c28ed691..4e578239d3ccd24be87525d93d81f6bb1a4195b4 100644 (file)
@@ -330,13 +330,14 @@ void restore_state_to_opc(CPURISCVState *env, TranslationBlock *tb,
     env->pc = data[0];
 }
 
-static void riscv_cpu_reset(CPUState *cs)
+static void riscv_cpu_reset(DeviceState *dev)
 {
+    CPUState *cs = CPU(dev);
     RISCVCPU *cpu = RISCV_CPU(cs);
     RISCVCPUClass *mcc = RISCV_CPU_GET_CLASS(cpu);
     CPURISCVState *env = &cpu->env;
 
-    mcc->parent_reset(cs);
+    mcc->parent_reset(dev);
 #ifndef CONFIG_USER_ONLY
     env->priv = PRV_M;
     env->mstatus &= ~(MSTATUS_MIE | MSTATUS_MPRV);
@@ -511,7 +512,7 @@ static void riscv_cpu_class_init(ObjectClass *c, void *data)
     device_class_set_parent_realize(dc, riscv_cpu_realize,
                                     &mcc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, riscv_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, riscv_cpu_reset, &mcc->parent_reset);
 
     cc->class_by_name = riscv_cpu_class_by_name;
     cc->has_work = riscv_cpu_has_work;
index 31458c5b4a78d1144c81441d962d102aa3ccac7d..7d21addbabd892816dceddcb8b4040d2ca0c46cf 100644 (file)
@@ -234,7 +234,7 @@ typedef struct RISCVCPUClass {
     CPUClass parent_class;
     /*< public >*/
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } RISCVCPUClass;
 
 /**
diff --git a/target/rx/Makefile.objs b/target/rx/Makefile.objs
new file mode 100644 (file)
index 0000000..a0018d5
--- /dev/null
@@ -0,0 +1,11 @@
+obj-y += translate.o op_helper.o helper.o cpu.o gdbstub.o disas.o
+
+DECODETREE = $(SRC_PATH)/scripts/decodetree.py
+
+target/rx/decode.inc.c: \
+  $(SRC_PATH)/target/rx/insns.decode $(DECODETREE)
+       $(call quiet-command,\
+         $(PYTHON) $(DECODETREE) --varinsnwidth 32 -o $@ $<, "GEN", $(TARGET_DIR)$@)
+
+target/rx/translate.o: target/rx/decode.inc.c
+target/rx/disas.o: target/rx/decode.inc.c
diff --git a/target/rx/cpu-param.h b/target/rx/cpu-param.h
new file mode 100644 (file)
index 0000000..b156ad1
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *  RX cpu parameters
+ *
+ *  Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RX_CPU_PARAM_H
+#define RX_CPU_PARAM_H
+
+#define TARGET_LONG_BITS 32
+#define TARGET_PAGE_BITS 12
+
+#define TARGET_PHYS_ADDR_SPACE_BITS 32
+#define TARGET_VIRT_ADDR_SPACE_BITS 32
+
+#define NB_MMU_MODES 1
+
+#endif
diff --git a/target/rx/cpu-qom.h b/target/rx/cpu-qom.h
new file mode 100644 (file)
index 0000000..3e81856
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * RX CPU
+ *
+ * Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RX_CPU_QOM_H
+#define RX_CPU_QOM_H
+
+#include "hw/core/cpu.h"
+
+#define TYPE_RX_CPU "rx-cpu"
+
+#define TYPE_RX62N_CPU RX_CPU_TYPE_NAME("rx62n")
+
+#define RXCPU_CLASS(klass) \
+    OBJECT_CLASS_CHECK(RXCPUClass, (klass), TYPE_RX_CPU)
+#define RXCPU(obj) \
+    OBJECT_CHECK(RXCPU, (obj), TYPE_RX_CPU)
+#define RXCPU_GET_CLASS(obj) \
+    OBJECT_GET_CLASS(RXCPUClass, (obj), TYPE_RX_CPU)
+
+/*
+ * RXCPUClass:
+ * @parent_realize: The parent class' realize handler.
+ * @parent_reset: The parent class' reset handler.
+ *
+ * A RX CPU model.
+ */
+typedef struct RXCPUClass {
+    /*< private >*/
+    CPUClass parent_class;
+    /*< public >*/
+
+    DeviceRealize parent_realize;
+    DeviceReset parent_reset;
+} RXCPUClass;
+
+#define CPUArchState struct CPURXState
+
+#endif
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
new file mode 100644 (file)
index 0000000..219e053
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * QEMU RX CPU
+ *
+ * Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/qemu-print.h"
+#include "qapi/error.h"
+#include "cpu.h"
+#include "qemu-common.h"
+#include "migration/vmstate.h"
+#include "exec/exec-all.h"
+#include "hw/loader.h"
+#include "fpu/softfloat.h"
+
+static void rx_cpu_set_pc(CPUState *cs, vaddr value)
+{
+    RXCPU *cpu = RXCPU(cs);
+
+    cpu->env.pc = value;
+}
+
+static void rx_cpu_synchronize_from_tb(CPUState *cs, TranslationBlock *tb)
+{
+    RXCPU *cpu = RXCPU(cs);
+
+    cpu->env.pc = tb->pc;
+}
+
+static bool rx_cpu_has_work(CPUState *cs)
+{
+    return cs->interrupt_request &
+        (CPU_INTERRUPT_HARD | CPU_INTERRUPT_FIR);
+}
+
+static void rx_cpu_reset(DeviceState *dev)
+{
+    RXCPU *cpu = RXCPU(dev);
+    RXCPUClass *rcc = RXCPU_GET_CLASS(cpu);
+    CPURXState *env = &cpu->env;
+    uint32_t *resetvec;
+
+    rcc->parent_reset(dev);
+
+    memset(env, 0, offsetof(CPURXState, end_reset_fields));
+
+    resetvec = rom_ptr(0xfffffffc, 4);
+    if (resetvec) {
+        /* In the case of kernel, it is ignored because it is not set. */
+        env->pc = ldl_p(resetvec);
+    }
+    rx_cpu_unpack_psw(env, 0, 1);
+    env->regs[0] = env->isp = env->usp = 0;
+    env->fpsw = 0;
+    set_flush_to_zero(1, &env->fp_status);
+    set_flush_inputs_to_zero(1, &env->fp_status);
+}
+
+static void rx_cpu_list_entry(gpointer data, gpointer user_data)
+{
+    ObjectClass *oc = data;
+
+    qemu_printf("  %s\n", object_class_get_name(oc));
+}
+
+void rx_cpu_list(void)
+{
+    GSList *list;
+    list = object_class_get_list_sorted(TYPE_RX_CPU, false);
+    qemu_printf("Available CPUs:\n");
+    g_slist_foreach(list, rx_cpu_list_entry, NULL);
+    g_slist_free(list);
+}
+
+static ObjectClass *rx_cpu_class_by_name(const char *cpu_model)
+{
+    ObjectClass *oc;
+    char *typename;
+
+    oc = object_class_by_name(cpu_model);
+    if (oc != NULL && object_class_dynamic_cast(oc, TYPE_RX_CPU) != NULL &&
+        !object_class_is_abstract(oc)) {
+        return oc;
+    }
+    typename = g_strdup_printf(RX_CPU_TYPE_NAME("%s"), cpu_model);
+    oc = object_class_by_name(typename);
+    g_free(typename);
+    if (oc != NULL && object_class_is_abstract(oc)) {
+        oc = NULL;
+    }
+
+    return oc;
+}
+
+static void rx_cpu_realize(DeviceState *dev, Error **errp)
+{
+    CPUState *cs = CPU(dev);
+    RXCPUClass *rcc = RXCPU_GET_CLASS(dev);
+    Error *local_err = NULL;
+
+    cpu_exec_realizefn(cs, &local_err);
+    if (local_err != NULL) {
+        error_propagate(errp, local_err);
+        return;
+    }
+
+    qemu_init_vcpu(cs);
+    cpu_reset(cs);
+
+    rcc->parent_realize(dev, errp);
+}
+
+static void rx_cpu_set_irq(void *opaque, int no, int request)
+{
+    RXCPU *cpu = opaque;
+    CPUState *cs = CPU(cpu);
+    int irq = request & 0xff;
+
+    static const int mask[] = {
+        [RX_CPU_IRQ] = CPU_INTERRUPT_HARD,
+        [RX_CPU_FIR] = CPU_INTERRUPT_FIR,
+    };
+    if (irq) {
+        cpu->env.req_irq = irq;
+        cpu->env.req_ipl = (request >> 8) & 0x0f;
+        cpu_interrupt(cs, mask[no]);
+    } else {
+        cpu_reset_interrupt(cs, mask[no]);
+    }
+}
+
+static void rx_cpu_disas_set_info(CPUState *cpu, disassemble_info *info)
+{
+    info->mach = bfd_mach_rx;
+    info->print_insn = print_insn_rx;
+}
+
+static bool rx_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
+                            MMUAccessType access_type, int mmu_idx,
+                            bool probe, uintptr_t retaddr)
+{
+    uint32_t address, physical, prot;
+
+    /* Linear mapping */
+    address = physical = addr & TARGET_PAGE_MASK;
+    prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
+    tlb_set_page(cs, address, physical, prot, mmu_idx, TARGET_PAGE_SIZE);
+    return true;
+}
+
+static void rx_cpu_init(Object *obj)
+{
+    CPUState *cs = CPU(obj);
+    RXCPU *cpu = RXCPU(obj);
+    CPURXState *env = &cpu->env;
+
+    cpu_set_cpustate_pointers(cpu);
+    cs->env_ptr = env;
+    qdev_init_gpio_in(DEVICE(cpu), rx_cpu_set_irq, 2);
+}
+
+static void rx_cpu_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    CPUClass *cc = CPU_CLASS(klass);
+    RXCPUClass *rcc = RXCPU_CLASS(klass);
+
+    device_class_set_parent_realize(dc, rx_cpu_realize,
+                                    &rcc->parent_realize);
+    device_class_set_parent_reset(dc, rx_cpu_reset,
+                                  &rcc->parent_reset);
+
+    cc->class_by_name = rx_cpu_class_by_name;
+    cc->has_work = rx_cpu_has_work;
+    cc->do_interrupt = rx_cpu_do_interrupt;
+    cc->cpu_exec_interrupt = rx_cpu_exec_interrupt;
+    cc->dump_state = rx_cpu_dump_state;
+    cc->set_pc = rx_cpu_set_pc;
+    cc->synchronize_from_tb = rx_cpu_synchronize_from_tb;
+    cc->gdb_read_register = rx_cpu_gdb_read_register;
+    cc->gdb_write_register = rx_cpu_gdb_write_register;
+    cc->get_phys_page_debug = rx_cpu_get_phys_page_debug;
+    cc->disas_set_info = rx_cpu_disas_set_info;
+    cc->tcg_initialize = rx_translate_init;
+    cc->tlb_fill = rx_cpu_tlb_fill;
+
+    cc->gdb_num_core_regs = 26;
+    cc->gdb_core_xml_file = "rx-core.xml";
+}
+
+static const TypeInfo rx_cpu_info = {
+    .name = TYPE_RX_CPU,
+    .parent = TYPE_CPU,
+    .instance_size = sizeof(RXCPU),
+    .instance_init = rx_cpu_init,
+    .abstract = true,
+    .class_size = sizeof(RXCPUClass),
+    .class_init = rx_cpu_class_init,
+};
+
+static const TypeInfo rx62n_rx_cpu_info = {
+    .name = TYPE_RX62N_CPU,
+    .parent = TYPE_RX_CPU,
+};
+
+static void rx_cpu_register_types(void)
+{
+    type_register_static(&rx_cpu_info);
+    type_register_static(&rx62n_rx_cpu_info);
+}
+
+type_init(rx_cpu_register_types)
diff --git a/target/rx/cpu.h b/target/rx/cpu.h
new file mode 100644 (file)
index 0000000..d1fb1ef
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ *  RX emulation definition
+ *
+ *  Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RX_CPU_H
+#define RX_CPU_H
+
+#include "qemu/bitops.h"
+#include "qemu-common.h"
+#include "hw/registerfields.h"
+#include "cpu-qom.h"
+
+#include "exec/cpu-defs.h"
+
+/* PSW define */
+REG32(PSW, 0)
+FIELD(PSW, C, 0, 1)
+FIELD(PSW, Z, 1, 1)
+FIELD(PSW, S, 2, 1)
+FIELD(PSW, O, 3, 1)
+FIELD(PSW, I, 16, 1)
+FIELD(PSW, U, 17, 1)
+FIELD(PSW, PM, 20, 1)
+FIELD(PSW, IPL, 24, 4)
+
+/* FPSW define */
+REG32(FPSW, 0)
+FIELD(FPSW, RM, 0, 2)
+FIELD(FPSW, CV, 2, 1)
+FIELD(FPSW, CO, 3, 1)
+FIELD(FPSW, CZ, 4, 1)
+FIELD(FPSW, CU, 5, 1)
+FIELD(FPSW, CX, 6, 1)
+FIELD(FPSW, CE, 7, 1)
+FIELD(FPSW, CAUSE, 2, 6)
+FIELD(FPSW, DN, 8, 1)
+FIELD(FPSW, EV, 10, 1)
+FIELD(FPSW, EO, 11, 1)
+FIELD(FPSW, EZ, 12, 1)
+FIELD(FPSW, EU, 13, 1)
+FIELD(FPSW, EX, 14, 1)
+FIELD(FPSW, ENABLE, 10, 5)
+FIELD(FPSW, FV, 26, 1)
+FIELD(FPSW, FO, 27, 1)
+FIELD(FPSW, FZ, 28, 1)
+FIELD(FPSW, FU, 29, 1)
+FIELD(FPSW, FX, 30, 1)
+FIELD(FPSW, FLAGS, 26, 4)
+FIELD(FPSW, FS, 31, 1)
+
+enum {
+    NUM_REGS = 16,
+};
+
+typedef struct CPURXState {
+    /* CPU registers */
+    uint32_t regs[NUM_REGS];    /* general registers */
+    uint32_t psw_o;             /* O bit of status register */
+    uint32_t psw_s;             /* S bit of status register */
+    uint32_t psw_z;             /* Z bit of status register */
+    uint32_t psw_c;             /* C bit of status register */
+    uint32_t psw_u;
+    uint32_t psw_i;
+    uint32_t psw_pm;
+    uint32_t psw_ipl;
+    uint32_t bpsw;              /* backup status */
+    uint32_t bpc;               /* backup pc */
+    uint32_t isp;               /* global base register */
+    uint32_t usp;               /* vector base register */
+    uint32_t pc;                /* program counter */
+    uint32_t intb;              /* interrupt vector */
+    uint32_t fintv;
+    uint32_t fpsw;
+    uint64_t acc;
+
+    /* Fields up to this point are cleared by a CPU reset */
+    struct {} end_reset_fields;
+
+    /* Internal use */
+    uint32_t in_sleep;
+    uint32_t req_irq;           /* Requested interrupt no (hard) */
+    uint32_t req_ipl;           /* Requested interrupt level */
+    uint32_t ack_irq;           /* execute irq */
+    uint32_t ack_ipl;           /* execute ipl */
+    float_status fp_status;
+    qemu_irq ack;               /* Interrupt acknowledge */
+} CPURXState;
+
+/*
+ * RXCPU:
+ * @env: #CPURXState
+ *
+ * A RX CPU
+ */
+struct RXCPU {
+    /*< private >*/
+    CPUState parent_obj;
+    /*< public >*/
+
+    CPUNegativeOffsetState neg;
+    CPURXState env;
+};
+
+typedef struct RXCPU RXCPU;
+typedef RXCPU ArchCPU;
+
+#define ENV_OFFSET offsetof(RXCPU, env)
+
+#define RX_CPU_TYPE_SUFFIX "-" TYPE_RX_CPU
+#define RX_CPU_TYPE_NAME(model) model RX_CPU_TYPE_SUFFIX
+#define CPU_RESOLVING_TYPE TYPE_RX_CPU
+
+const char *rx_crname(uint8_t cr);
+void rx_cpu_do_interrupt(CPUState *cpu);
+bool rx_cpu_exec_interrupt(CPUState *cpu, int int_req);
+void rx_cpu_dump_state(CPUState *cpu, FILE *f, int flags);
+int rx_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
+int rx_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
+hwaddr rx_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
+
+void rx_translate_init(void);
+int cpu_rx_signal_handler(int host_signum, void *pinfo,
+                           void *puc);
+
+void rx_cpu_list(void);
+void rx_cpu_unpack_psw(CPURXState *env, uint32_t psw, int rte);
+
+#define cpu_signal_handler cpu_rx_signal_handler
+#define cpu_list rx_cpu_list
+
+#include "exec/cpu-all.h"
+
+#define CPU_INTERRUPT_SOFT CPU_INTERRUPT_TGT_INT_0
+#define CPU_INTERRUPT_FIR  CPU_INTERRUPT_TGT_INT_1
+
+#define RX_CPU_IRQ 0
+#define RX_CPU_FIR 1
+
+static inline void cpu_get_tb_cpu_state(CPURXState *env, target_ulong *pc,
+                                        target_ulong *cs_base, uint32_t *flags)
+{
+    *pc = env->pc;
+    *cs_base = 0;
+    *flags = FIELD_DP32(0, PSW, PM, env->psw_pm);
+}
+
+static inline int cpu_mmu_index(CPURXState *env, bool ifetch)
+{
+    return 0;
+}
+
+static inline uint32_t rx_cpu_pack_psw(CPURXState *env)
+{
+    uint32_t psw = 0;
+    psw = FIELD_DP32(psw, PSW, IPL, env->psw_ipl);
+    psw = FIELD_DP32(psw, PSW, PM,  env->psw_pm);
+    psw = FIELD_DP32(psw, PSW, U,   env->psw_u);
+    psw = FIELD_DP32(psw, PSW, I,   env->psw_i);
+    psw = FIELD_DP32(psw, PSW, O,   env->psw_o >> 31);
+    psw = FIELD_DP32(psw, PSW, S,   env->psw_s >> 31);
+    psw = FIELD_DP32(psw, PSW, Z,   env->psw_z == 0);
+    psw = FIELD_DP32(psw, PSW, C,   env->psw_c);
+    return psw;
+}
+
+#endif /* RX_CPU_H */
diff --git a/target/rx/disas.c b/target/rx/disas.c
new file mode 100644 (file)
index 0000000..6dee7a0
--- /dev/null
@@ -0,0 +1,1446 @@
+/*
+ * Renesas RX Disassembler
+ *
+ * Copyright (c) 2019 Yoshinori Sato <ysato@users.sourceforge.jp>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "disas/dis-asm.h"
+#include "qemu/bitops.h"
+#include "cpu.h"
+
+typedef struct DisasContext {
+    disassemble_info *dis;
+    uint32_t addr;
+    uint32_t pc;
+    uint8_t len;
+    uint8_t bytes[8];
+} DisasContext;
+
+
+static uint32_t decode_load_bytes(DisasContext *ctx, uint32_t insn,
+                                  int i, int n)
+{
+    uint32_t addr = ctx->addr;
+
+    g_assert(ctx->len == i);
+    g_assert(n <= ARRAY_SIZE(ctx->bytes));
+
+    while (++i <= n) {
+        ctx->dis->read_memory_func(addr++, &ctx->bytes[i - 1], 1, ctx->dis);
+        insn |= ctx->bytes[i - 1] << (32 - i * 8);
+    }
+    ctx->addr = addr;
+    ctx->len = n;
+
+    return insn;
+}
+
+static int32_t li(DisasContext *ctx, int sz)
+{
+    uint32_t addr = ctx->addr;
+    uintptr_t len = ctx->len;
+
+    switch (sz) {
+    case 1:
+        g_assert(len + 1 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 1;
+        ctx->len += 1;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 1, ctx->dis);
+        return (int8_t)ctx->bytes[len];
+    case 2:
+        g_assert(len + 2 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 2;
+        ctx->len += 2;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 2, ctx->dis);
+        return ldsw_le_p(ctx->bytes + len);
+    case 3:
+        g_assert(len + 3 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 3;
+        ctx->len += 3;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 3, ctx->dis);
+        return (int8_t)ctx->bytes[len + 2] << 16 | lduw_le_p(ctx->bytes + len);
+    case 0:
+        g_assert(len + 4 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 4;
+        ctx->len += 4;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 4, ctx->dis);
+        return ldl_le_p(ctx->bytes + len);
+    default:
+        g_assert_not_reached();
+    }
+}
+
+static int bdsp_s(DisasContext *ctx, int d)
+{
+    /*
+     * 0 -> 8
+     * 1 -> 9
+     * 2 -> 10
+     * 3 -> 3
+     * :
+     * 7 -> 7
+     */
+    if (d < 3) {
+        d += 8;
+    }
+    return d;
+}
+
+/* Include the auto-generated decoder.  */
+#include "decode.inc.c"
+
+static void dump_bytes(DisasContext *ctx)
+{
+    int i, len = ctx->len;
+
+    for (i = 0; i < len; ++i) {
+        ctx->dis->fprintf_func(ctx->dis->stream, "%02x ", ctx->bytes[i]);
+    }
+    ctx->dis->fprintf_func(ctx->dis->stream, "%*c", (8 - i) * 3, '\t');
+}
+
+#define prt(...) \
+    do {                                                        \
+        dump_bytes(ctx);                                        \
+        ctx->dis->fprintf_func(ctx->dis->stream, __VA_ARGS__);  \
+    } while (0)
+
+#define RX_MEMORY_BYTE 0
+#define RX_MEMORY_WORD 1
+#define RX_MEMORY_LONG 2
+
+#define RX_IM_BYTE 0
+#define RX_IM_WORD 1
+#define RX_IM_LONG 2
+#define RX_IM_UWORD 3
+
+static const char size[] = {'b', 'w', 'l'};
+static const char cond[][4] = {
+    "eq", "ne", "c", "nc", "gtu", "leu", "pz", "n",
+    "ge", "lt", "gt", "le", "o", "no", "ra", "f"
+};
+static const char psw[] = {
+    'c', 'z', 's', 'o', 0, 0, 0, 0,
+    'i', 'u', 0, 0, 0, 0, 0, 0,
+};
+
+static void rx_index_addr(DisasContext *ctx, char out[8], int ld, int mi)
+{
+    uint32_t addr = ctx->addr;
+    uintptr_t len = ctx->len;
+    uint16_t dsp;
+
+    switch (ld) {
+    case 0:
+        /* No index; return empty string.  */
+        out[0] = '\0';
+        return;
+    case 1:
+        g_assert(len + 1 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 1;
+        ctx->len += 1;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 1, ctx->dis);
+        dsp = ctx->bytes[len];
+        break;
+    case 2:
+        g_assert(len + 2 <= ARRAY_SIZE(ctx->bytes));
+        ctx->addr += 2;
+        ctx->len += 2;
+        ctx->dis->read_memory_func(addr, ctx->bytes + len, 2, ctx->dis);
+        dsp = lduw_le_p(ctx->bytes + len);
+        break;
+    default:
+        g_assert_not_reached();
+    }
+
+    sprintf(out, "%u", dsp << (mi < 3 ? mi : 4 - mi));
+}
+
+static void prt_ldmi(DisasContext *ctx, const char *insn,
+                     int ld, int mi, int rs, int rd)
+{
+    static const char sizes[][4] = {".b", ".w", ".l", ".uw", ".ub"};
+    char dsp[8];
+
+    if (ld < 3) {
+        rx_index_addr(ctx, dsp, ld, mi);
+        prt("%s\t%s[r%d]%s, r%d", insn, dsp, rs, sizes[mi], rd);
+    } else {
+        prt("%s\tr%d, r%d", insn, rs, rd);
+    }
+}
+
+static void prt_ir(DisasContext *ctx, const char *insn, int imm, int rd)
+{
+    if (imm < 0x100) {
+        prt("%s\t#%d, r%d", insn, imm, rd);
+    } else {
+        prt("%s\t#0x%08x, r%d", insn, imm, rd);
+    }
+}
+
+/* mov.[bwl] rs,dsp:[rd] */
+static bool trans_MOV_rm(DisasContext *ctx, arg_MOV_rm *a)
+{
+    if (a->dsp > 0) {
+        prt("mov.%c\tr%d,%d[r%d]",
+            size[a->sz], a->rs, a->dsp << a->sz, a->rd);
+    } else {
+        prt("mov.%c\tr%d,[r%d]",
+            size[a->sz], a->rs, a->rd);
+    }
+    return true;
+}
+
+/* mov.[bwl] dsp:[rs],rd */
+static bool trans_MOV_mr(DisasContext *ctx, arg_MOV_mr *a)
+{
+    if (a->dsp > 0) {
+        prt("mov.%c\t%d[r%d], r%d",
+            size[a->sz], a->dsp << a->sz, a->rs, a->rd);
+    } else {
+        prt("mov.%c\t[r%d], r%d",
+            size[a->sz], a->rs, a->rd);
+    }
+    return true;
+}
+
+/* mov.l #uimm4,rd */
+/* mov.l #uimm8,rd */
+/* mov.l #imm,rd */
+static bool trans_MOV_ir(DisasContext *ctx, arg_MOV_ir *a)
+{
+    prt_ir(ctx, "mov.l", a->imm, a->rd);
+    return true;
+}
+
+/* mov.[bwl] #uimm8,dsp:[rd] */
+/* mov #imm, dsp:[rd] */
+static bool trans_MOV_im(DisasContext *ctx, arg_MOV_im *a)
+{
+    if (a->dsp > 0) {
+        prt("mov.%c\t#%d,%d[r%d]",
+            size[a->sz], a->imm, a->dsp << a->sz, a->rd);
+    } else {
+        prt("mov.%c\t#%d,[r%d]",
+            size[a->sz], a->imm, a->rd);
+    }
+    return true;
+}
+
+/* mov.[bwl] [ri,rb],rd */
+static bool trans_MOV_ar(DisasContext *ctx, arg_MOV_ar *a)
+{
+    prt("mov.%c\t[r%d,r%d], r%d", size[a->sz], a->ri, a->rb, a->rd);
+    return true;
+}
+
+/* mov.[bwl] rd,[ri,rb] */
+static bool trans_MOV_ra(DisasContext *ctx, arg_MOV_ra *a)
+{
+    prt("mov.%c\tr%d, [r%d, r%d]", size[a->sz], a->rs, a->ri, a->rb);
+    return true;
+}
+
+
+/* mov.[bwl] dsp:[rs],dsp:[rd] */
+/* mov.[bwl] rs,dsp:[rd] */
+/* mov.[bwl] dsp:[rs],rd */
+/* mov.[bwl] rs,rd */
+static bool trans_MOV_mm(DisasContext *ctx, arg_MOV_mm *a)
+{
+    char dspd[8], dsps[8], szc = size[a->sz];
+
+    if (a->lds == 3 && a->ldd == 3) {
+        /* mov.[bwl] rs,rd */
+        prt("mov.%c\tr%d, r%d", szc, a->rs, a->rd);
+    } else if (a->lds == 3) {
+        rx_index_addr(ctx, dspd, a->ldd, a->sz);
+        prt("mov.%c\tr%d, %s[r%d]", szc, a->rs, dspd, a->rd);
+    } else if (a->ldd == 3) {
+        rx_index_addr(ctx, dsps, a->lds, a->sz);
+        prt("mov.%c\t%s[r%d], r%d", szc, dsps, a->rs, a->rd);
+    } else {
+        rx_index_addr(ctx, dsps, a->lds, a->sz);
+        rx_index_addr(ctx, dspd, a->ldd, a->sz);
+        prt("mov.%c\t%s[r%d], %s[r%d]", szc, dsps, a->rs, dspd, a->rd);
+    }
+    return true;
+}
+
+/* mov.[bwl] rs,[rd+] */
+/* mov.[bwl] rs,[-rd] */
+static bool trans_MOV_rp(DisasContext *ctx, arg_MOV_rp *a)
+{
+    if (a->ad) {
+        prt("mov.%c\tr%d, [-r%d]", size[a->sz], a->rs, a->rd);
+    } else {
+        prt("mov.%c\tr%d, [r%d+]", size[a->sz], a->rs, a->rd);
+    }
+    return true;
+}
+
+/* mov.[bwl] [rd+],rs */
+/* mov.[bwl] [-rd],rs */
+static bool trans_MOV_pr(DisasContext *ctx, arg_MOV_pr *a)
+{
+    if (a->ad) {
+        prt("mov.%c\t[-r%d], r%d", size[a->sz], a->rd, a->rs);
+    } else {
+        prt("mov.%c\t[r%d+], r%d", size[a->sz], a->rd, a->rs);
+    }
+    return true;
+}
+
+/* movu.[bw] dsp5:[rs],rd */
+static bool trans_MOVU_mr(DisasContext *ctx, arg_MOVU_mr *a)
+{
+    if (a->dsp > 0) {
+        prt("movu.%c\t%d[r%d], r%d", size[a->sz],
+            a->dsp << a->sz, a->rs, a->rd);
+    } else {
+        prt("movu.%c\t[r%d], r%d", size[a->sz], a->rs, a->rd);
+    }
+    return true;
+}
+
+/* movu.[bw] rs,rd */
+static bool trans_MOVU_rr(DisasContext *ctx, arg_MOVU_rr *a)
+{
+    prt("movu.%c\tr%d, r%d", size[a->sz], a->rs, a->rd);
+    return true;
+}
+
+/* movu.[bw] [ri,rb],rd */
+static bool trans_MOVU_ar(DisasContext *ctx, arg_MOVU_ar *a)
+{
+    prt("mov.%c\t[r%d,r%d], r%d", size[a->sz], a->ri, a->rb, a->rd);
+    return true;
+}
+
+/* movu.[bw] [rs+],rd */
+/* movu.[bw] [-rs],rd */
+static bool trans_MOVU_pr(DisasContext *ctx, arg_MOVU_pr *a)
+{
+    if (a->ad) {
+        prt("movu.%c\t[-r%d], r%d", size[a->sz], a->rd, a->rs);
+    } else {
+        prt("movu.%c\t[r%d+], r%d", size[a->sz], a->rd, a->rs);
+    }
+    return true;
+}
+
+/* pop rd */
+static bool trans_POP(DisasContext *ctx, arg_POP *a)
+{
+    prt("pop\tr%d", a->rd);
+    return true;
+}
+
+/* popc rx */
+static bool trans_POPC(DisasContext *ctx, arg_POPC *a)
+{
+    prt("pop\tr%s", rx_crname(a->cr));
+    return true;
+}
+
+/* popm rd-rd2 */
+static bool trans_POPM(DisasContext *ctx, arg_POPM *a)
+{
+    prt("popm\tr%d-r%d", a->rd, a->rd2);
+    return true;
+}
+
+/* push rs */
+static bool trans_PUSH_r(DisasContext *ctx, arg_PUSH_r *a)
+{
+    prt("push\tr%d", a->rs);
+    return true;
+}
+
+/* push dsp[rs] */
+static bool trans_PUSH_m(DisasContext *ctx, arg_PUSH_m *a)
+{
+    char dsp[8];
+
+    rx_index_addr(ctx, dsp, a->ld, a->sz);
+    prt("push\t%s[r%d]", dsp, a->rs);
+    return true;
+}
+
+/* pushc rx */
+static bool trans_PUSHC(DisasContext *ctx, arg_PUSHC *a)
+{
+    prt("push\t%s", rx_crname(a->cr));
+    return true;
+}
+
+/* pushm rs-rs2*/
+static bool trans_PUSHM(DisasContext *ctx, arg_PUSHM *a)
+{
+    prt("pushm\tr%d-r%d", a->rs, a->rs2);
+    return true;
+}
+
+/* xchg rs,rd */
+static bool trans_XCHG_rr(DisasContext *ctx, arg_XCHG_rr *a)
+{
+    prt("xchg\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+/* xchg dsp[rs].<mi>,rd */
+static bool trans_XCHG_mr(DisasContext *ctx, arg_XCHG_mr *a)
+{
+    prt_ldmi(ctx, "xchg", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* stz #imm,rd */
+static bool trans_STZ(DisasContext *ctx, arg_STZ *a)
+{
+    prt_ir(ctx, "stz", a->imm, a->rd);
+    return true;
+}
+
+/* stnz #imm,rd */
+static bool trans_STNZ(DisasContext *ctx, arg_STNZ *a)
+{
+    prt_ir(ctx, "stnz", a->imm, a->rd);
+    return true;
+}
+
+/* rtsd #imm */
+static bool trans_RTSD_i(DisasContext *ctx, arg_RTSD_i *a)
+{
+    prt("rtsd\t#%d", a->imm << 2);
+    return true;
+}
+
+/* rtsd #imm, rd-rd2 */
+static bool trans_RTSD_irr(DisasContext *ctx, arg_RTSD_irr *a)
+{
+    prt("rtsd\t#%d, r%d - r%d", a->imm << 2, a->rd, a->rd2);
+    return true;
+}
+
+/* and #uimm:4, rd */
+/* and #imm, rd */
+static bool trans_AND_ir(DisasContext *ctx, arg_AND_ir *a)
+{
+    prt_ir(ctx, "and", a->imm, a->rd);
+    return true;
+}
+
+/* and dsp[rs], rd */
+/* and rs,rd */
+static bool trans_AND_mr(DisasContext *ctx, arg_AND_mr *a)
+{
+    prt_ldmi(ctx, "and", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* and rs,rs2,rd */
+static bool trans_AND_rrr(DisasContext *ctx, arg_AND_rrr *a)
+{
+    prt("and\tr%d,r%d, r%d", a->rs, a->rs2, a->rd);
+    return true;
+}
+
+/* or #uimm:4, rd */
+/* or #imm, rd */
+static bool trans_OR_ir(DisasContext *ctx, arg_OR_ir *a)
+{
+    prt_ir(ctx, "or", a->imm, a->rd);
+    return true;
+}
+
+/* or dsp[rs], rd */
+/* or rs,rd */
+static bool trans_OR_mr(DisasContext *ctx, arg_OR_mr *a)
+{
+    prt_ldmi(ctx, "or", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* or rs,rs2,rd */
+static bool trans_OR_rrr(DisasContext *ctx, arg_OR_rrr *a)
+{
+    prt("or\tr%d, r%d, r%d", a->rs, a->rs2, a->rd);
+    return true;
+}
+
+/* xor #imm, rd */
+static bool trans_XOR_ir(DisasContext *ctx, arg_XOR_ir *a)
+{
+    prt_ir(ctx, "xor", a->imm, a->rd);
+    return true;
+}
+
+/* xor dsp[rs], rd */
+/* xor rs,rd */
+static bool trans_XOR_mr(DisasContext *ctx, arg_XOR_mr *a)
+{
+    prt_ldmi(ctx, "xor", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* tst #imm, rd */
+static bool trans_TST_ir(DisasContext *ctx, arg_TST_ir *a)
+{
+    prt_ir(ctx, "tst", a->imm, a->rd);
+    return true;
+}
+
+/* tst dsp[rs], rd */
+/* tst rs, rd */
+static bool trans_TST_mr(DisasContext *ctx, arg_TST_mr *a)
+{
+    prt_ldmi(ctx, "tst", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* not rd */
+/* not rs, rd */
+static bool trans_NOT_rr(DisasContext *ctx, arg_NOT_rr *a)
+{
+    if (a->rs != a->rd) {
+        prt("not\tr%d, r%d", a->rs, a->rd);
+    } else {
+        prt("not\tr%d", a->rs);
+    }
+    return true;
+}
+
+/* neg rd */
+/* neg rs, rd */
+static bool trans_NEG_rr(DisasContext *ctx, arg_NEG_rr *a)
+{
+    if (a->rs != a->rd) {
+        prt("neg\tr%d, r%d", a->rs, a->rd);
+    } else {
+        prt("neg\tr%d", a->rs);
+    }
+    return true;
+}
+
+/* adc #imm, rd */
+static bool trans_ADC_ir(DisasContext *ctx, arg_ADC_ir *a)
+{
+    prt_ir(ctx, "adc", a->imm, a->rd);
+    return true;
+}
+
+/* adc rs, rd */
+static bool trans_ADC_rr(DisasContext *ctx, arg_ADC_rr *a)
+{
+    prt("adc\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* adc dsp[rs], rd */
+static bool trans_ADC_mr(DisasContext *ctx, arg_ADC_mr *a)
+{
+    char dsp[8];
+
+    rx_index_addr(ctx, dsp, a->ld, 2);
+    prt("adc\t%s[r%d], r%d", dsp, a->rs, a->rd);
+    return true;
+}
+
+/* add #uimm4, rd */
+/* add #imm, rs, rd */
+static bool trans_ADD_irr(DisasContext *ctx, arg_ADD_irr *a)
+{
+    if (a->imm < 0x10 && a->rs2 == a->rd) {
+        prt("add\t#%d, r%d", a->imm, a->rd);
+    } else {
+        prt("add\t#0x%08x, r%d, r%d", a->imm, a->rs2, a->rd);
+    }
+    return true;
+}
+
+/* add rs, rd */
+/* add dsp[rs], rd */
+static bool trans_ADD_mr(DisasContext *ctx, arg_ADD_mr *a)
+{
+    prt_ldmi(ctx, "add", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* add rs, rs2, rd */
+static bool trans_ADD_rrr(DisasContext *ctx, arg_ADD_rrr *a)
+{
+    prt("add\tr%d, r%d, r%d", a->rs, a->rs2, a->rd);
+    return true;
+}
+
+/* cmp #imm4, rd */
+/* cmp #imm8, rd */
+/* cmp #imm, rs2 */
+static bool trans_CMP_ir(DisasContext *ctx, arg_CMP_ir *a)
+{
+    prt_ir(ctx, "cmp", a->imm, a->rs2);
+    return true;
+}
+
+/* cmp rs, rs2 */
+/* cmp dsp[rs], rs2 */
+static bool trans_CMP_mr(DisasContext *ctx, arg_CMP_mr *a)
+{
+    prt_ldmi(ctx, "cmp", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* sub #imm4, rd */
+static bool trans_SUB_ir(DisasContext *ctx, arg_SUB_ir *a)
+{
+    prt("sub\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* sub rs, rd */
+/* sub dsp[rs], rd */
+static bool trans_SUB_mr(DisasContext *ctx, arg_SUB_mr *a)
+{
+    prt_ldmi(ctx, "sub", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* sub rs, rs2, rd */
+static bool trans_SUB_rrr(DisasContext *ctx, arg_SUB_rrr *a)
+{
+    prt("sub\tr%d, r%d, r%d", a->rs, a->rs2, a->rd);
+    return true;
+}
+
+/* sbb rs, rd */
+static bool trans_SBB_rr(DisasContext *ctx, arg_SBB_rr *a)
+{
+    prt("sbb\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* sbb dsp[rs], rd */
+static bool trans_SBB_mr(DisasContext *ctx, arg_SBB_mr *a)
+{
+    prt_ldmi(ctx, "sbb", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* abs rd */
+/* abs rs, rd */
+static bool trans_ABS_rr(DisasContext *ctx, arg_ABS_rr *a)
+{
+    if (a->rs != a->rd) {
+        prt("abs\tr%d, r%d", a->rs, a->rd);
+    } else {
+        prt("abs\tr%d", a->rs);
+    }
+    return true;
+}
+
+/* max #imm, rd */
+static bool trans_MAX_ir(DisasContext *ctx, arg_MAX_ir *a)
+{
+    prt_ir(ctx, "max", a->imm, a->rd);
+    return true;
+}
+
+/* max rs, rd */
+/* max dsp[rs], rd */
+static bool trans_MAX_mr(DisasContext *ctx, arg_MAX_mr *a)
+{
+    prt_ldmi(ctx, "max", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* min #imm, rd */
+static bool trans_MIN_ir(DisasContext *ctx, arg_MIN_ir *a)
+{
+    prt_ir(ctx, "min", a->imm, a->rd);
+    return true;
+}
+
+/* min rs, rd */
+/* min dsp[rs], rd */
+static bool trans_MIN_mr(DisasContext *ctx, arg_MIN_mr *a)
+{
+    prt_ldmi(ctx, "min", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* mul #uimm4, rd */
+/* mul #imm, rd */
+static bool trans_MUL_ir(DisasContext *ctx, arg_MUL_ir *a)
+{
+    prt_ir(ctx, "mul", a->imm, a->rd);
+    return true;
+}
+
+/* mul rs, rd */
+/* mul dsp[rs], rd */
+static bool trans_MUL_mr(DisasContext *ctx, arg_MUL_mr *a)
+{
+    prt_ldmi(ctx, "mul", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* mul rs, rs2, rd */
+static bool trans_MUL_rrr(DisasContext *ctx, arg_MUL_rrr *a)
+{
+    prt("mul\tr%d,r%d,r%d", a->rs, a->rs2, a->rd);
+    return true;
+}
+
+/* emul #imm, rd */
+static bool trans_EMUL_ir(DisasContext *ctx, arg_EMUL_ir *a)
+{
+    prt_ir(ctx, "emul", a->imm, a->rd);
+    return true;
+}
+
+/* emul rs, rd */
+/* emul dsp[rs], rd */
+static bool trans_EMUL_mr(DisasContext *ctx, arg_EMUL_mr *a)
+{
+    prt_ldmi(ctx, "emul", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* emulu #imm, rd */
+static bool trans_EMULU_ir(DisasContext *ctx, arg_EMULU_ir *a)
+{
+    prt_ir(ctx, "emulu", a->imm, a->rd);
+    return true;
+}
+
+/* emulu rs, rd */
+/* emulu dsp[rs], rd */
+static bool trans_EMULU_mr(DisasContext *ctx, arg_EMULU_mr *a)
+{
+    prt_ldmi(ctx, "emulu", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* div #imm, rd */
+static bool trans_DIV_ir(DisasContext *ctx, arg_DIV_ir *a)
+{
+    prt_ir(ctx, "div", a->imm, a->rd);
+    return true;
+}
+
+/* div rs, rd */
+/* div dsp[rs], rd */
+static bool trans_DIV_mr(DisasContext *ctx, arg_DIV_mr *a)
+{
+    prt_ldmi(ctx, "div", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+/* divu #imm, rd */
+static bool trans_DIVU_ir(DisasContext *ctx, arg_DIVU_ir *a)
+{
+    prt_ir(ctx, "divu", a->imm, a->rd);
+    return true;
+}
+
+/* divu rs, rd */
+/* divu dsp[rs], rd */
+static bool trans_DIVU_mr(DisasContext *ctx, arg_DIVU_mr *a)
+{
+    prt_ldmi(ctx, "divu", a->ld, a->mi, a->rs, a->rd);
+    return true;
+}
+
+
+/* shll #imm:5, rd */
+/* shll #imm:5, rs, rd */
+static bool trans_SHLL_irr(DisasContext *ctx, arg_SHLL_irr *a)
+{
+    if (a->rs2 != a->rd) {
+        prt("shll\t#%d, r%d, r%d", a->imm, a->rs2, a->rd);
+    } else {
+        prt("shll\t#%d, r%d", a->imm, a->rd);
+    }
+    return true;
+}
+
+/* shll rs, rd */
+static bool trans_SHLL_rr(DisasContext *ctx, arg_SHLL_rr *a)
+{
+    prt("shll\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* shar #imm:5, rd */
+/* shar #imm:5, rs, rd */
+static bool trans_SHAR_irr(DisasContext *ctx, arg_SHAR_irr *a)
+{
+    if (a->rs2 != a->rd) {
+        prt("shar\t#%d, r%d, r%d", a->imm, a->rs2, a->rd);
+    } else {
+        prt("shar\t#%d, r%d", a->imm, a->rd);
+    }
+    return true;
+}
+
+/* shar rs, rd */
+static bool trans_SHAR_rr(DisasContext *ctx, arg_SHAR_rr *a)
+{
+    prt("shar\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* shlr #imm:5, rd */
+/* shlr #imm:5, rs, rd */
+static bool trans_SHLR_irr(DisasContext *ctx, arg_SHLR_irr *a)
+{
+    if (a->rs2 != a->rd) {
+        prt("shlr\t#%d, r%d, r%d", a->imm, a->rs2, a->rd);
+    } else {
+        prt("shlr\t#%d, r%d", a->imm, a->rd);
+    }
+    return true;
+}
+
+/* shlr rs, rd */
+static bool trans_SHLR_rr(DisasContext *ctx, arg_SHLR_rr *a)
+{
+    prt("shlr\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* rolc rd */
+static bool trans_ROLC(DisasContext *ctx, arg_ROLC *a)
+{
+    prt("rorc\tr%d", a->rd);
+    return true;
+}
+
+/* rorc rd */
+static bool trans_RORC(DisasContext *ctx, arg_RORC *a)
+{
+    prt("rorc\tr%d", a->rd);
+    return true;
+}
+
+/* rotl #imm, rd */
+static bool trans_ROTL_ir(DisasContext *ctx, arg_ROTL_ir *a)
+{
+    prt("rotl\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* rotl rs, rd */
+static bool trans_ROTL_rr(DisasContext *ctx, arg_ROTL_rr *a)
+{
+    prt("rotl\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* rotr #imm, rd */
+static bool trans_ROTR_ir(DisasContext *ctx, arg_ROTR_ir *a)
+{
+    prt("rotr\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* rotr rs, rd */
+static bool trans_ROTR_rr(DisasContext *ctx, arg_ROTR_rr *a)
+{
+    prt("rotr\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* revl rs, rd */
+static bool trans_REVL(DisasContext *ctx, arg_REVL *a)
+{
+    prt("revl\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* revw rs, rd */
+static bool trans_REVW(DisasContext *ctx, arg_REVW *a)
+{
+    prt("revw\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* conditional branch helper */
+static void rx_bcnd_main(DisasContext *ctx, int cd, int len, int dst)
+{
+    static const char sz[] = {'s', 'b', 'w', 'a'};
+    prt("b%s.%c\t%08x", cond[cd], sz[len - 1], ctx->pc + dst);
+}
+
+/* beq dsp:3 / bne dsp:3 */
+/* beq dsp:8 / bne dsp:8 */
+/* bc dsp:8 / bnc dsp:8 */
+/* bgtu dsp:8 / bleu dsp:8 */
+/* bpz dsp:8 / bn dsp:8 */
+/* bge dsp:8 / blt dsp:8 */
+/* bgt dsp:8 / ble dsp:8 */
+/* bo dsp:8 / bno dsp:8 */
+/* beq dsp:16 / bne dsp:16 */
+static bool trans_BCnd(DisasContext *ctx, arg_BCnd *a)
+{
+    rx_bcnd_main(ctx, a->cd, a->sz, a->dsp);
+    return true;
+}
+
+/* bra dsp:3 */
+/* bra dsp:8 */
+/* bra dsp:16 */
+/* bra dsp:24 */
+static bool trans_BRA(DisasContext *ctx, arg_BRA *a)
+{
+    rx_bcnd_main(ctx, 14, a->sz, a->dsp);
+    return true;
+}
+
+/* bra rs */
+static bool trans_BRA_l(DisasContext *ctx, arg_BRA_l *a)
+{
+    prt("bra.l\tr%d", a->rd);
+    return true;
+}
+
+/* jmp rs */
+static bool trans_JMP(DisasContext *ctx, arg_JMP *a)
+{
+    prt("jmp\tr%d", a->rs);
+    return true;
+}
+
+/* jsr rs */
+static bool trans_JSR(DisasContext *ctx, arg_JSR *a)
+{
+    prt("jsr\tr%d", a->rs);
+    return true;
+}
+
+/* bsr dsp:16 */
+/* bsr dsp:24 */
+static bool trans_BSR(DisasContext *ctx, arg_BSR *a)
+{
+    static const char sz[] = {'w', 'a'};
+    prt("bsr.%c\t%08x", sz[a->sz - 3], ctx->pc + a->dsp);
+    return true;
+}
+
+/* bsr rs */
+static bool trans_BSR_l(DisasContext *ctx, arg_BSR_l *a)
+{
+    prt("bsr.l\tr%d", a->rd);
+    return true;
+}
+
+/* rts */
+static bool trans_RTS(DisasContext *ctx, arg_RTS *a)
+{
+    prt("rts");
+    return true;
+}
+
+/* nop */
+static bool trans_NOP(DisasContext *ctx, arg_NOP *a)
+{
+    prt("nop");
+    return true;
+}
+
+/* scmpu */
+static bool trans_SCMPU(DisasContext *ctx, arg_SCMPU *a)
+{
+    prt("scmpu");
+    return true;
+}
+
+/* smovu */
+static bool trans_SMOVU(DisasContext *ctx, arg_SMOVU *a)
+{
+    prt("smovu");
+    return true;
+}
+
+/* smovf */
+static bool trans_SMOVF(DisasContext *ctx, arg_SMOVF *a)
+{
+    prt("smovf");
+    return true;
+}
+
+/* smovb */
+static bool trans_SMOVB(DisasContext *ctx, arg_SMOVB *a)
+{
+    prt("smovb");
+    return true;
+}
+
+/* suntile */
+static bool trans_SUNTIL(DisasContext *ctx, arg_SUNTIL *a)
+{
+    prt("suntil.%c", size[a->sz]);
+    return true;
+}
+
+/* swhile */
+static bool trans_SWHILE(DisasContext *ctx, arg_SWHILE *a)
+{
+    prt("swhile.%c", size[a->sz]);
+    return true;
+}
+/* sstr */
+static bool trans_SSTR(DisasContext *ctx, arg_SSTR *a)
+{
+    prt("sstr.%c", size[a->sz]);
+    return true;
+}
+
+/* rmpa */
+static bool trans_RMPA(DisasContext *ctx, arg_RMPA *a)
+{
+    prt("rmpa.%c", size[a->sz]);
+    return true;
+}
+
+/* mulhi rs,rs2 */
+static bool trans_MULHI(DisasContext *ctx, arg_MULHI *a)
+{
+    prt("mulhi\tr%d,r%d", a->rs, a->rs2);
+    return true;
+}
+
+/* mullo rs,rs2 */
+static bool trans_MULLO(DisasContext *ctx, arg_MULLO *a)
+{
+    prt("mullo\tr%d, r%d", a->rs, a->rs2);
+    return true;
+}
+
+/* machi rs,rs2 */
+static bool trans_MACHI(DisasContext *ctx, arg_MACHI *a)
+{
+    prt("machi\tr%d, r%d", a->rs, a->rs2);
+    return true;
+}
+
+/* maclo rs,rs2 */
+static bool trans_MACLO(DisasContext *ctx, arg_MACLO *a)
+{
+    prt("maclo\tr%d, r%d", a->rs, a->rs2);
+    return true;
+}
+
+/* mvfachi rd */
+static bool trans_MVFACHI(DisasContext *ctx, arg_MVFACHI *a)
+{
+    prt("mvfachi\tr%d", a->rd);
+    return true;
+}
+
+/* mvfacmi rd */
+static bool trans_MVFACMI(DisasContext *ctx, arg_MVFACMI *a)
+{
+    prt("mvfacmi\tr%d", a->rd);
+    return true;
+}
+
+/* mvtachi rs */
+static bool trans_MVTACHI(DisasContext *ctx, arg_MVTACHI *a)
+{
+    prt("mvtachi\tr%d", a->rs);
+    return true;
+}
+
+/* mvtaclo rs */
+static bool trans_MVTACLO(DisasContext *ctx, arg_MVTACLO *a)
+{
+    prt("mvtaclo\tr%d", a->rs);
+    return true;
+}
+
+/* racw #imm */
+static bool trans_RACW(DisasContext *ctx, arg_RACW *a)
+{
+    prt("racw\t#%d", a->imm + 1);
+    return true;
+}
+
+/* sat rd */
+static bool trans_SAT(DisasContext *ctx, arg_SAT *a)
+{
+    prt("sat\tr%d", a->rd);
+    return true;
+}
+
+/* satr */
+static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
+{
+    prt("satr");
+    return true;
+}
+
+/* fadd #imm, rd */
+static bool trans_FADD_ir(DisasContext *ctx, arg_FADD_ir *a)
+{
+    prt("fadd\t#%d,r%d", li(ctx, 0), a->rd);
+    return true;
+}
+
+/* fadd dsp[rs], rd */
+/* fadd rs, rd */
+static bool trans_FADD_mr(DisasContext *ctx, arg_FADD_mr *a)
+{
+    prt_ldmi(ctx, "fadd", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* fcmp #imm, rd */
+static bool trans_FCMP_ir(DisasContext *ctx, arg_FCMP_ir *a)
+{
+    prt("fadd\t#%d,r%d", li(ctx, 0), a->rd);
+    return true;
+}
+
+/* fcmp dsp[rs], rd */
+/* fcmp rs, rd */
+static bool trans_FCMP_mr(DisasContext *ctx, arg_FCMP_mr *a)
+{
+    prt_ldmi(ctx, "fcmp", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* fsub #imm, rd */
+static bool trans_FSUB_ir(DisasContext *ctx, arg_FSUB_ir *a)
+{
+    prt("fsub\t#%d,r%d", li(ctx, 0), a->rd);
+    return true;
+}
+
+/* fsub dsp[rs], rd */
+/* fsub rs, rd */
+static bool trans_FSUB_mr(DisasContext *ctx, arg_FSUB_mr *a)
+{
+    prt_ldmi(ctx, "fsub", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* ftoi dsp[rs], rd */
+/* ftoi rs, rd */
+static bool trans_FTOI(DisasContext *ctx, arg_FTOI *a)
+{
+    prt_ldmi(ctx, "ftoi", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* fmul #imm, rd */
+static bool trans_FMUL_ir(DisasContext *ctx, arg_FMUL_ir *a)
+{
+    prt("fmul\t#%d,r%d", li(ctx, 0), a->rd);
+    return true;
+}
+
+/* fmul dsp[rs], rd */
+/* fmul rs, rd */
+static bool trans_FMUL_mr(DisasContext *ctx, arg_FMUL_mr *a)
+{
+    prt_ldmi(ctx, "fmul", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* fdiv #imm, rd */
+static bool trans_FDIV_ir(DisasContext *ctx, arg_FDIV_ir *a)
+{
+    prt("fdiv\t#%d,r%d", li(ctx, 0), a->rd);
+    return true;
+}
+
+/* fdiv dsp[rs], rd */
+/* fdiv rs, rd */
+static bool trans_FDIV_mr(DisasContext *ctx, arg_FDIV_mr *a)
+{
+    prt_ldmi(ctx, "fdiv", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* round dsp[rs], rd */
+/* round rs, rd */
+static bool trans_ROUND(DisasContext *ctx, arg_ROUND *a)
+{
+    prt_ldmi(ctx, "round", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+/* itof rs, rd */
+/* itof dsp[rs], rd */
+static bool trans_ITOF(DisasContext *ctx, arg_ITOF *a)
+{
+    prt_ldmi(ctx, "itof", a->ld, RX_IM_LONG, a->rs, a->rd);
+    return true;
+}
+
+#define BOP_IM(name, reg)                                       \
+    do {                                                        \
+        char dsp[8];                                            \
+        rx_index_addr(ctx, dsp, a->ld, RX_MEMORY_BYTE);         \
+        prt("b%s\t#%d, %s[r%d]", #name, a->imm, dsp, reg);      \
+        return true;                                            \
+    } while (0)
+
+#define BOP_RM(name)                                            \
+    do {                                                        \
+        char dsp[8];                                            \
+        rx_index_addr(ctx, dsp, a->ld, RX_MEMORY_BYTE);         \
+        prt("b%s\tr%d, %s[r%d]", #name, a->rd, dsp, a->rs);     \
+        return true;                                            \
+    } while (0)
+
+/* bset #imm, dsp[rd] */
+static bool trans_BSET_im(DisasContext *ctx, arg_BSET_im *a)
+{
+    BOP_IM(bset, a->rs);
+}
+
+/* bset rs, dsp[rd] */
+static bool trans_BSET_rm(DisasContext *ctx, arg_BSET_rm *a)
+{
+    BOP_RM(set);
+}
+
+/* bset rs, rd */
+static bool trans_BSET_rr(DisasContext *ctx, arg_BSET_rr *a)
+{
+    prt("bset\tr%d,r%d", a->rs, a->rd);
+    return true;
+}
+
+/* bset #imm, rd */
+static bool trans_BSET_ir(DisasContext *ctx, arg_BSET_ir *a)
+{
+    prt("bset\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* bclr #imm, dsp[rd] */
+static bool trans_BCLR_im(DisasContext *ctx, arg_BCLR_im *a)
+{
+    BOP_IM(clr, a->rs);
+}
+
+/* bclr rs, dsp[rd] */
+static bool trans_BCLR_rm(DisasContext *ctx, arg_BCLR_rm *a)
+{
+    BOP_RM(clr);
+}
+
+/* bclr rs, rd */
+static bool trans_BCLR_rr(DisasContext *ctx, arg_BCLR_rr *a)
+{
+    prt("bclr\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* bclr #imm, rd */
+static bool trans_BCLR_ir(DisasContext *ctx, arg_BCLR_ir *a)
+{
+    prt("bclr\t#%d,r%d", a->imm, a->rd);
+    return true;
+}
+
+/* btst #imm, dsp[rd] */
+static bool trans_BTST_im(DisasContext *ctx, arg_BTST_im *a)
+{
+    BOP_IM(tst, a->rs);
+}
+
+/* btst rs, dsp[rd] */
+static bool trans_BTST_rm(DisasContext *ctx, arg_BTST_rm *a)
+{
+    BOP_RM(tst);
+}
+
+/* btst rs, rd */
+static bool trans_BTST_rr(DisasContext *ctx, arg_BTST_rr *a)
+{
+    prt("btst\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* btst #imm, rd */
+static bool trans_BTST_ir(DisasContext *ctx, arg_BTST_ir *a)
+{
+    prt("btst\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* bnot rs, dsp[rd] */
+static bool trans_BNOT_rm(DisasContext *ctx, arg_BNOT_rm *a)
+{
+    BOP_RM(not);
+}
+
+/* bnot rs, rd */
+static bool trans_BNOT_rr(DisasContext *ctx, arg_BNOT_rr *a)
+{
+    prt("bnot\tr%d, r%d", a->rs, a->rd);
+    return true;
+}
+
+/* bnot #imm, dsp[rd] */
+static bool trans_BNOT_im(DisasContext *ctx, arg_BNOT_im *a)
+{
+    BOP_IM(not, a->rs);
+}
+
+/* bnot #imm, rd */
+static bool trans_BNOT_ir(DisasContext *ctx, arg_BNOT_ir *a)
+{
+    prt("bnot\t#%d, r%d", a->imm, a->rd);
+    return true;
+}
+
+/* bmcond #imm, dsp[rd] */
+static bool trans_BMCnd_im(DisasContext *ctx, arg_BMCnd_im *a)
+{
+    char dsp[8];
+
+    rx_index_addr(ctx, dsp, a->ld, RX_MEMORY_BYTE);
+    prt("bm%s\t#%d, %s[r%d]", cond[a->cd], a->imm, dsp, a->rd);
+    return true;
+}
+
+/* bmcond #imm, rd */
+static bool trans_BMCnd_ir(DisasContext *ctx, arg_BMCnd_ir *a)
+{
+    prt("bm%s\t#%d, r%d", cond[a->cd], a->imm, a->rd);
+    return true;
+}
+
+/* clrpsw psw */
+static bool trans_CLRPSW(DisasContext *ctx, arg_CLRPSW *a)
+{
+    prt("clrpsw\t%c", psw[a->cb]);
+    return true;
+}
+
+/* setpsw psw */
+static bool trans_SETPSW(DisasContext *ctx, arg_SETPSW *a)
+{
+    prt("setpsw\t%c", psw[a->cb]);
+    return true;
+}
+
+/* mvtipl #imm */
+static bool trans_MVTIPL(DisasContext *ctx, arg_MVTIPL *a)
+{
+    prt("movtipl\t#%d", a->imm);
+    return true;
+}
+
+/* mvtc #imm, rd */
+static bool trans_MVTC_i(DisasContext *ctx, arg_MVTC_i *a)
+{
+    prt("mvtc\t#0x%08x, %s", a->imm, rx_crname(a->cr));
+    return true;
+}
+
+/* mvtc rs, rd */
+static bool trans_MVTC_r(DisasContext *ctx, arg_MVTC_r *a)
+{
+    prt("mvtc\tr%d, %s", a->rs, rx_crname(a->cr));
+    return true;
+}
+
+/* mvfc rs, rd */
+static bool trans_MVFC(DisasContext *ctx, arg_MVFC *a)
+{
+    prt("mvfc\t%s, r%d", rx_crname(a->cr), a->rd);
+    return true;
+}
+
+/* rtfi */
+static bool trans_RTFI(DisasContext *ctx, arg_RTFI *a)
+{
+    prt("rtfi");
+    return true;
+}
+
+/* rte */
+static bool trans_RTE(DisasContext *ctx, arg_RTE *a)
+{
+    prt("rte");
+    return true;
+}
+
+/* brk */
+static bool trans_BRK(DisasContext *ctx, arg_BRK *a)
+{
+    prt("brk");
+    return true;
+}
+
+/* int #imm */
+static bool trans_INT(DisasContext *ctx, arg_INT *a)
+{
+    prt("int\t#%d", a->imm);
+    return true;
+}
+
+/* wait */
+static bool trans_WAIT(DisasContext *ctx, arg_WAIT *a)
+{
+    prt("wait");
+    return true;
+}
+
+/* sccnd.[bwl] rd */
+/* sccnd.[bwl] dsp:[rd] */
+static bool trans_SCCnd(DisasContext *ctx, arg_SCCnd *a)
+{
+    if (a->ld < 3) {
+        char dsp[8];
+        rx_index_addr(ctx, dsp, a->sz, a->ld);
+        prt("sc%s.%c\t%s[r%d]", cond[a->cd], size[a->sz], dsp, a->rd);
+    } else {
+        prt("sc%s.%c\tr%d", cond[a->cd], size[a->sz], a->rd);
+    }
+    return true;
+}
+
+int print_insn_rx(bfd_vma addr, disassemble_info *dis)
+{
+    DisasContext ctx;
+    uint32_t insn;
+    int i;
+
+    ctx.dis = dis;
+    ctx.pc = ctx.addr = addr;
+    ctx.len = 0;
+
+    insn = decode_load(&ctx);
+    if (!decode(&ctx, insn)) {
+        ctx.dis->fprintf_func(ctx.dis->stream, ".byte\t");
+        for (i = 0; i < ctx.addr - addr; i++) {
+            if (i > 0) {
+                ctx.dis->fprintf_func(ctx.dis->stream, ",");
+            }
+            ctx.dis->fprintf_func(ctx.dis->stream, "0x%02x", insn >> 24);
+            insn <<= 8;
+        }
+    }
+    return ctx.addr - addr;
+}
diff --git a/target/rx/gdbstub.c b/target/rx/gdbstub.c
new file mode 100644 (file)
index 0000000..9391e81
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * RX gdb server stub
+ *
+ * Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/gdbstub.h"
+
+int rx_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
+{
+    RXCPU *cpu = RXCPU(cs);
+    CPURXState *env = &cpu->env;
+
+    switch (n) {
+    case 0 ... 15:
+        return gdb_get_regl(mem_buf, env->regs[n]);
+    case 16:
+        return gdb_get_regl(mem_buf, (env->psw_u) ? env->regs[0] : env->usp);
+    case 17:
+        return gdb_get_regl(mem_buf, (!env->psw_u) ? env->regs[0] : env->isp);
+    case 18:
+        return gdb_get_regl(mem_buf, rx_cpu_pack_psw(env));
+    case 19:
+        return gdb_get_regl(mem_buf, env->pc);
+    case 20:
+        return gdb_get_regl(mem_buf, env->intb);
+    case 21:
+        return gdb_get_regl(mem_buf, env->bpsw);
+    case 22:
+        return gdb_get_regl(mem_buf, env->bpc);
+    case 23:
+        return gdb_get_regl(mem_buf, env->fintv);
+    case 24:
+        return gdb_get_regl(mem_buf, env->fpsw);
+    case 25:
+        return 0;
+    }
+    return 0;
+}
+
+int rx_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
+{
+    RXCPU *cpu = RXCPU(cs);
+    CPURXState *env = &cpu->env;
+    uint32_t psw;
+    switch (n) {
+    case 0 ... 15:
+        env->regs[n] = ldl_p(mem_buf);
+        if (n == 0) {
+            if (env->psw_u) {
+                env->usp = env->regs[0];
+            } else {
+                env->isp = env->regs[0];
+            }
+        }
+        break;
+    case 16:
+        env->usp = ldl_p(mem_buf);
+        if (env->psw_u) {
+            env->regs[0] = ldl_p(mem_buf);
+        }
+        break;
+    case 17:
+        env->isp = ldl_p(mem_buf);
+        if (!env->psw_u) {
+            env->regs[0] = ldl_p(mem_buf);
+        }
+        break;
+    case 18:
+        psw = ldl_p(mem_buf);
+        rx_cpu_unpack_psw(env, psw, 1);
+        break;
+    case 19:
+        env->pc = ldl_p(mem_buf);
+        break;
+    case 20:
+        env->intb = ldl_p(mem_buf);
+        break;
+    case 21:
+        env->bpsw = ldl_p(mem_buf);
+        break;
+    case 22:
+        env->bpc = ldl_p(mem_buf);
+        break;
+    case 23:
+        env->fintv = ldl_p(mem_buf);
+        break;
+    case 24:
+        env->fpsw = ldl_p(mem_buf);
+        break;
+    case 25:
+        return 8;
+    default:
+        return 0;
+    }
+
+    return 4;
+}
diff --git a/target/rx/helper.c b/target/rx/helper.c
new file mode 100644 (file)
index 0000000..a6a337a
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ *  RX emulation
+ *
+ *  Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/bitops.h"
+#include "cpu.h"
+#include "exec/log.h"
+#include "exec/cpu_ldst.h"
+#include "sysemu/sysemu.h"
+#include "hw/irq.h"
+
+void rx_cpu_unpack_psw(CPURXState *env, uint32_t psw, int rte)
+{
+    if (env->psw_pm == 0) {
+        env->psw_ipl = FIELD_EX32(psw, PSW, IPL);
+        if (rte) {
+            /* PSW.PM can write RTE and RTFI */
+            env->psw_pm = FIELD_EX32(psw, PSW, PM);
+        }
+        env->psw_u = FIELD_EX32(psw, PSW, U);
+        env->psw_i = FIELD_EX32(psw, PSW, I);
+    }
+    env->psw_o = FIELD_EX32(psw, PSW, O) << 31;
+    env->psw_s = FIELD_EX32(psw, PSW, S) << 31;
+    env->psw_z = 1 - FIELD_EX32(psw, PSW, Z);
+    env->psw_c = FIELD_EX32(psw, PSW, C);
+}
+
+#define INT_FLAGS (CPU_INTERRUPT_HARD | CPU_INTERRUPT_FIR)
+void rx_cpu_do_interrupt(CPUState *cs)
+{
+    RXCPU *cpu = RXCPU(cs);
+    CPURXState *env = &cpu->env;
+    int do_irq = cs->interrupt_request & INT_FLAGS;
+    uint32_t save_psw;
+
+    env->in_sleep = 0;
+
+    if (env->psw_u) {
+        env->usp = env->regs[0];
+    } else {
+        env->isp = env->regs[0];
+    }
+    save_psw = rx_cpu_pack_psw(env);
+    env->psw_pm = env->psw_i = env->psw_u = 0;
+
+    if (do_irq) {
+        if (do_irq & CPU_INTERRUPT_FIR) {
+            env->bpc = env->pc;
+            env->bpsw = save_psw;
+            env->pc = env->fintv;
+            env->psw_ipl = 15;
+            cs->interrupt_request &= ~CPU_INTERRUPT_FIR;
+            qemu_set_irq(env->ack, env->ack_irq);
+            qemu_log_mask(CPU_LOG_INT, "fast interrupt raised\n");
+        } else if (do_irq & CPU_INTERRUPT_HARD) {
+            env->isp -= 4;
+            cpu_stl_data(env, env->isp, save_psw);
+            env->isp -= 4;
+            cpu_stl_data(env, env->isp, env->pc);
+            env->pc = cpu_ldl_data(env, env->intb + env->ack_irq * 4);
+            env->psw_ipl = env->ack_ipl;
+            cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
+            qemu_set_irq(env->ack, env->ack_irq);
+            qemu_log_mask(CPU_LOG_INT,
+                          "interrupt 0x%02x raised\n", env->ack_irq);
+        }
+    } else {
+        uint32_t vec = cs->exception_index;
+        const char *expname = "unknown exception";
+
+        env->isp -= 4;
+        cpu_stl_data(env, env->isp, save_psw);
+        env->isp -= 4;
+        cpu_stl_data(env, env->isp, env->pc);
+
+        if (vec < 0x100) {
+            env->pc = cpu_ldl_data(env, 0xffffffc0 + vec * 4);
+        } else {
+            env->pc = cpu_ldl_data(env, env->intb + (vec & 0xff) * 4);
+        }
+        switch (vec) {
+        case 20:
+            expname = "privilege violation";
+            break;
+        case 21:
+            expname = "access exception";
+            break;
+        case 23:
+            expname = "illegal instruction";
+            break;
+        case 25:
+            expname = "fpu exception";
+            break;
+        case 30:
+            expname = "non-maskable interrupt";
+            break;
+        case 0x100 ... 0x1ff:
+            expname = "unconditional trap";
+        }
+        qemu_log_mask(CPU_LOG_INT, "exception 0x%02x [%s] raised\n",
+                      (vec & 0xff), expname);
+    }
+    env->regs[0] = env->isp;
+}
+
+bool rx_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
+{
+    RXCPU *cpu = RXCPU(cs);
+    CPURXState *env = &cpu->env;
+    int accept = 0;
+    /* hardware interrupt (Normal) */
+    if ((interrupt_request & CPU_INTERRUPT_HARD) &&
+        env->psw_i && (env->psw_ipl < env->req_ipl)) {
+        env->ack_irq = env->req_irq;
+        env->ack_ipl = env->req_ipl;
+        accept = 1;
+    }
+    /* hardware interrupt (FIR) */
+    if ((interrupt_request & CPU_INTERRUPT_FIR) &&
+        env->psw_i && (env->psw_ipl < 15)) {
+        accept = 1;
+    }
+    if (accept) {
+        rx_cpu_do_interrupt(cs);
+        return true;
+    }
+    return false;
+}
+
+hwaddr rx_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
+{
+    return addr;
+}
diff --git a/target/rx/helper.h b/target/rx/helper.h
new file mode 100644 (file)
index 0000000..f0b7ebb
--- /dev/null
@@ -0,0 +1,31 @@
+DEF_HELPER_1(raise_illegal_instruction, noreturn, env)
+DEF_HELPER_1(raise_access_fault, noreturn, env)
+DEF_HELPER_1(raise_privilege_violation, noreturn, env)
+DEF_HELPER_1(wait, noreturn, env)
+DEF_HELPER_1(debug, noreturn, env)
+DEF_HELPER_2(rxint, noreturn, env, i32)
+DEF_HELPER_1(rxbrk, noreturn, env)
+DEF_HELPER_FLAGS_3(fadd, TCG_CALL_NO_WG, f32, env, f32, f32)
+DEF_HELPER_FLAGS_3(fsub, TCG_CALL_NO_WG, f32, env, f32, f32)
+DEF_HELPER_FLAGS_3(fmul, TCG_CALL_NO_WG, f32, env, f32, f32)
+DEF_HELPER_FLAGS_3(fdiv, TCG_CALL_NO_WG, f32, env, f32, f32)
+DEF_HELPER_FLAGS_3(fcmp, TCG_CALL_NO_WG, void, env, f32, f32)
+DEF_HELPER_FLAGS_2(ftoi, TCG_CALL_NO_WG, i32, env, f32)
+DEF_HELPER_FLAGS_2(round, TCG_CALL_NO_WG, i32, env, f32)
+DEF_HELPER_FLAGS_2(itof, TCG_CALL_NO_WG, f32, env, i32)
+DEF_HELPER_2(set_fpsw, void, env, i32)
+DEF_HELPER_FLAGS_2(racw, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_FLAGS_2(set_psw_rte, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_FLAGS_2(set_psw, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_1(pack_psw, i32, env)
+DEF_HELPER_FLAGS_3(div, TCG_CALL_NO_WG, i32, env, i32, i32)
+DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i32)
+DEF_HELPER_FLAGS_1(scmpu, TCG_CALL_NO_WG, void, env)
+DEF_HELPER_1(smovu, void, env)
+DEF_HELPER_1(smovf, void, env)
+DEF_HELPER_1(smovb, void, env)
+DEF_HELPER_2(sstr, void, env, i32)
+DEF_HELPER_FLAGS_2(swhile, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_FLAGS_2(suntil, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_FLAGS_2(rmpa, TCG_CALL_NO_WG, void, env, i32)
+DEF_HELPER_1(satr, void, env)
diff --git a/target/rx/insns.decode b/target/rx/insns.decode
new file mode 100644 (file)
index 0000000..232a61f
--- /dev/null
@@ -0,0 +1,621 @@
+#
+# Renesas RX instruction decode definitions.
+#
+# Copyright (c) 2019 Richard Henderson <richard.henderson@linaro.org>
+# Copyright (c) 2019 Yoshinori Sato <ysato@users.sourceforge.jp>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, see <http://www.gnu.org/licenses/>.
+#
+
+&bcnd          cd dsp sz
+&jdsp          dsp sz
+&jreg          rs
+&rr            rd rs
+&ri            rd imm
+&rrr           rd rs rs2
+&rri           rd imm rs2
+&rm            rd rs ld mi
+&mi            rs ld mi imm
+&mr            rs ld mi rs2
+&mcnd          ld sz rd cd
+########
+%b1_bdsp       24:3 !function=bdsp_s
+
+@b1_bcnd_s     .... cd:1 ...                   &bcnd dsp=%b1_bdsp sz=1
+@b1_bra_s      .... ....                       &jdsp dsp=%b1_bdsp sz=1
+
+%b2_r_0                16:4
+%b2_li_2       18:2 !function=li
+%b2_li_8       24:2 !function=li
+%b2_dsp5_3     23:4 19:1
+
+@b2_rds                .... .... .... rd:4             &rr rs=%b2_r_0
+@b2_rds_li     .... .... .... rd:4             &rri rs2=%b2_r_0 imm=%b2_li_8
+@b2_rds_uimm4  .... .... imm:4 rd:4            &rri rs2=%b2_r_0
+@b2_rs2_uimm4  .... .... imm:4 rs2:4           &rri rd=0
+@b2_rds_imm5   .... ... imm:5 rd:4             &rri rs2=%b2_r_0
+@b2_rd_rs_li   .... .... rs2:4 rd:4            &rri imm=%b2_li_8
+@b2_rd_ld_ub   .... .. ld:2 rs:4 rd:4          &rm mi=4
+@b2_ld_imm3    .... .. ld:2 rs:4 . imm:3       &mi mi=4
+@b2_bcnd_b     .... cd:4 dsp:s8                &bcnd sz=2
+@b2_bra_b      .... .... dsp:s8                &jdsp sz=2
+
+########
+
+%b3_r_0                8:4
+%b3_li_10      18:2 !function=li
+%b3_dsp5_8     23:1 16:4
+%b3_bdsp       8:s8 16:8
+
+@b3_rd_rs      .... .... .... .... rs:4 rd:4           &rr
+@b3_rs_rd      .... .... .... .... rd:4 rs:4           &rr
+@b3_rd_li      .... .... .... .... .... rd:4 \
+               &rri rs2=%b3_r_0 imm=%b3_li_10
+@b3_rd_ld      .... .... mi:2 .... ld:2 rs:4 rd:4      &rm
+@b3_rd_ld_ub   .... .... .... .. ld:2 rs:4 rd:4        &rm mi=4
+@b3_rd_ld_ul   .... .... .... .. ld:2 rs:4 rd:4        &rm mi=2
+@b3_rd_rs_rs2  .... .... .... rd:4 rs:4 rs2:4          &rrr
+@b3_rds_imm5   .... .... ....... imm:5 rd:4            &rri rs2=%b3_r_0
+@b3_rd_rs_imm5 .... .... ... imm:5 rs2:4 rd:4          &rri
+@b3_bcnd_w     .... ... cd:1 .... .... .... ....       &bcnd dsp=%b3_bdsp sz=3
+@b3_bra_w      .... .... .... .... .... ....           &jdsp dsp=%b3_bdsp sz=3
+@b3_ld_rd_rs   .... .... .... .. ld:2 rs:4 rd:4        &rm mi=0
+@b3_sz_ld_rd_cd        .... .... .... sz:2 ld:2 rd:4 cd:4      &mcnd
+
+########
+
+%b4_li_18      18:2 !function=li
+%b4_dsp_16     0:s8 8:8
+%b4_bdsp       0:s8 8:8 16:8
+
+@b4_rd_ldmi    .... .... mi:2 .... ld:2 .... .... rs:4 rd:4    &rm
+@b4_bra_a      .... .... .... .... .... .... .... .... \
+               &jdsp dsp=%b4_bdsp sz=4
+########
+# ABS rd
+ABS_rr         0111 1110 0010 ....                     @b2_rds
+# ABS rs, rd
+ABS_rr         1111 1100 0000 1111 .... ....           @b3_rd_rs
+
+# ADC #imm, rd
+ADC_ir         1111 1101 0111 ..00 0010 ....           @b3_rd_li
+# ADC rs, rd
+ADC_rr         1111 1100 0000 1011 .... ....           @b3_rd_rs
+# ADC dsp[rs].l, rd
+# Note only mi==2 allowed.
+ADC_mr         0000 0110 ..10 00.. 0000 0010 .... .... @b4_rd_ldmi
+
+# ADD #uimm4, rd
+ADD_irr                0110 0010 .... ....                     @b2_rds_uimm4
+# ADD #imm, rs, rd
+ADD_irr                0111 00.. .... ....                     @b2_rd_rs_li
+# ADD dsp[rs].ub, rd
+# ADD rs, rd
+ADD_mr         0100 10.. .... ....                     @b2_rd_ld_ub
+# ADD dsp[rs], rd
+ADD_mr         0000 0110 ..00 10.. .... ....           @b3_rd_ld
+# ADD rs, rs2, rd
+ADD_rrr                1111 1111 0010 .... .... ....           @b3_rd_rs_rs2
+
+# AND #uimm4, rd
+AND_ir         0110 0100 .... ....                     @b2_rds_uimm4
+# AND #imm, rd
+AND_ir         0111 01.. 0010 ....                     @b2_rds_li
+# AND dsp[rs].ub, rd
+# AND rs, rd
+AND_mr         0101 00.. .... ....                     @b2_rd_ld_ub
+# AND dsp[rs], rd
+AND_mr         0000 0110 ..01 00.. .... ....           @b3_rd_ld
+# AND rs, rs2, rd
+AND_rrr                1111 1111 0100 .... .... ....           @b3_rd_rs_rs2
+
+# BCLR #imm, dsp[rd]
+BCLR_im                1111 00.. .... 1...                     @b2_ld_imm3
+# BCLR #imm, rs
+BCLR_ir                0111 101. .... ....                     @b2_rds_imm5
+# BCLR rs, rd
+# BCLR rs, dsp[rd]
+{
+  BCLR_rr      1111 1100 0110 0111 .... ....           @b3_rs_rd
+  BCLR_rm      1111 1100 0110 01.. .... ....           @b3_rd_ld_ub
+}
+
+# BCnd.s dsp
+BCnd           0001 ....                               @b1_bcnd_s
+# BRA.b dsp
+# BCnd.b dsp
+{
+  BRA          0010 1110 .... ....                     @b2_bra_b
+  BCnd         0010 .... .... ....                     @b2_bcnd_b
+}
+
+# BCnd.w dsp
+BCnd           0011 101 . .... .... .... ....          @b3_bcnd_w
+
+# BNOT #imm, dsp[rd]
+# BMCnd #imm, dsp[rd]
+{
+  BNOT_im      1111 1100 111 imm:3 ld:2 rs:4 1111
+  BMCnd_im     1111 1100 111 imm:3 ld:2 rd:4 cd:4
+}
+
+# BNOT #imm, rd
+# BMCnd #imm, rd
+{
+  BNOT_ir      1111 1101 111 imm:5 1111 rd:4
+  BMCnd_ir     1111 1101 111 imm:5 cd:4 rd:4
+}
+
+# BNOT rs, rd
+# BNOT rs, dsp[rd]
+{
+  BNOT_rr      1111 1100 0110 1111 .... ....           @b3_rs_rd
+  BNOT_rm      1111 1100 0110 11.. .... ....           @b3_rd_ld_ub
+}
+
+# BRA.s dsp
+BRA            0000 1 ...                              @b1_bra_s
+# BRA.w dsp
+BRA            0011 1000 .... .... .... ....           @b3_bra_w
+# BRA.a dsp
+BRA            0000 0100 .... .... .... .... .... ....         @b4_bra_a
+# BRA.l rs
+BRA_l          0111 1111 0100 rd:4
+
+BRK            0000 0000
+
+# BSET #imm, dsp[rd]
+BSET_im                1111 00.. .... 0...                     @b2_ld_imm3
+# BSET #imm, rd
+BSET_ir                0111 100. .... ....                     @b2_rds_imm5
+# BSET rs, rd
+# BSET rs, dsp[rd]
+{
+  BSET_rr      1111 1100 0110 0011 .... ....           @b3_rs_rd
+  BSET_rm      1111 1100 0110 00.. .... ....           @b3_rd_ld_ub
+}
+
+# BSR.w dsp
+BSR            0011 1001 .... .... .... ....           @b3_bra_w
+# BSR.a dsp
+BSR            0000 0101 .... .... .... .... .... ....         @b4_bra_a
+# BSR.l rs
+BSR_l          0111 1111 0101 rd:4
+
+# BSET #imm, dsp[rd]
+BTST_im                1111 01.. .... 0...                     @b2_ld_imm3
+# BSET #imm, rd
+BTST_ir                0111 110. .... ....                     @b2_rds_imm5
+# BSET rs, rd
+# BSET rs, dsp[rd]
+{
+  BTST_rr      1111 1100 0110 1011 .... ....           @b3_rs_rd
+  BTST_rm      1111 1100 0110 10.. .... ....           @b3_rd_ld_ub
+}
+
+# CLRSPW psw
+CLRPSW         0111 1111 1011 cb:4
+
+# CMP #uimm4, rs2
+CMP_ir         0110 0001 .... ....                     @b2_rs2_uimm4
+# CMP #uimm8, rs2
+CMP_ir         0111 0101 0101 rs2:4 imm:8              &rri rd=0
+# CMP #imm, rs2
+CMP_ir         0111 01.. 0000 rs2:4                    &rri imm=%b2_li_8 rd=0
+# CMP dsp[rs].ub, rs2
+# CMP rs, rs2
+CMP_mr         0100 01.. .... ....                     @b2_rd_ld_ub
+# CMP dsp[rs], rs2
+CMP_mr         0000 0110 ..00 01.. .... ....           @b3_rd_ld
+
+# DIV #imm, rd
+DIV_ir         1111 1101 0111 ..00 1000 ....           @b3_rd_li
+# DIV dsp[rs].ub, rd
+# DIV rs, rd
+DIV_mr         1111 1100 0010 00.. .... ....           @b3_rd_ld_ub
+# DIV dsp[rs], rd
+DIV_mr         0000 0110 ..10 00.. 0000 1000 .... .... @b4_rd_ldmi
+
+# DIVU #imm, rd
+DIVU_ir                1111 1101 0111 ..00 1001 ....           @b3_rd_li
+# DIVU dsp[rs].ub, rd
+# DIVU rs, rd
+DIVU_mr                1111 1100 0010 01.. .... ....           @b3_rd_ld_ub
+# DIVU dsp[rs], rd
+DIVU_mr                0000 0110 ..10 00.. 0000 1001 .... .... @b4_rd_ldmi
+
+# EMUL #imm, rd
+EMUL_ir                1111 1101 0111 ..00 0110 ....           @b3_rd_li
+# EMUL dsp[rs].ub, rd
+# EMUL rs, rd
+EMUL_mr                1111 1100 0001 10.. .... ....           @b3_rd_ld_ub
+# EMUL dsp[rs], rd
+EMUL_mr                0000 0110 ..10 00.. 0000 0110 .... .... @b4_rd_ldmi
+
+# EMULU #imm, rd
+EMULU_ir       1111 1101 0111 ..00 0111 ....           @b3_rd_li
+# EMULU dsp[rs].ub, rd
+# EMULU rs, rd
+EMULU_mr       1111 1100 0001 11.. .... ....           @b3_rd_ld_ub
+# EMULU dsp[rs], rd
+EMULU_mr       0000 0110 ..10 00.. 0000 0111 .... .... @b4_rd_ldmi
+
+# FADD #imm, rd
+FADD_ir                1111 1101 0111 0010 0010 rd:4
+# FADD rs, rd
+# FADD dsp[rs], rd
+FADD_mr                1111 1100 1000 10.. .... ....           @b3_rd_ld_ul
+
+# FCMP #imm, rd
+FCMP_ir                1111 1101 0111 0010 0001 rd:4
+# FCMP rs, rd
+# FCMP dsp[rs], rd
+FCMP_mr                1111 1100 1000 01.. .... ....           @b3_rd_ld_ul
+
+# FDIV #imm, rd
+FDIV_ir                1111 1101 0111 0010 0100 rd:4
+# FDIV rs, rd
+# FDIV dsp[rs], rd
+FDIV_mr                1111 1100 1001 00.. .... ....           @b3_rd_ld_ul
+
+# FMUL #imm, rd
+FMUL_ir                1111 1101 0111 0010 0011 rd:4
+# FMUL rs, rd
+# FMUL dsp[rs], rd
+FMUL_mr                1111 1100 1000 11.. .... ....           @b3_rd_ld_ul
+
+# FSUB #imm, rd
+FSUB_ir                1111 1101 0111 0010 0000 rd:4
+# FSUB rs, rd
+# FSUB dsp[rs], rd
+FSUB_mr                1111 1100 1000 00.. .... ....           @b3_rd_ld_ul
+
+# FTOI rs, rd
+# FTOI dsp[rs], rd
+FTOI           1111 1100 1001 01.. .... ....           @b3_rd_ld_ul
+
+# INT #uimm8
+INT            0111 0101 0110 0000 imm:8
+
+# ITOF dsp[rs].ub, rd
+# ITOF rs, rd
+ITOF           1111 1100 0100 01.. .... ....           @b3_rd_ld_ub
+# ITOF dsp[rs], rd
+ITOF           0000 0110 ..10 00.. 0001 0001 .... .... @b4_rd_ldmi
+
+# JMP rs
+JMP            0111 1111 0000 rs:4                     &jreg
+# JSR rs
+JSR            0111 1111 0001 rs:4                     &jreg
+
+# MACHI rs, rs2
+MACHI          1111 1101 0000 0100 rs:4 rs2:4
+# MACLO rs, rs2
+MACLO          1111 1101 0000 0101 rs:4 rs2:4
+
+# MAX #imm, rd
+MAX_ir         1111 1101 0111 ..00 0100 ....           @b3_rd_li
+# MAX dsp[rs].ub, rd
+# MAX rs, rd
+MAX_mr         1111 1100 0001 00.. .... ....           @b3_rd_ld_ub
+# MAX dsp[rs], rd
+MAX_mr         0000 0110 ..10 00.. 0000 0100 .... .... @b4_rd_ldmi
+
+# MIN #imm, rd
+MIN_ir         1111 1101 0111 ..00 0101 ....           @b3_rd_li
+# MIN dsp[rs].ub, rd
+# MIN rs, rd
+MIN_mr         1111 1100 0001 01.. .... ....           @b3_rd_ld_ub
+# MIN dsp[rs], rd
+MIN_mr         0000 0110 ..10 00.. 0000 0101 .... .... @b4_rd_ldmi
+
+# MOV.b rs, dsp5[rd]
+MOV_rm         1000 0 .... rd:3 . rs:3                 dsp=%b2_dsp5_3 sz=0
+# MOV.w rs, dsp5[rd]
+MOV_rm         1001 0 .... rd:3 . rs:3                 dsp=%b2_dsp5_3 sz=1
+# MOV.l rs, dsp5[rd]
+MOV_rm         1010 0 .... rd:3 . rs:3                 dsp=%b2_dsp5_3 sz=2
+# MOV.b dsp5[rs], rd
+MOV_mr         1000 1 .... rs:3 . rd:3                 dsp=%b2_dsp5_3 sz=0
+# MOV.w dsp5[rs], rd
+MOV_mr         1001 1 .... rs:3 . rd:3                 dsp=%b2_dsp5_3 sz=1
+# MOV.l dsp5[rs], rd
+MOV_mr         1010 1 .... rs:3 . rd:3                 dsp=%b2_dsp5_3 sz=2
+# MOV.l #uimm4, rd
+MOV_ir         0110 0110 imm:4 rd:4
+# MOV.b #imm8, dsp5[rd]
+MOV_im         0011 1100 . rd:3 .... imm:8             sz=0 dsp=%b3_dsp5_8
+# MOV.w #imm8, dsp5[rd]
+MOV_im         0011 1101 . rd:3 .... imm:8             sz=1 dsp=%b3_dsp5_8
+# MOV.l #imm8, dsp5[rd]
+MOV_im         0011 1110 . rd:3 .... imm:8             sz=2 dsp=%b3_dsp5_8
+# MOV.l #imm8, rd
+MOV_ir         0111 0101 0100 rd:4 imm:8
+# MOV.l #mm8, rd
+MOV_ir         1111 1011 rd:4 .. 10                    imm=%b2_li_2
+# MOV.<bwl> #imm, [rd]
+MOV_im         1111 1000 rd:4 .. sz:2                  dsp=0 imm=%b2_li_2
+# MOV.<bwl> #imm, dsp8[rd]
+MOV_im         1111 1001 rd:4 .. sz:2 dsp:8            imm=%b3_li_10
+# MOV.<bwl> #imm, dsp16[rd]
+MOV_im         1111 1010 rd:4 .. sz:2 .... .... .... .... \
+               imm=%b4_li_18 dsp=%b4_dsp_16
+# MOV.<bwl> [ri,rb], rd
+MOV_ar         1111 1110 01 sz:2 ri:4 rb:4 rd:4
+# MOV.<bwl> rs, [ri,rb]
+MOV_ra         1111 1110 00 sz:2 ri:4 rb:4 rs:4
+# Note ldd=3 and lds=3 indicate register src or dst
+# MOV.b rs, rd
+# MOV.b rs, dsp[rd]
+# MOV.b dsp[rs], rd
+# MOV.b dsp[rs], dsp[rd]
+MOV_mm         1100 ldd:2 lds:2 rs:4 rd:4              sz=0
+# MOV.w rs, rd
+# MOV.w rs, dsp[rd]
+# MOV.w dsp[rs], rd
+# MOV.w dsp[rs], dsp[rd]
+MOV_mm         1101 ldd:2 lds:2 rs:4 rd:4              sz=1
+# MOV.l rs, rd
+# MOV.l rs, dsp[rd]
+# MOV.l dsp[rs], rd
+# MOV.l dsp[rs], dsp[rd]
+MOV_mm         1110 ldd:2 lds:2 rs:4 rd:4              sz=2
+# MOV.l rs, [rd+]
+# MOV.l rs, [-rd]
+MOV_rp         1111 1101 0010 0 ad:1 sz:2 rd:4 rs:4
+# MOV.l [rs+], rd
+# MOV.l [-rs], rd
+MOV_pr         1111 1101 0010 1 ad:1 sz:2 rd:4 rs:4
+
+# MOVU.<bw> dsp5[rs], rd
+MOVU_mr                1011 sz:1 ... . rs:3 . rd:3             dsp=%b2_dsp5_3
+# MOVU.<bw> [rs], rd
+MOVU_mr                0101 1 sz:1 00 rs:4 rd:4                dsp=0
+# MOVU.<bw> dsp8[rs], rd
+MOVU_mr                0101 1 sz:1 01 rs:4 rd:4 dsp:8
+# MOVU.<bw> dsp16[rs], rd
+MOVU_mr                0101 1 sz:1 10 rs:4 rd:4 .... .... .... .... dsp=%b4_dsp_16
+# MOVU.<bw> rs, rd
+MOVU_rr                0101 1 sz:1 11 rs:4 rd:4
+# MOVU.<bw> [ri, rb], rd
+MOVU_ar                1111 1110 110 sz:1 ri:4 rb:4 rd:4
+# MOVU.<bw> [rs+], rd
+MOVU_pr                1111 1101 0011 1 ad:1 0 sz:1 rd:4 rs:4
+
+# MUL #uimm4, rd
+MUL_ir         0110 0011 .... ....                     @b2_rds_uimm4
+# MUL #imm4, rd
+MUL_ir         0111 01.. 0001 ....                     @b2_rds_li
+# MUL dsp[rs].ub, rd
+# MUL rs, rd
+MUL_mr         0100 11.. .... ....                     @b2_rd_ld_ub
+# MUL dsp[rs], rd
+MUL_mr         0000 0110 ..00 11.. .... ....           @b3_rd_ld
+# MOV rs, rs2, rd
+MUL_rrr                1111 1111 0011 .... .... ....           @b3_rd_rs_rs2
+
+# MULHI rs, rs2
+MULHI          1111 1101 0000 0000 rs:4 rs2:4
+# MULLO rs, rs2
+MULLO          1111 1101 0000 0001 rs:4 rs2:4
+
+# MVFACHI rd
+MVFACHI                1111 1101 0001 1111 0000 rd:4
+# MVFACMI rd
+MVFACMI                1111 1101 0001 1111 0010 rd:4
+
+# MVFC cr, rd
+MVFC           1111 1101 0110 1010 cr:4 rd:4
+
+# MVTACHI rs
+MVTACHI                1111 1101 0001 0111 0000 rs:4
+# MVTACLO rs
+MVTACLO                1111 1101 0001 0111 0001 rs:4
+
+# MVTC #imm, cr
+MVTC_i         1111 1101 0111 ..11 0000 cr:4           imm=%b3_li_10
+# MVTC rs, cr
+MVTC_r         1111 1101 0110 1000 rs:4 cr:4
+
+# MVTIPL #imm
+MVTIPL         0111 0101 0111 0000 0000 imm:4
+
+# NEG rd
+NEG_rr         0111 1110 0001 ....                     @b2_rds
+# NEG rs, rd
+NEG_rr         1111 1100 0000 0111 .... ....           @b3_rd_rs
+
+NOP            0000 0011
+
+# NOT rd
+NOT_rr         0111 1110 0000 ....                     @b2_rds
+# NOT rs, rd
+NOT_rr         1111 1100 0011 1011 .... ....           @b3_rd_rs
+
+# OR #uimm4, rd
+OR_ir          0110 0101 .... ....                     @b2_rds_uimm4
+# OR #imm, rd
+OR_ir          0111 01.. 0011 ....                     @b2_rds_li
+# OR dsp[rs].ub, rd
+# OR rs, rd
+OR_mr          0101 01.. .... ....                     @b2_rd_ld_ub
+# OR dsp[rs], rd
+OR_mr          0000 0110 .. 0101 .. .... ....          @b3_rd_ld
+# OR rs, rs2, rd
+OR_rrr         1111 1111 0101 .... .... ....           @b3_rd_rs_rs2
+
+# POP cr
+POPC           0111 1110 1110 cr:4
+# POP rd-rd2
+POPM           0110 1111 rd:4 rd2:4
+
+# POP rd
+# PUSH.<bwl> rs
+{
+  POP          0111 1110 1011 rd:4
+  PUSH_r       0111 1110 10 sz:2 rs:4
+}
+# PUSH.<bwl> dsp[rs]
+PUSH_m         1111 01 ld:2 rs:4 10 sz:2
+# PUSH cr
+PUSHC          0111 1110 1100 cr:4
+# PUSHM rs-rs2
+PUSHM          0110 1110 rs:4 rs2:4
+
+# RACW #imm
+RACW           1111 1101 0001 1000 000 imm:1 0000
+
+# REVL rs,rd
+REVL           1111 1101 0110 0111 .... ....           @b3_rd_rs
+# REVW rs,rd
+REVW           1111 1101 0110 0101 .... ....           @b3_rd_rs
+
+# SMOVF
+# RPMA.<bwl>
+{
+  SMOVF                0111 1111 1000 1111
+  RMPA         0111 1111 1000 11 sz:2
+}
+
+# ROLC rd
+ROLC           0111 1110 0101 ....                     @b2_rds
+# RORC rd
+RORC           0111 1110 0100 ....                     @b2_rds
+
+# ROTL #imm, rd
+ROTL_ir                1111 1101 0110 111. .... ....           @b3_rds_imm5
+# ROTL rs, rd
+ROTL_rr                1111 1101 0110 0110 .... ....           @b3_rd_rs
+
+# ROTR #imm, rd
+ROTR_ir                1111 1101 0110 110. .... ....           @b3_rds_imm5
+# ROTR #imm, rd
+ROTR_rr                1111 1101 0110 0100 .... ....           @b3_rd_rs
+
+# ROUND rs,rd
+# ROUND dsp[rs],rd
+ROUND          1111 1100 1001 10 .. .... ....          @b3_ld_rd_rs
+
+RTE            0111 1111 1001 0101
+
+RTFI           0111 1111 1001 0100
+
+RTS            0000 0010
+
+# RTSD #imm
+RTSD_i         0110 0111 imm:8
+# RTSD #imm, rd-rd2
+RTSD_irr       0011 1111 rd:4 rd2:4 imm:8
+
+# SAT rd
+SAT            0111 1110 0011 ....                     @b2_rds
+# SATR
+SATR           0111 1111 1001 0011
+
+# SBB rs, rd
+SBB_rr         1111 1100 0000 0011 .... ....           @b3_rd_rs
+# SBB dsp[rs].l, rd
+# Note only mi==2 allowed.
+SBB_mr         0000 0110 ..10 00.. 0000 0000 .... .... @b4_rd_ldmi
+
+# SCCnd dsp[rd]
+# SCCnd rd
+SCCnd          1111 1100 1101 .... .... ....           @b3_sz_ld_rd_cd
+
+# SETPSW psw
+SETPSW         0111 1111 1010 cb:4
+
+# SHAR #imm, rd
+SHAR_irr       0110 101. .... ....                     @b2_rds_imm5
+# SHAR #imm, rs, rd
+SHAR_irr       1111 1101 101. .... .... ....           @b3_rd_rs_imm5
+# SHAR rs, rd
+SHAR_rr                1111 1101 0110 0001 .... ....           @b3_rd_rs
+
+# SHLL #imm, rd
+SHLL_irr       0110 110. .... ....                     @b2_rds_imm5
+# SHLL #imm, rs, rd
+SHLL_irr       1111 1101 110. .... .... ....           @b3_rd_rs_imm5
+# SHLL rs, rd
+SHLL_rr                1111 1101 0110 0010 .... ....           @b3_rd_rs
+
+# SHLR #imm, rd
+SHLR_irr       0110 100. .... ....                     @b2_rds_imm5
+# SHLR #imm, rs, rd
+SHLR_irr       1111 1101 100. .... .... ....           @b3_rd_rs_imm5
+# SHLR rs, rd
+SHLR_rr                1111 1101 0110 0000 .... ....           @b3_rd_rs
+
+# SMOVB
+# SSTR.<bwl>
+{
+  SMOVB                0111 1111 1000 1011
+  SSTR         0111 1111 1000 10 sz:2
+}
+
+# STNZ #imm, rd
+STNZ           1111 1101 0111 ..00 1111 ....           @b3_rd_li
+# STZ #imm, rd
+STZ            1111 1101 0111 ..00 1110 ....           @b3_rd_li
+
+# SUB #uimm4, rd
+SUB_ir         0110 0000 .... ....                     @b2_rds_uimm4
+# SUB dsp[rs].ub, rd
+# SUB rs, rd
+SUB_mr         0100 00.. .... ....                     @b2_rd_ld_ub
+# SUB dsp[rs], rd
+SUB_mr         0000 0110 ..00 00.. .... ....           @b3_rd_ld
+# SUB rs, rs2, rd
+SUB_rrr                1111 1111 0000 .... .... ....           @b3_rd_rs_rs2
+
+# SCMPU
+# SUNTIL.<bwl>
+{
+  SCMPU                0111 1111 1000 0011
+  SUNTIL       0111 1111 1000 00 sz:2
+}
+
+# SMOVU
+# SWHILE.<bwl>
+{
+  SMOVU                0111 1111 1000 0111
+  SWHILE       0111 1111 1000 01 sz:2
+}
+
+# TST #imm, rd
+TST_ir         1111 1101 0111 ..00 1100 ....           @b3_rd_li
+# TST dsp[rs].ub, rd
+# TST rs, rd
+TST_mr         1111 1100 0011 00.. .... ....           @b3_rd_ld_ub
+# TST dsp[rs], rd
+TST_mr         0000 0110 ..10 00.. 0000 1100 .... .... @b4_rd_ldmi
+
+WAIT           0111 1111 1001 0110
+
+# XCHG rs, rd
+# XCHG dsp[rs].ub, rd
+{
+  XCHG_rr              1111 1100 0100 0011 .... ....           @b3_rd_rs
+  XCHG_mr              1111 1100 0100 00.. .... ....           @b3_rd_ld_ub
+}
+# XCHG dsp[rs], rd
+XCHG_mr                0000 0110 ..10 00.. 0001 0000 .... .... @b4_rd_ldmi
+
+# XOR #imm, rd
+XOR_ir         1111 1101 0111 ..00 1101 ....           @b3_rd_li
+# XOR dsp[rs].ub, rd
+# XOR rs, rd
+XOR_mr         1111 1100 0011 01.. .... ....           @b3_rd_ld_ub
+# XOR dsp[rs], rd
+XOR_mr         0000 0110 ..10 00.. 0000 1101 .... .... @b4_rd_ldmi
diff --git a/target/rx/op_helper.c b/target/rx/op_helper.c
new file mode 100644 (file)
index 0000000..f89d294
--- /dev/null
@@ -0,0 +1,470 @@
+/*
+ *  RX helper functions
+ *
+ *  Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/bitops.h"
+#include "cpu.h"
+#include "exec/exec-all.h"
+#include "exec/helper-proto.h"
+#include "exec/cpu_ldst.h"
+#include "fpu/softfloat.h"
+
+static inline void QEMU_NORETURN raise_exception(CPURXState *env, int index,
+                                                 uintptr_t retaddr);
+
+static void _set_psw(CPURXState *env, uint32_t psw, uint32_t rte)
+{
+    uint32_t prev_u;
+    prev_u = env->psw_u;
+    rx_cpu_unpack_psw(env, psw, rte);
+    if (prev_u != env->psw_u) {
+        /* switch r0  */
+        if (env->psw_u) {
+            env->isp = env->regs[0];
+            env->regs[0] = env->usp;
+        } else {
+            env->usp = env->regs[0];
+            env->regs[0] = env->isp;
+        }
+    }
+}
+
+void helper_set_psw(CPURXState *env, uint32_t psw)
+{
+    _set_psw(env, psw, 0);
+}
+
+void helper_set_psw_rte(CPURXState *env, uint32_t psw)
+{
+    _set_psw(env, psw, 1);
+}
+
+uint32_t helper_pack_psw(CPURXState *env)
+{
+    return rx_cpu_pack_psw(env);
+}
+
+#define SET_FPSW(b)                                             \
+    do {                                                        \
+        env->fpsw = FIELD_DP32(env->fpsw, FPSW, C ## b, 1);     \
+        if (!FIELD_EX32(env->fpsw, FPSW, E ## b)) {             \
+            env->fpsw = FIELD_DP32(env->fpsw, FPSW, F ## b, 1); \
+        }                                                       \
+    } while (0)
+
+/* fp operations */
+static void update_fpsw(CPURXState *env, float32 ret, uintptr_t retaddr)
+{
+    int xcpt, cause, enable;
+
+    env->psw_z = ret & ~(1 << 31); /* mask sign bit */
+    env->psw_s = ret;
+
+    xcpt = get_float_exception_flags(&env->fp_status);
+
+    /* Clear the cause entries */
+    env->fpsw = FIELD_DP32(env->fpsw, FPSW, CAUSE, 0);
+
+    /* set FPSW */
+    if (unlikely(xcpt)) {
+        if (xcpt & float_flag_invalid) {
+            SET_FPSW(V);
+        }
+        if (xcpt & float_flag_divbyzero) {
+            SET_FPSW(Z);
+        }
+        if (xcpt & float_flag_overflow) {
+            SET_FPSW(O);
+        }
+        if (xcpt & float_flag_underflow) {
+            SET_FPSW(U);
+        }
+        if (xcpt & float_flag_inexact) {
+            SET_FPSW(X);
+        }
+        if ((xcpt & (float_flag_input_denormal
+                     | float_flag_output_denormal))
+            && !FIELD_EX32(env->fpsw, FPSW, DN)) {
+            env->fpsw = FIELD_DP32(env->fpsw, FPSW, CE, 1);
+        }
+
+        /* update FPSW_FLAG_S */
+        if (FIELD_EX32(env->fpsw, FPSW, FLAGS) != 0) {
+            env->fpsw = FIELD_DP32(env->fpsw, FPSW, FS, 1);
+        }
+
+        /* Generate an exception if enabled */
+        cause = FIELD_EX32(env->fpsw, FPSW, CAUSE);
+        enable = FIELD_EX32(env->fpsw, FPSW, ENABLE);
+        enable |= 1 << 5; /* CE always enabled */
+        if (cause & enable) {
+            raise_exception(env, 21, retaddr);
+        }
+    }
+}
+
+void helper_set_fpsw(CPURXState *env, uint32_t val)
+{
+    static const int roundmode[] = {
+        float_round_nearest_even,
+        float_round_to_zero,
+        float_round_up,
+        float_round_down,
+    };
+    uint32_t fpsw = env->fpsw;
+    fpsw |= 0x7fffff03;
+    val &= ~0x80000000;
+    fpsw &= val;
+    FIELD_DP32(fpsw, FPSW, FS, FIELD_EX32(fpsw, FPSW, FLAGS) != 0);
+    env->fpsw = fpsw;
+    set_float_rounding_mode(roundmode[FIELD_EX32(env->fpsw, FPSW, RM)],
+                            &env->fp_status);
+}
+
+#define FLOATOP(op, func)                                           \
+    float32 helper_##op(CPURXState *env, float32 t0, float32 t1)    \
+    {                                                               \
+        float32 ret;                                                \
+        ret = func(t0, t1, &env->fp_status);                        \
+        update_fpsw(env, *(uint32_t *)&ret, GETPC());               \
+        return ret;                                                 \
+    }
+
+FLOATOP(fadd, float32_add)
+FLOATOP(fsub, float32_sub)
+FLOATOP(fmul, float32_mul)
+FLOATOP(fdiv, float32_div)
+
+void helper_fcmp(CPURXState *env, float32 t0, float32 t1)
+{
+    int st;
+    st = float32_compare(t0, t1, &env->fp_status);
+    update_fpsw(env, 0, GETPC());
+    env->psw_z = 1;
+    env->psw_s = env->psw_o = 0;
+    switch (st) {
+    case float_relation_equal:
+        env->psw_z = 0;
+        break;
+    case float_relation_less:
+        env->psw_s = -1;
+        break;
+    case float_relation_unordered:
+        env->psw_o = -1;
+        break;
+    }
+}
+
+uint32_t helper_ftoi(CPURXState *env, float32 t0)
+{
+    uint32_t ret;
+    ret = float32_to_int32_round_to_zero(t0, &env->fp_status);
+    update_fpsw(env, ret, GETPC());
+    return ret;
+}
+
+uint32_t helper_round(CPURXState *env, float32 t0)
+{
+    uint32_t ret;
+    ret = float32_to_int32(t0, &env->fp_status);
+    update_fpsw(env, ret, GETPC());
+    return ret;
+}
+
+float32 helper_itof(CPURXState *env, uint32_t t0)
+{
+    float32 ret;
+    ret = int32_to_float32(t0, &env->fp_status);
+    update_fpsw(env, ret, GETPC());
+    return ret;
+}
+
+/* string operations */
+void helper_scmpu(CPURXState *env)
+{
+    uint8_t tmp0, tmp1;
+    if (env->regs[3] == 0) {
+        return;
+    }
+    while (env->regs[3] != 0) {
+        tmp0 = cpu_ldub_data_ra(env, env->regs[1]++, GETPC());
+        tmp1 = cpu_ldub_data_ra(env, env->regs[2]++, GETPC());
+        env->regs[3]--;
+        if (tmp0 != tmp1 || tmp0 == '\0') {
+            break;
+        }
+    }
+    env->psw_z = tmp0 - tmp1;
+    env->psw_c = (tmp0 >= tmp1);
+}
+
+static uint32_t (* const cpu_ldufn[])(CPUArchState *env,
+                                     target_ulong ptr,
+                                     uintptr_t retaddr) = {
+    cpu_ldub_data_ra, cpu_lduw_data_ra, cpu_ldl_data_ra,
+};
+
+static uint32_t (* const cpu_ldfn[])(CPUArchState *env,
+                                     target_ulong ptr,
+                                     uintptr_t retaddr) = {
+    cpu_ldub_data_ra, cpu_lduw_data_ra, cpu_ldl_data_ra,
+};
+
+static void (* const cpu_stfn[])(CPUArchState *env,
+                                 target_ulong ptr,
+                                 uint32_t val,
+                                 uintptr_t retaddr) = {
+    cpu_stb_data_ra, cpu_stw_data_ra, cpu_stl_data_ra,
+};
+
+void helper_sstr(CPURXState *env, uint32_t sz)
+{
+    tcg_debug_assert(sz < 3);
+    while (env->regs[3] != 0) {
+        cpu_stfn[sz](env, env->regs[1], env->regs[2], GETPC());
+        env->regs[1] += 1 << sz;
+        env->regs[3]--;
+    }
+}
+
+#define OP_SMOVU 1
+#define OP_SMOVF 0
+#define OP_SMOVB 2
+
+static void smov(uint32_t mode, CPURXState *env)
+{
+    uint8_t tmp;
+    int dir;
+
+    dir = (mode & OP_SMOVB) ? -1 : 1;
+    while (env->regs[3] != 0) {
+        tmp = cpu_ldub_data_ra(env, env->regs[2], GETPC());
+        cpu_stb_data_ra(env, env->regs[1], tmp, GETPC());
+        env->regs[1] += dir;
+        env->regs[2] += dir;
+        env->regs[3]--;
+        if ((mode & OP_SMOVU) && tmp == 0) {
+            break;
+        }
+    }
+}
+
+void helper_smovu(CPURXState *env)
+{
+    smov(OP_SMOVU, env);
+}
+
+void helper_smovf(CPURXState *env)
+{
+    smov(OP_SMOVF, env);
+}
+
+void helper_smovb(CPURXState *env)
+{
+    smov(OP_SMOVB, env);
+}
+
+
+void helper_suntil(CPURXState *env, uint32_t sz)
+{
+    uint32_t tmp;
+    tcg_debug_assert(sz < 3);
+    if (env->regs[3] == 0) {
+        return ;
+    }
+    while (env->regs[3] != 0) {
+        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
+        env->regs[1] += 1 << sz;
+        env->regs[3]--;
+        if (tmp == env->regs[2]) {
+            break;
+        }
+    }
+    env->psw_z = tmp - env->regs[2];
+    env->psw_c = (tmp <= env->regs[2]);
+}
+
+void helper_swhile(CPURXState *env, uint32_t sz)
+{
+    uint32_t tmp;
+    tcg_debug_assert(sz < 3);
+    if (env->regs[3] == 0) {
+        return ;
+    }
+    while (env->regs[3] != 0) {
+        tmp = cpu_ldufn[sz](env, env->regs[1], GETPC());
+        env->regs[1] += 1 << sz;
+        env->regs[3]--;
+        if (tmp != env->regs[2]) {
+            break;
+        }
+    }
+    env->psw_z = env->regs[3];
+    env->psw_c = (tmp <= env->regs[2]);
+}
+
+/* accumlator operations */
+void helper_rmpa(CPURXState *env, uint32_t sz)
+{
+    uint64_t result_l, prev;
+    int32_t result_h;
+    int64_t tmp0, tmp1;
+
+    if (env->regs[3] == 0) {
+        return;
+    }
+    result_l = env->regs[5];
+    result_l <<= 32;
+    result_l |= env->regs[4];
+    result_h = env->regs[6];
+    env->psw_o = 0;
+
+    while (env->regs[3] != 0) {
+        tmp0 = cpu_ldfn[sz](env, env->regs[1], GETPC());
+        tmp1 = cpu_ldfn[sz](env, env->regs[2], GETPC());
+        tmp0 *= tmp1;
+        prev = result_l;
+        result_l += tmp0;
+        /* carry / bollow */
+        if (tmp0 < 0) {
+            if (prev > result_l) {
+                result_h--;
+            }
+        } else {
+            if (prev < result_l) {
+                result_h++;
+            }
+        }
+
+        env->regs[1] += 1 << sz;
+        env->regs[2] += 1 << sz;
+    }
+    env->psw_s = result_h;
+    env->psw_o = (result_h != 0 && result_h != -1) << 31;
+    env->regs[6] = result_h;
+    env->regs[5] = result_l >> 32;
+    env->regs[4] = result_l & 0xffffffff;
+}
+
+void helper_racw(CPURXState *env, uint32_t imm)
+{
+    int64_t acc;
+    acc = env->acc;
+    acc <<= (imm + 1);
+    acc += 0x0000000080000000LL;
+    if (acc > 0x00007fff00000000LL) {
+        acc = 0x00007fff00000000LL;
+    } else if (acc < -0x800000000000LL) {
+        acc = -0x800000000000LL;
+    } else {
+        acc &= 0xffffffff00000000LL;
+    }
+    env->acc = acc;
+}
+
+void helper_satr(CPURXState *env)
+{
+    if (env->psw_o >> 31) {
+        if ((int)env->psw_s < 0) {
+            env->regs[6] = 0x00000000;
+            env->regs[5] = 0x7fffffff;
+            env->regs[4] = 0xffffffff;
+        } else {
+            env->regs[6] = 0xffffffff;
+            env->regs[5] = 0x80000000;
+            env->regs[4] = 0x00000000;
+        }
+    }
+}
+
+/* div */
+uint32_t helper_div(CPURXState *env, uint32_t num, uint32_t den)
+{
+    uint32_t ret = num;
+    if (!((num == INT_MIN && den == -1) || den == 0)) {
+        ret = (int32_t)num / (int32_t)den;
+        env->psw_o = 0;
+    } else {
+        env->psw_o = -1;
+    }
+    return ret;
+}
+
+uint32_t helper_divu(CPURXState *env, uint32_t num, uint32_t den)
+{
+    uint32_t ret = num;
+    if (den != 0) {
+        ret = num / den;
+        env->psw_o = 0;
+    } else {
+        env->psw_o = -1;
+    }
+    return ret;
+}
+
+/* exception */
+static inline void QEMU_NORETURN raise_exception(CPURXState *env, int index,
+                                                 uintptr_t retaddr)
+{
+    CPUState *cs = env_cpu(env);
+
+    cs->exception_index = index;
+    cpu_loop_exit_restore(cs, retaddr);
+}
+
+void QEMU_NORETURN helper_raise_privilege_violation(CPURXState *env)
+{
+    raise_exception(env, 20, GETPC());
+}
+
+void QEMU_NORETURN helper_raise_access_fault(CPURXState *env)
+{
+    raise_exception(env, 21, GETPC());
+}
+
+void QEMU_NORETURN helper_raise_illegal_instruction(CPURXState *env)
+{
+    raise_exception(env, 23, GETPC());
+}
+
+void QEMU_NORETURN helper_wait(CPURXState *env)
+{
+    CPUState *cs = env_cpu(env);
+
+    cs->halted = 1;
+    env->in_sleep = 1;
+    raise_exception(env, EXCP_HLT, 0);
+}
+
+void QEMU_NORETURN helper_debug(CPURXState *env)
+{
+    CPUState *cs = env_cpu(env);
+
+    cs->exception_index = EXCP_DEBUG;
+    cpu_loop_exit(cs);
+}
+
+void QEMU_NORETURN helper_rxint(CPURXState *env, uint32_t vec)
+{
+    raise_exception(env, 0x100 + vec, 0);
+}
+
+void QEMU_NORETURN helper_rxbrk(CPURXState *env)
+{
+    raise_exception(env, 0x100, 0);
+}
diff --git a/target/rx/translate.c b/target/rx/translate.c
new file mode 100644 (file)
index 0000000..b3d7305
--- /dev/null
@@ -0,0 +1,2439 @@
+/*
+ *  RX translation
+ *
+ *  Copyright (c) 2019 Yoshinori Sato
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/bswap.h"
+#include "qemu/qemu-print.h"
+#include "cpu.h"
+#include "exec/exec-all.h"
+#include "tcg/tcg-op.h"
+#include "exec/cpu_ldst.h"
+#include "exec/helper-proto.h"
+#include "exec/helper-gen.h"
+#include "exec/translator.h"
+#include "trace-tcg.h"
+#include "exec/log.h"
+
+typedef struct DisasContext {
+    DisasContextBase base;
+    CPURXState *env;
+    uint32_t pc;
+} DisasContext;
+
+typedef struct DisasCompare {
+    TCGv value;
+    TCGv temp;
+    TCGCond cond;
+} DisasCompare;
+
+const char *rx_crname(uint8_t cr)
+{
+    static const char *cr_names[] = {
+        "psw", "pc", "usp", "fpsw", "", "", "", "",
+        "bpsw", "bpc", "isp", "fintv", "intb", "", "", ""
+    };
+    if (cr >= ARRAY_SIZE(cr_names)) {
+        return "illegal";
+    }
+    return cr_names[cr];
+}
+
+/* Target-specific values for dc->base.is_jmp.  */
+#define DISAS_JUMP    DISAS_TARGET_0
+#define DISAS_UPDATE  DISAS_TARGET_1
+#define DISAS_EXIT    DISAS_TARGET_2
+
+/* global register indexes */
+static TCGv cpu_regs[16];
+static TCGv cpu_psw_o, cpu_psw_s, cpu_psw_z, cpu_psw_c;
+static TCGv cpu_psw_i, cpu_psw_pm, cpu_psw_u, cpu_psw_ipl;
+static TCGv cpu_usp, cpu_fpsw, cpu_bpsw, cpu_bpc, cpu_isp;
+static TCGv cpu_fintv, cpu_intb, cpu_pc;
+static TCGv_i64 cpu_acc;
+
+#define cpu_sp cpu_regs[0]
+
+#include "exec/gen-icount.h"
+
+/* decoder helper */
+static uint32_t decode_load_bytes(DisasContext *ctx, uint32_t insn,
+                           int i, int n)
+{
+    while (++i <= n) {
+        uint8_t b = cpu_ldub_code(ctx->env, ctx->base.pc_next++);
+        insn |= b << (32 - i * 8);
+    }
+    return insn;
+}
+
+static uint32_t li(DisasContext *ctx, int sz)
+{
+    int32_t tmp, addr;
+    CPURXState *env = ctx->env;
+    addr = ctx->base.pc_next;
+
+    tcg_debug_assert(sz < 4);
+    switch (sz) {
+    case 1:
+        ctx->base.pc_next += 1;
+        return cpu_ldsb_code(env, addr);
+    case 2:
+        ctx->base.pc_next += 2;
+        return cpu_ldsw_code(env, addr);
+    case 3:
+        ctx->base.pc_next += 3;
+        tmp = cpu_ldsb_code(env, addr + 2) << 16;
+        tmp |= cpu_lduw_code(env, addr) & 0xffff;
+        return tmp;
+    case 0:
+        ctx->base.pc_next += 4;
+        return cpu_ldl_code(env, addr);
+    }
+    return 0;
+}
+
+static int bdsp_s(DisasContext *ctx, int d)
+{
+    /*
+     * 0 -> 8
+     * 1 -> 9
+     * 2 -> 10
+     * 3 -> 3
+     * :
+     * 7 -> 7
+     */
+    if (d < 3) {
+        d += 8;
+    }
+    return d;
+}
+
+/* Include the auto-generated decoder. */
+#include "decode.inc.c"
+
+void rx_cpu_dump_state(CPUState *cs, FILE *f, int flags)
+{
+    RXCPU *cpu = RXCPU(cs);
+    CPURXState *env = &cpu->env;
+    int i;
+    uint32_t psw;
+
+    psw = rx_cpu_pack_psw(env);
+    qemu_fprintf(f, "pc=0x%08x psw=0x%08x\n",
+                 env->pc, psw);
+    for (i = 0; i < 16; i += 4) {
+        qemu_fprintf(f, "r%d=0x%08x r%d=0x%08x r%d=0x%08x r%d=0x%08x\n",
+                     i, env->regs[i], i + 1, env->regs[i + 1],
+                     i + 2, env->regs[i + 2], i + 3, env->regs[i + 3]);
+    }
+}
+
+static bool use_goto_tb(DisasContext *dc, target_ulong dest)
+{
+    if (unlikely(dc->base.singlestep_enabled)) {
+        return false;
+    } else {
+        return true;
+    }
+}
+
+static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
+{
+    if (use_goto_tb(dc, dest)) {
+        tcg_gen_goto_tb(n);
+        tcg_gen_movi_i32(cpu_pc, dest);
+        tcg_gen_exit_tb(dc->base.tb, n);
+    } else {
+        tcg_gen_movi_i32(cpu_pc, dest);
+        if (dc->base.singlestep_enabled) {
+            gen_helper_debug(cpu_env);
+        } else {
+            tcg_gen_lookup_and_goto_ptr();
+        }
+    }
+    dc->base.is_jmp = DISAS_NORETURN;
+}
+
+/* generic load wrapper */
+static inline void rx_gen_ld(unsigned int size, TCGv reg, TCGv mem)
+{
+    tcg_gen_qemu_ld_i32(reg, mem, 0, size | MO_SIGN | MO_TE);
+}
+
+/* unsigned load wrapper */
+static inline void rx_gen_ldu(unsigned int size, TCGv reg, TCGv mem)
+{
+    tcg_gen_qemu_ld_i32(reg, mem, 0, size | MO_TE);
+}
+
+/* generic store wrapper */
+static inline void rx_gen_st(unsigned int size, TCGv reg, TCGv mem)
+{
+    tcg_gen_qemu_st_i32(reg, mem, 0, size | MO_TE);
+}
+
+/* [ri, rb] */
+static inline void rx_gen_regindex(DisasContext *ctx, TCGv mem,
+                                   int size, int ri, int rb)
+{
+    tcg_gen_shli_i32(mem, cpu_regs[ri], size);
+    tcg_gen_add_i32(mem, mem, cpu_regs[rb]);
+}
+
+/* dsp[reg] */
+static inline TCGv rx_index_addr(DisasContext *ctx, TCGv mem,
+                                 int ld, int size, int reg)
+{
+    uint32_t dsp;
+
+    tcg_debug_assert(ld < 3);
+    switch (ld) {
+    case 0:
+        return cpu_regs[reg];
+    case 1:
+        dsp = cpu_ldub_code(ctx->env, ctx->base.pc_next) << size;
+        tcg_gen_addi_i32(mem, cpu_regs[reg], dsp);
+        ctx->base.pc_next += 1;
+        return mem;
+    case 2:
+        dsp = cpu_lduw_code(ctx->env, ctx->base.pc_next) << size;
+        tcg_gen_addi_i32(mem, cpu_regs[reg], dsp);
+        ctx->base.pc_next += 2;
+        return mem;
+    }
+    return NULL;
+}
+
+static inline MemOp mi_to_mop(unsigned mi)
+{
+    static const MemOp mop[5] = { MO_SB, MO_SW, MO_UL, MO_UW, MO_UB };
+    tcg_debug_assert(mi < 5);
+    return mop[mi];
+}
+
+/* load source operand */
+static inline TCGv rx_load_source(DisasContext *ctx, TCGv mem,
+                                  int ld, int mi, int rs)
+{
+    TCGv addr;
+    MemOp mop;
+    if (ld < 3) {
+        mop = mi_to_mop(mi);
+        addr = rx_index_addr(ctx, mem, ld, mop & MO_SIZE, rs);
+        tcg_gen_qemu_ld_i32(mem, addr, 0, mop | MO_TE);
+        return mem;
+    } else {
+        return cpu_regs[rs];
+    }
+}
+
+/* Processor mode check */
+static int is_privileged(DisasContext *ctx, int is_exception)
+{
+    if (FIELD_EX32(ctx->base.tb->flags, PSW, PM)) {
+        if (is_exception) {
+            gen_helper_raise_privilege_violation(cpu_env);
+        }
+        return 0;
+    } else {
+        return 1;
+    }
+}
+
+/* generate QEMU condition */
+static void psw_cond(DisasCompare *dc, uint32_t cond)
+{
+    tcg_debug_assert(cond < 16);
+    switch (cond) {
+    case 0: /* z */
+        dc->cond = TCG_COND_EQ;
+        dc->value = cpu_psw_z;
+        break;
+    case 1: /* nz */
+        dc->cond = TCG_COND_NE;
+        dc->value = cpu_psw_z;
+        break;
+    case 2: /* c */
+        dc->cond = TCG_COND_NE;
+        dc->value = cpu_psw_c;
+        break;
+    case 3: /* nc */
+        dc->cond = TCG_COND_EQ;
+        dc->value = cpu_psw_c;
+        break;
+    case 4: /* gtu (C& ~Z) == 1 */
+    case 5: /* leu (C& ~Z) == 0 */
+        tcg_gen_setcondi_i32(TCG_COND_NE, dc->temp, cpu_psw_z, 0);
+        tcg_gen_and_i32(dc->temp, dc->temp, cpu_psw_c);
+        dc->cond = (cond == 4) ? TCG_COND_NE : TCG_COND_EQ;
+        dc->value = dc->temp;
+        break;
+    case 6: /* pz (S == 0) */
+        dc->cond = TCG_COND_GE;
+        dc->value = cpu_psw_s;
+        break;
+    case 7: /* n (S == 1) */
+        dc->cond = TCG_COND_LT;
+        dc->value = cpu_psw_s;
+        break;
+    case 8: /* ge (S^O)==0 */
+    case 9: /* lt (S^O)==1 */
+        tcg_gen_xor_i32(dc->temp, cpu_psw_o, cpu_psw_s);
+        dc->cond = (cond == 8) ? TCG_COND_GE : TCG_COND_LT;
+        dc->value = dc->temp;
+        break;
+    case 10: /* gt ((S^O)|Z)==0 */
+    case 11: /* le ((S^O)|Z)==1 */
+        tcg_gen_xor_i32(dc->temp, cpu_psw_o, cpu_psw_s);
+        tcg_gen_sari_i32(dc->temp, dc->temp, 31);
+        tcg_gen_andc_i32(dc->temp, cpu_psw_z, dc->temp);
+        dc->cond = (cond == 10) ? TCG_COND_NE : TCG_COND_EQ;
+        dc->value = dc->temp;
+        break;
+    case 12: /* o */
+        dc->cond = TCG_COND_LT;
+        dc->value = cpu_psw_o;
+        break;
+    case 13: /* no */
+        dc->cond = TCG_COND_GE;
+        dc->value = cpu_psw_o;
+        break;
+    case 14: /* always true */
+        dc->cond = TCG_COND_ALWAYS;
+        dc->value = dc->temp;
+        break;
+    case 15: /* always false */
+        dc->cond = TCG_COND_NEVER;
+        dc->value = dc->temp;
+        break;
+    }
+}
+
+static void move_from_cr(TCGv ret, int cr, uint32_t pc)
+{
+    TCGv z = tcg_const_i32(0);
+    switch (cr) {
+    case 0:     /* PSW */
+        gen_helper_pack_psw(ret, cpu_env);
+        break;
+    case 1:     /* PC */
+        tcg_gen_movi_i32(ret, pc);
+        break;
+    case 2:     /* USP */
+        tcg_gen_movcond_i32(TCG_COND_NE, ret,
+                            cpu_psw_u, z, cpu_sp, cpu_usp);
+        break;
+    case 3:     /* FPSW */
+        tcg_gen_mov_i32(ret, cpu_fpsw);
+        break;
+    case 8:     /* BPSW */
+        tcg_gen_mov_i32(ret, cpu_bpsw);
+        break;
+    case 9:     /* BPC */
+        tcg_gen_mov_i32(ret, cpu_bpc);
+        break;
+    case 10:    /* ISP */
+        tcg_gen_movcond_i32(TCG_COND_EQ, ret,
+                            cpu_psw_u, z, cpu_sp, cpu_isp);
+        break;
+    case 11:    /* FINTV */
+        tcg_gen_mov_i32(ret, cpu_fintv);
+        break;
+    case 12:    /* INTB */
+        tcg_gen_mov_i32(ret, cpu_intb);
+        break;
+    default:
+        qemu_log_mask(LOG_GUEST_ERROR, "Unimplement control register %d", cr);
+        /* Unimplement registers return 0 */
+        tcg_gen_movi_i32(ret, 0);
+        break;
+    }
+    tcg_temp_free(z);
+}
+
+static void move_to_cr(DisasContext *ctx, TCGv val, int cr)
+{
+    TCGv z;
+    if (cr >= 8 && !is_privileged(ctx, 0)) {
+        /* Some control registers can only be written in privileged mode. */
+        qemu_log_mask(LOG_GUEST_ERROR,
+                      "disallow control register write %s", rx_crname(cr));
+        return;
+    }
+    z = tcg_const_i32(0);
+    switch (cr) {
+    case 0:     /* PSW */
+        gen_helper_set_psw(cpu_env, val);
+        break;
+    /* case 1: to PC not supported */
+    case 2:     /* USP */
+        tcg_gen_mov_i32(cpu_usp, val);
+        tcg_gen_movcond_i32(TCG_COND_NE, cpu_sp,
+                            cpu_psw_u, z,  cpu_usp, cpu_sp);
+        break;
+    case 3:     /* FPSW */
+        gen_helper_set_fpsw(cpu_env, val);
+        break;
+    case 8:     /* BPSW */
+        tcg_gen_mov_i32(cpu_bpsw, val);
+        break;
+    case 9:     /* BPC */
+        tcg_gen_mov_i32(cpu_bpc, val);
+        break;
+    case 10:    /* ISP */
+        tcg_gen_mov_i32(cpu_isp, val);
+        /* if PSW.U is 0, copy isp to r0 */
+        tcg_gen_movcond_i32(TCG_COND_EQ, cpu_sp,
+                            cpu_psw_u, z,  cpu_isp, cpu_sp);
+        break;
+    case 11:    /* FINTV */
+        tcg_gen_mov_i32(cpu_fintv, val);
+        break;
+    case 12:    /* INTB */
+        tcg_gen_mov_i32(cpu_intb, val);
+        break;
+    default:
+        qemu_log_mask(LOG_GUEST_ERROR,
+                      "Unimplement control register %d", cr);
+        break;
+    }
+    tcg_temp_free(z);
+}
+
+static void push(TCGv val)
+{
+    tcg_gen_subi_i32(cpu_sp, cpu_sp, 4);
+    rx_gen_st(MO_32, val, cpu_sp);
+}
+
+static void pop(TCGv ret)
+{
+    rx_gen_ld(MO_32, ret, cpu_sp);
+    tcg_gen_addi_i32(cpu_sp, cpu_sp, 4);
+}
+
+/* mov.<bwl> rs,dsp5[rd] */
+static bool trans_MOV_rm(DisasContext *ctx, arg_MOV_rm *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    tcg_gen_addi_i32(mem, cpu_regs[a->rd], a->dsp << a->sz);
+    rx_gen_st(a->sz, cpu_regs[a->rs], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.<bwl> dsp5[rs],rd */
+static bool trans_MOV_mr(DisasContext *ctx, arg_MOV_mr *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    tcg_gen_addi_i32(mem, cpu_regs[a->rs], a->dsp << a->sz);
+    rx_gen_ld(a->sz, cpu_regs[a->rd], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.l #uimm4,rd */
+/* mov.l #uimm8,rd */
+/* mov.l #imm,rd */
+static bool trans_MOV_ir(DisasContext *ctx, arg_MOV_ir *a)
+{
+    tcg_gen_movi_i32(cpu_regs[a->rd], a->imm);
+    return true;
+}
+
+/* mov.<bwl> #uimm8,dsp[rd] */
+/* mov.<bwl> #imm, dsp[rd] */
+static bool trans_MOV_im(DisasContext *ctx, arg_MOV_im *a)
+{
+    TCGv imm, mem;
+    imm = tcg_const_i32(a->imm);
+    mem = tcg_temp_new();
+    tcg_gen_addi_i32(mem, cpu_regs[a->rd], a->dsp << a->sz);
+    rx_gen_st(a->sz, imm, mem);
+    tcg_temp_free(imm);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.<bwl> [ri,rb],rd */
+static bool trans_MOV_ar(DisasContext *ctx, arg_MOV_ar *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    rx_gen_regindex(ctx, mem, a->sz, a->ri, a->rb);
+    rx_gen_ld(a->sz, cpu_regs[a->rd], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.<bwl> rd,[ri,rb] */
+static bool trans_MOV_ra(DisasContext *ctx, arg_MOV_ra *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    rx_gen_regindex(ctx, mem, a->sz, a->ri, a->rb);
+    rx_gen_st(a->sz, cpu_regs[a->rs], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.<bwl> dsp[rs],dsp[rd] */
+/* mov.<bwl> rs,dsp[rd] */
+/* mov.<bwl> dsp[rs],rd */
+/* mov.<bwl> rs,rd */
+static bool trans_MOV_mm(DisasContext *ctx, arg_MOV_mm *a)
+{
+    static void (* const mov[])(TCGv ret, TCGv arg) = {
+        tcg_gen_ext8s_i32, tcg_gen_ext16s_i32, tcg_gen_mov_i32,
+    };
+    TCGv tmp, mem, addr;
+    if (a->lds == 3 && a->ldd == 3) {
+        /* mov.<bwl> rs,rd */
+        mov[a->sz](cpu_regs[a->rd], cpu_regs[a->rs]);
+        return true;
+    }
+
+    mem = tcg_temp_new();
+    if (a->lds == 3) {
+        /* mov.<bwl> rs,dsp[rd] */
+        addr = rx_index_addr(ctx, mem, a->ldd, a->sz, a->rs);
+        rx_gen_st(a->sz, cpu_regs[a->rd], addr);
+    } else if (a->ldd == 3) {
+        /* mov.<bwl> dsp[rs],rd */
+        addr = rx_index_addr(ctx, mem, a->lds, a->sz, a->rs);
+        rx_gen_ld(a->sz, cpu_regs[a->rd], addr);
+    } else {
+        /* mov.<bwl> dsp[rs],dsp[rd] */
+        tmp = tcg_temp_new();
+        addr = rx_index_addr(ctx, mem, a->lds, a->sz, a->rs);
+        rx_gen_ld(a->sz, tmp, addr);
+        addr = rx_index_addr(ctx, mem, a->ldd, a->sz, a->rd);
+        rx_gen_st(a->sz, tmp, addr);
+        tcg_temp_free(tmp);
+    }
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* mov.<bwl> rs,[rd+] */
+/* mov.<bwl> rs,[-rd] */
+static bool trans_MOV_rp(DisasContext *ctx, arg_MOV_rp *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    tcg_gen_mov_i32(val, cpu_regs[a->rs]);
+    if (a->ad == 1) {
+        tcg_gen_subi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    rx_gen_st(a->sz, val, cpu_regs[a->rd]);
+    if (a->ad == 0) {
+        tcg_gen_addi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    tcg_temp_free(val);
+    return true;
+}
+
+/* mov.<bwl> [rd+],rs */
+/* mov.<bwl> [-rd],rs */
+static bool trans_MOV_pr(DisasContext *ctx, arg_MOV_pr *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    if (a->ad == 1) {
+        tcg_gen_subi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    rx_gen_ld(a->sz, val, cpu_regs[a->rd]);
+    if (a->ad == 0) {
+        tcg_gen_addi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    tcg_gen_mov_i32(cpu_regs[a->rs], val);
+    tcg_temp_free(val);
+    return true;
+}
+
+/* movu.<bw> dsp5[rs],rd */
+/* movu.<bw> dsp[rs],rd */
+static bool trans_MOVU_mr(DisasContext *ctx, arg_MOVU_mr *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    tcg_gen_addi_i32(mem, cpu_regs[a->rs], a->dsp << a->sz);
+    rx_gen_ldu(a->sz, cpu_regs[a->rd], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* movu.<bw> rs,rd */
+static bool trans_MOVU_rr(DisasContext *ctx, arg_MOVU_rr *a)
+{
+    static void (* const ext[])(TCGv ret, TCGv arg) = {
+        tcg_gen_ext8u_i32, tcg_gen_ext16u_i32,
+    };
+    ext[a->sz](cpu_regs[a->rd], cpu_regs[a->rs]);
+    return true;
+}
+
+/* movu.<bw> [ri,rb],rd */
+static bool trans_MOVU_ar(DisasContext *ctx, arg_MOVU_ar *a)
+{
+    TCGv mem;
+    mem = tcg_temp_new();
+    rx_gen_regindex(ctx, mem, a->sz, a->ri, a->rb);
+    rx_gen_ldu(a->sz, cpu_regs[a->rd], mem);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* movu.<bw> [rd+],rs */
+/* mov.<bw> [-rd],rs */
+static bool trans_MOVU_pr(DisasContext *ctx, arg_MOVU_pr *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    if (a->ad == 1) {
+        tcg_gen_subi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    rx_gen_ldu(a->sz, val, cpu_regs[a->rd]);
+    if (a->ad == 0) {
+        tcg_gen_addi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1 << a->sz);
+    }
+    tcg_gen_mov_i32(cpu_regs[a->rs], val);
+    tcg_temp_free(val);
+    return true;
+}
+
+
+/* pop rd */
+static bool trans_POP(DisasContext *ctx, arg_POP *a)
+{
+    /* mov.l [r0+], rd */
+    arg_MOV_rp mov_a;
+    mov_a.rd = 0;
+    mov_a.rs = a->rd;
+    mov_a.ad = 0;
+    mov_a.sz = MO_32;
+    trans_MOV_pr(ctx, &mov_a);
+    return true;
+}
+
+/* popc cr */
+static bool trans_POPC(DisasContext *ctx, arg_POPC *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    pop(val);
+    move_to_cr(ctx, val, a->cr);
+    if (a->cr == 0 && is_privileged(ctx, 0)) {
+        /* PSW.I may be updated here. exit TB. */
+        ctx->base.is_jmp = DISAS_UPDATE;
+    }
+    tcg_temp_free(val);
+    return true;
+}
+
+/* popm rd-rd2 */
+static bool trans_POPM(DisasContext *ctx, arg_POPM *a)
+{
+    int r;
+    if (a->rd == 0 || a->rd >= a->rd2) {
+        qemu_log_mask(LOG_GUEST_ERROR,
+                      "Invalid  register ranges r%d-r%d", a->rd, a->rd2);
+    }
+    r = a->rd;
+    while (r <= a->rd2 && r < 16) {
+        pop(cpu_regs[r++]);
+    }
+    return true;
+}
+
+
+/* push.<bwl> rs */
+static bool trans_PUSH_r(DisasContext *ctx, arg_PUSH_r *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    tcg_gen_mov_i32(val, cpu_regs[a->rs]);
+    tcg_gen_subi_i32(cpu_sp, cpu_sp, 4);
+    rx_gen_st(a->sz, val, cpu_sp);
+    tcg_temp_free(val);
+    return true;
+}
+
+/* push.<bwl> dsp[rs] */
+static bool trans_PUSH_m(DisasContext *ctx, arg_PUSH_m *a)
+{
+    TCGv mem, val, addr;
+    mem = tcg_temp_new();
+    val = tcg_temp_new();
+    addr = rx_index_addr(ctx, mem, a->ld, a->sz, a->rs);
+    rx_gen_ld(a->sz, val, addr);
+    tcg_gen_subi_i32(cpu_sp, cpu_sp, 4);
+    rx_gen_st(a->sz, val, cpu_sp);
+    tcg_temp_free(mem);
+    tcg_temp_free(val);
+    return true;
+}
+
+/* pushc rx */
+static bool trans_PUSHC(DisasContext *ctx, arg_PUSHC *a)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    move_from_cr(val, a->cr, ctx->pc);
+    push(val);
+    tcg_temp_free(val);
+    return true;
+}
+
+/* pushm rs-rs2 */
+static bool trans_PUSHM(DisasContext *ctx, arg_PUSHM *a)
+{
+    int r;
+
+    if (a->rs == 0 || a->rs >= a->rs2) {
+        qemu_log_mask(LOG_GUEST_ERROR,
+                      "Invalid  register ranges r%d-r%d", a->rs, a->rs2);
+    }
+    r = a->rs2;
+    while (r >= a->rs && r >= 0) {
+        push(cpu_regs[r--]);
+    }
+    return true;
+}
+
+/* xchg rs,rd */
+static bool trans_XCHG_rr(DisasContext *ctx, arg_XCHG_rr *a)
+{
+    TCGv tmp;
+    tmp = tcg_temp_new();
+    tcg_gen_mov_i32(tmp, cpu_regs[a->rs]);
+    tcg_gen_mov_i32(cpu_regs[a->rs], cpu_regs[a->rd]);
+    tcg_gen_mov_i32(cpu_regs[a->rd], tmp);
+    tcg_temp_free(tmp);
+    return true;
+}
+
+/* xchg dsp[rs].<mi>,rd */
+static bool trans_XCHG_mr(DisasContext *ctx, arg_XCHG_mr *a)
+{
+    TCGv mem, addr;
+    mem = tcg_temp_new();
+    switch (a->mi) {
+    case 0: /* dsp[rs].b */
+    case 1: /* dsp[rs].w */
+    case 2: /* dsp[rs].l */
+        addr = rx_index_addr(ctx, mem, a->ld, a->mi, a->rs);
+        break;
+    case 3: /* dsp[rs].uw */
+    case 4: /* dsp[rs].ub */
+        addr = rx_index_addr(ctx, mem, a->ld, 4 - a->mi, a->rs);
+        break;
+    default:
+        g_assert_not_reached();
+    }
+    tcg_gen_atomic_xchg_i32(cpu_regs[a->rd], addr, cpu_regs[a->rd],
+                            0, mi_to_mop(a->mi));
+    tcg_temp_free(mem);
+    return true;
+}
+
+static inline void stcond(TCGCond cond, int rd, int imm)
+{
+    TCGv z;
+    TCGv _imm;
+    z = tcg_const_i32(0);
+    _imm = tcg_const_i32(imm);
+    tcg_gen_movcond_i32(cond, cpu_regs[rd], cpu_psw_z, z,
+                        _imm, cpu_regs[rd]);
+    tcg_temp_free(z);
+    tcg_temp_free(_imm);
+}
+
+/* stz #imm,rd */
+static bool trans_STZ(DisasContext *ctx, arg_STZ *a)
+{
+    stcond(TCG_COND_EQ, a->rd, a->imm);
+    return true;
+}
+
+/* stnz #imm,rd */
+static bool trans_STNZ(DisasContext *ctx, arg_STNZ *a)
+{
+    stcond(TCG_COND_NE, a->rd, a->imm);
+    return true;
+}
+
+/* sccnd.<bwl> rd */
+/* sccnd.<bwl> dsp:[rd] */
+static bool trans_SCCnd(DisasContext *ctx, arg_SCCnd *a)
+{
+    DisasCompare dc;
+    TCGv val, mem, addr;
+    dc.temp = tcg_temp_new();
+    psw_cond(&dc, a->cd);
+    if (a->ld < 3) {
+        val = tcg_temp_new();
+        mem = tcg_temp_new();
+        tcg_gen_setcondi_i32(dc.cond, val, dc.value, 0);
+        addr = rx_index_addr(ctx, mem, a->sz, a->ld, a->rd);
+        rx_gen_st(a->sz, val, addr);
+        tcg_temp_free(val);
+        tcg_temp_free(mem);
+    } else {
+        tcg_gen_setcondi_i32(dc.cond, cpu_regs[a->rd], dc.value, 0);
+    }
+    tcg_temp_free(dc.temp);
+    return true;
+}
+
+/* rtsd #imm */
+static bool trans_RTSD_i(DisasContext *ctx, arg_RTSD_i *a)
+{
+    tcg_gen_addi_i32(cpu_sp, cpu_sp, a->imm  << 2);
+    pop(cpu_pc);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+/* rtsd #imm, rd-rd2 */
+static bool trans_RTSD_irr(DisasContext *ctx, arg_RTSD_irr *a)
+{
+    int dst;
+    int adj;
+
+    if (a->rd2 >= a->rd) {
+        adj = a->imm - (a->rd2 - a->rd + 1);
+    } else {
+        adj = a->imm - (15 - a->rd + 1);
+    }
+
+    tcg_gen_addi_i32(cpu_sp, cpu_sp, adj << 2);
+    dst = a->rd;
+    while (dst <= a->rd2 && dst < 16) {
+        pop(cpu_regs[dst++]);
+    }
+    pop(cpu_pc);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+typedef void (*op2fn)(TCGv ret, TCGv arg1);
+typedef void (*op3fn)(TCGv ret, TCGv arg1, TCGv arg2);
+
+static inline void rx_gen_op_rr(op2fn opr, int dst, int src)
+{
+    opr(cpu_regs[dst], cpu_regs[src]);
+}
+
+static inline void rx_gen_op_rrr(op3fn opr, int dst, int src, int src2)
+{
+    opr(cpu_regs[dst], cpu_regs[src], cpu_regs[src2]);
+}
+
+static inline void rx_gen_op_irr(op3fn opr, int dst, int src, uint32_t src2)
+{
+    TCGv imm = tcg_const_i32(src2);
+    opr(cpu_regs[dst], cpu_regs[src], imm);
+    tcg_temp_free(imm);
+}
+
+static inline void rx_gen_op_mr(op3fn opr, DisasContext *ctx,
+                                int dst, int src, int ld, int mi)
+{
+    TCGv val, mem;
+    mem = tcg_temp_new();
+    val = rx_load_source(ctx, mem, ld, mi, src);
+    opr(cpu_regs[dst], cpu_regs[dst], val);
+    tcg_temp_free(mem);
+}
+
+static void rx_and(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    tcg_gen_and_i32(cpu_psw_s, arg1, arg2);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_mov_i32(ret, cpu_psw_s);
+}
+
+/* and #uimm:4, rd */
+/* and #imm, rd */
+static bool trans_AND_ir(DisasContext *ctx, arg_AND_ir *a)
+{
+    rx_gen_op_irr(rx_and, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* and dsp[rs], rd */
+/* and rs,rd */
+static bool trans_AND_mr(DisasContext *ctx, arg_AND_mr *a)
+{
+    rx_gen_op_mr(rx_and, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* and rs,rs2,rd */
+static bool trans_AND_rrr(DisasContext *ctx, arg_AND_rrr *a)
+{
+    rx_gen_op_rrr(rx_and, a->rd, a->rs, a->rs2);
+    return true;
+}
+
+static void rx_or(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    tcg_gen_or_i32(cpu_psw_s, arg1, arg2);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_mov_i32(ret, cpu_psw_s);
+}
+
+/* or #uimm:4, rd */
+/* or #imm, rd */
+static bool trans_OR_ir(DisasContext *ctx, arg_OR_ir *a)
+{
+    rx_gen_op_irr(rx_or, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* or dsp[rs], rd */
+/* or rs,rd */
+static bool trans_OR_mr(DisasContext *ctx, arg_OR_mr *a)
+{
+    rx_gen_op_mr(rx_or, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* or rs,rs2,rd */
+static bool trans_OR_rrr(DisasContext *ctx, arg_OR_rrr *a)
+{
+    rx_gen_op_rrr(rx_or, a->rd, a->rs, a->rs2);
+    return true;
+}
+
+static void rx_xor(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    tcg_gen_xor_i32(cpu_psw_s, arg1, arg2);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_mov_i32(ret, cpu_psw_s);
+}
+
+/* xor #imm, rd */
+static bool trans_XOR_ir(DisasContext *ctx, arg_XOR_ir *a)
+{
+    rx_gen_op_irr(rx_xor, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* xor dsp[rs], rd */
+/* xor rs,rd */
+static bool trans_XOR_mr(DisasContext *ctx, arg_XOR_mr *a)
+{
+    rx_gen_op_mr(rx_xor, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+static void rx_tst(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    tcg_gen_and_i32(cpu_psw_s, arg1, arg2);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+}
+
+/* tst #imm, rd */
+static bool trans_TST_ir(DisasContext *ctx, arg_TST_ir *a)
+{
+    rx_gen_op_irr(rx_tst, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* tst dsp[rs], rd */
+/* tst rs, rd */
+static bool trans_TST_mr(DisasContext *ctx, arg_TST_mr *a)
+{
+    rx_gen_op_mr(rx_tst, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+static void rx_not(TCGv ret, TCGv arg1)
+{
+    tcg_gen_not_i32(ret, arg1);
+    tcg_gen_mov_i32(cpu_psw_z, ret);
+    tcg_gen_mov_i32(cpu_psw_s, ret);
+}
+
+/* not rd */
+/* not rs, rd */
+static bool trans_NOT_rr(DisasContext *ctx, arg_NOT_rr *a)
+{
+    rx_gen_op_rr(rx_not, a->rd, a->rs);
+    return true;
+}
+
+static void rx_neg(TCGv ret, TCGv arg1)
+{
+    tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_psw_o, arg1, 0x80000000);
+    tcg_gen_neg_i32(ret, arg1);
+    tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_psw_c, ret, 0);
+    tcg_gen_mov_i32(cpu_psw_z, ret);
+    tcg_gen_mov_i32(cpu_psw_s, ret);
+}
+
+
+/* neg rd */
+/* neg rs, rd */
+static bool trans_NEG_rr(DisasContext *ctx, arg_NEG_rr *a)
+{
+    rx_gen_op_rr(rx_neg, a->rd, a->rs);
+    return true;
+}
+
+/* ret = arg1 + arg2 + psw_c */
+static void rx_adc(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    TCGv z;
+    z = tcg_const_i32(0);
+    tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, arg1, z, cpu_psw_c, z);
+    tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, cpu_psw_s, cpu_psw_c, arg2, z);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
+    tcg_gen_xor_i32(z, arg1, arg2);
+    tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, z);
+    tcg_gen_mov_i32(ret, cpu_psw_s);
+    tcg_temp_free(z);
+}
+
+/* adc #imm, rd */
+static bool trans_ADC_ir(DisasContext *ctx, arg_ADC_ir *a)
+{
+    rx_gen_op_irr(rx_adc, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* adc rs, rd */
+static bool trans_ADC_rr(DisasContext *ctx, arg_ADC_rr *a)
+{
+    rx_gen_op_rrr(rx_adc, a->rd, a->rd, a->rs);
+    return true;
+}
+
+/* adc dsp[rs], rd */
+static bool trans_ADC_mr(DisasContext *ctx, arg_ADC_mr *a)
+{
+    /* mi only 2 */
+    if (a->mi != 2) {
+        return false;
+    }
+    rx_gen_op_mr(rx_adc, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* ret = arg1 + arg2 */
+static void rx_add(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    TCGv z;
+    z = tcg_const_i32(0);
+    tcg_gen_add2_i32(cpu_psw_s, cpu_psw_c, arg1, z, arg2, z);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
+    tcg_gen_xor_i32(z, arg1, arg2);
+    tcg_gen_andc_i32(cpu_psw_o, cpu_psw_o, z);
+    tcg_gen_mov_i32(ret, cpu_psw_s);
+    tcg_temp_free(z);
+}
+
+/* add #uimm4, rd */
+/* add #imm, rs, rd */
+static bool trans_ADD_irr(DisasContext *ctx, arg_ADD_irr *a)
+{
+    rx_gen_op_irr(rx_add, a->rd, a->rs2, a->imm);
+    return true;
+}
+
+/* add rs, rd */
+/* add dsp[rs], rd */
+static bool trans_ADD_mr(DisasContext *ctx, arg_ADD_mr *a)
+{
+    rx_gen_op_mr(rx_add, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* add rs, rs2, rd */
+static bool trans_ADD_rrr(DisasContext *ctx, arg_ADD_rrr *a)
+{
+    rx_gen_op_rrr(rx_add, a->rd, a->rs, a->rs2);
+    return true;
+}
+
+/* ret = arg1 - arg2 */
+static void rx_sub(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    TCGv temp;
+    tcg_gen_sub_i32(cpu_psw_s, arg1, arg2);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_s);
+    tcg_gen_setcond_i32(TCG_COND_GEU, cpu_psw_c, arg1, arg2);
+    tcg_gen_xor_i32(cpu_psw_o, cpu_psw_s, arg1);
+    temp = tcg_temp_new_i32();
+    tcg_gen_xor_i32(temp, arg1, arg2);
+    tcg_gen_and_i32(cpu_psw_o, cpu_psw_o, temp);
+    tcg_temp_free_i32(temp);
+    /* CMP not requred return */
+    if (ret) {
+        tcg_gen_mov_i32(ret, cpu_psw_s);
+    }
+}
+static void rx_cmp(TCGv dummy, TCGv arg1, TCGv arg2)
+{
+    rx_sub(NULL, arg1, arg2);
+}
+/* ret = arg1 - arg2 - !psw_c */
+/* -> ret = arg1 + ~arg2 + psw_c */
+static void rx_sbb(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    TCGv temp;
+    temp = tcg_temp_new();
+    tcg_gen_not_i32(temp, arg2);
+    rx_adc(ret, arg1, temp);
+    tcg_temp_free(temp);
+}
+
+/* cmp #imm4, rs2 */
+/* cmp #imm8, rs2 */
+/* cmp #imm, rs2 */
+static bool trans_CMP_ir(DisasContext *ctx, arg_CMP_ir *a)
+{
+    rx_gen_op_irr(rx_cmp, 0, a->rs2, a->imm);
+    return true;
+}
+
+/* cmp rs, rs2 */
+/* cmp dsp[rs], rs2 */
+static bool trans_CMP_mr(DisasContext *ctx, arg_CMP_mr *a)
+{
+    rx_gen_op_mr(rx_cmp, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* sub #imm4, rd */
+static bool trans_SUB_ir(DisasContext *ctx, arg_SUB_ir *a)
+{
+    rx_gen_op_irr(rx_sub, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* sub rs, rd */
+/* sub dsp[rs], rd */
+static bool trans_SUB_mr(DisasContext *ctx, arg_SUB_mr *a)
+{
+    rx_gen_op_mr(rx_sub, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* sub rs2, rs, rd */
+static bool trans_SUB_rrr(DisasContext *ctx, arg_SUB_rrr *a)
+{
+    rx_gen_op_rrr(rx_sub, a->rd, a->rs2, a->rs);
+    return true;
+}
+
+/* sbb rs, rd */
+static bool trans_SBB_rr(DisasContext *ctx, arg_SBB_rr *a)
+{
+    rx_gen_op_rrr(rx_sbb, a->rd, a->rd, a->rs);
+    return true;
+}
+
+/* sbb dsp[rs], rd */
+static bool trans_SBB_mr(DisasContext *ctx, arg_SBB_mr *a)
+{
+    /* mi only 2 */
+    if (a->mi != 2) {
+        return false;
+    }
+    rx_gen_op_mr(rx_sbb, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+static void rx_abs(TCGv ret, TCGv arg1)
+{
+    TCGv neg;
+    TCGv zero;
+    neg = tcg_temp_new();
+    zero = tcg_const_i32(0);
+    tcg_gen_neg_i32(neg, arg1);
+    tcg_gen_movcond_i32(TCG_COND_LT, ret, arg1, zero, neg, arg1);
+    tcg_temp_free(neg);
+    tcg_temp_free(zero);
+}
+
+/* abs rd */
+/* abs rs, rd */
+static bool trans_ABS_rr(DisasContext *ctx, arg_ABS_rr *a)
+{
+    rx_gen_op_rr(rx_abs, a->rd, a->rs);
+    return true;
+}
+
+/* max #imm, rd */
+static bool trans_MAX_ir(DisasContext *ctx, arg_MAX_ir *a)
+{
+    rx_gen_op_irr(tcg_gen_smax_i32, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* max rs, rd */
+/* max dsp[rs], rd */
+static bool trans_MAX_mr(DisasContext *ctx, arg_MAX_mr *a)
+{
+    rx_gen_op_mr(tcg_gen_smax_i32, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* min #imm, rd */
+static bool trans_MIN_ir(DisasContext *ctx, arg_MIN_ir *a)
+{
+    rx_gen_op_irr(tcg_gen_smin_i32, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* min rs, rd */
+/* min dsp[rs], rd */
+static bool trans_MIN_mr(DisasContext *ctx, arg_MIN_mr *a)
+{
+    rx_gen_op_mr(tcg_gen_smin_i32, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* mul #uimm4, rd */
+/* mul #imm, rd */
+static bool trans_MUL_ir(DisasContext *ctx, arg_MUL_ir *a)
+{
+    rx_gen_op_irr(tcg_gen_mul_i32, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* mul rs, rd */
+/* mul dsp[rs], rd */
+static bool trans_MUL_mr(DisasContext *ctx, arg_MUL_mr *a)
+{
+    rx_gen_op_mr(tcg_gen_mul_i32, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* mul rs, rs2, rd */
+static bool trans_MUL_rrr(DisasContext *ctx, arg_MUL_rrr *a)
+{
+    rx_gen_op_rrr(tcg_gen_mul_i32, a->rd, a->rs, a->rs2);
+    return true;
+}
+
+/* emul #imm, rd */
+static bool trans_EMUL_ir(DisasContext *ctx, arg_EMUL_ir *a)
+{
+    TCGv imm = tcg_const_i32(a->imm);
+    if (a->rd > 14) {
+        qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
+    }
+    tcg_gen_muls2_i32(cpu_regs[a->rd], cpu_regs[(a->rd + 1) & 15],
+                      cpu_regs[a->rd], imm);
+    tcg_temp_free(imm);
+    return true;
+}
+
+/* emul rs, rd */
+/* emul dsp[rs], rd */
+static bool trans_EMUL_mr(DisasContext *ctx, arg_EMUL_mr *a)
+{
+    TCGv val, mem;
+    if (a->rd > 14) {
+        qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
+    }
+    mem = tcg_temp_new();
+    val = rx_load_source(ctx, mem, a->ld, a->mi, a->rs);
+    tcg_gen_muls2_i32(cpu_regs[a->rd], cpu_regs[(a->rd + 1) & 15],
+                      cpu_regs[a->rd], val);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* emulu #imm, rd */
+static bool trans_EMULU_ir(DisasContext *ctx, arg_EMULU_ir *a)
+{
+    TCGv imm = tcg_const_i32(a->imm);
+    if (a->rd > 14) {
+        qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
+    }
+    tcg_gen_mulu2_i32(cpu_regs[a->rd], cpu_regs[(a->rd + 1) & 15],
+                      cpu_regs[a->rd], imm);
+    tcg_temp_free(imm);
+    return true;
+}
+
+/* emulu rs, rd */
+/* emulu dsp[rs], rd */
+static bool trans_EMULU_mr(DisasContext *ctx, arg_EMULU_mr *a)
+{
+    TCGv val, mem;
+    if (a->rd > 14) {
+        qemu_log_mask(LOG_GUEST_ERROR, "rd too large %d", a->rd);
+    }
+    mem = tcg_temp_new();
+    val = rx_load_source(ctx, mem, a->ld, a->mi, a->rs);
+    tcg_gen_mulu2_i32(cpu_regs[a->rd], cpu_regs[(a->rd + 1) & 15],
+                      cpu_regs[a->rd], val);
+    tcg_temp_free(mem);
+    return true;
+}
+
+static void rx_div(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    gen_helper_div(ret, cpu_env, arg1, arg2);
+}
+
+static void rx_divu(TCGv ret, TCGv arg1, TCGv arg2)
+{
+    gen_helper_divu(ret, cpu_env, arg1, arg2);
+}
+
+/* div #imm, rd */
+static bool trans_DIV_ir(DisasContext *ctx, arg_DIV_ir *a)
+{
+    rx_gen_op_irr(rx_div, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* div rs, rd */
+/* div dsp[rs], rd */
+static bool trans_DIV_mr(DisasContext *ctx, arg_DIV_mr *a)
+{
+    rx_gen_op_mr(rx_div, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+/* divu #imm, rd */
+static bool trans_DIVU_ir(DisasContext *ctx, arg_DIVU_ir *a)
+{
+    rx_gen_op_irr(rx_divu, a->rd, a->rd, a->imm);
+    return true;
+}
+
+/* divu rs, rd */
+/* divu dsp[rs], rd */
+static bool trans_DIVU_mr(DisasContext *ctx, arg_DIVU_mr *a)
+{
+    rx_gen_op_mr(rx_divu, ctx, a->rd, a->rs, a->ld, a->mi);
+    return true;
+}
+
+
+/* shll #imm:5, rd */
+/* shll #imm:5, rs2, rd */
+static bool trans_SHLL_irr(DisasContext *ctx, arg_SHLL_irr *a)
+{
+    TCGv tmp;
+    tmp = tcg_temp_new();
+    if (a->imm) {
+        tcg_gen_sari_i32(cpu_psw_c, cpu_regs[a->rs2], 32 - a->imm);
+        tcg_gen_shli_i32(cpu_regs[a->rd], cpu_regs[a->rs2], a->imm);
+        tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_psw_o, cpu_psw_c, 0);
+        tcg_gen_setcondi_i32(TCG_COND_EQ, tmp, cpu_psw_c, 0xffffffff);
+        tcg_gen_or_i32(cpu_psw_o, cpu_psw_o, tmp);
+        tcg_gen_setcondi_i32(TCG_COND_NE, cpu_psw_c, cpu_psw_c, 0);
+    } else {
+        tcg_gen_mov_i32(cpu_regs[a->rd], cpu_regs[a->rs2]);
+        tcg_gen_movi_i32(cpu_psw_c, 0);
+        tcg_gen_movi_i32(cpu_psw_o, 0);
+    }
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[a->rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[a->rd]);
+    return true;
+}
+
+/* shll rs, rd */
+static bool trans_SHLL_rr(DisasContext *ctx, arg_SHLL_rr *a)
+{
+    TCGLabel *noshift, *done;
+    TCGv count, tmp;
+
+    noshift = gen_new_label();
+    done = gen_new_label();
+    /* if (cpu_regs[a->rs]) { */
+    tcg_gen_brcondi_i32(TCG_COND_EQ, cpu_regs[a->rs], 0, noshift);
+    count = tcg_const_i32(32);
+    tmp = tcg_temp_new();
+    tcg_gen_andi_i32(tmp, cpu_regs[a->rs], 31);
+    tcg_gen_sub_i32(count, count, tmp);
+    tcg_gen_sar_i32(cpu_psw_c, cpu_regs[a->rd], count);
+    tcg_gen_shl_i32(cpu_regs[a->rd], cpu_regs[a->rd], tmp);
+    tcg_gen_setcondi_i32(TCG_COND_EQ, cpu_psw_o, cpu_psw_c, 0);
+    tcg_gen_setcondi_i32(TCG_COND_EQ, tmp, cpu_psw_c, 0xffffffff);
+    tcg_gen_or_i32(cpu_psw_o, cpu_psw_o, tmp);
+    tcg_gen_setcondi_i32(TCG_COND_NE, cpu_psw_c, cpu_psw_c, 0);
+    tcg_gen_br(done);
+    /* } else { */
+    gen_set_label(noshift);
+    tcg_gen_movi_i32(cpu_psw_c, 0);
+    tcg_gen_movi_i32(cpu_psw_o, 0);
+    /* } */
+    gen_set_label(done);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[a->rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[a->rd]);
+    tcg_temp_free(count);
+    tcg_temp_free(tmp);
+    return true;
+}
+
+static inline void shiftr_imm(uint32_t rd, uint32_t rs, uint32_t imm,
+                              unsigned int alith)
+{
+    static void (* const gen_sXri[])(TCGv ret, TCGv arg1, int arg2) = {
+        tcg_gen_shri_i32, tcg_gen_sari_i32,
+    };
+    tcg_debug_assert(alith < 2);
+    if (imm) {
+        gen_sXri[alith](cpu_regs[rd], cpu_regs[rs], imm - 1);
+        tcg_gen_andi_i32(cpu_psw_c, cpu_regs[rd], 0x00000001);
+        gen_sXri[alith](cpu_regs[rd], cpu_regs[rd], 1);
+    } else {
+        tcg_gen_mov_i32(cpu_regs[rd], cpu_regs[rs]);
+        tcg_gen_movi_i32(cpu_psw_c, 0);
+    }
+    tcg_gen_movi_i32(cpu_psw_o, 0);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[rd]);
+}
+
+static inline void shiftr_reg(uint32_t rd, uint32_t rs, unsigned int alith)
+{
+    TCGLabel *noshift, *done;
+    TCGv count;
+    static void (* const gen_sXri[])(TCGv ret, TCGv arg1, int arg2) = {
+        tcg_gen_shri_i32, tcg_gen_sari_i32,
+    };
+    static void (* const gen_sXr[])(TCGv ret, TCGv arg1, TCGv arg2) = {
+        tcg_gen_shr_i32, tcg_gen_sar_i32,
+    };
+    tcg_debug_assert(alith < 2);
+    noshift = gen_new_label();
+    done = gen_new_label();
+    count = tcg_temp_new();
+    /* if (cpu_regs[rs]) { */
+    tcg_gen_brcondi_i32(TCG_COND_EQ, cpu_regs[rs], 0, noshift);
+    tcg_gen_andi_i32(count, cpu_regs[rs], 31);
+    tcg_gen_subi_i32(count, count, 1);
+    gen_sXr[alith](cpu_regs[rd], cpu_regs[rd], count);
+    tcg_gen_andi_i32(cpu_psw_c, cpu_regs[rd], 0x00000001);
+    gen_sXri[alith](cpu_regs[rd], cpu_regs[rd], 1);
+    tcg_gen_br(done);
+    /* } else { */
+    gen_set_label(noshift);
+    tcg_gen_movi_i32(cpu_psw_c, 0);
+    /* } */
+    gen_set_label(done);
+    tcg_gen_movi_i32(cpu_psw_o, 0);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[rd]);
+    tcg_temp_free(count);
+}
+
+/* shar #imm:5, rd */
+/* shar #imm:5, rs2, rd */
+static bool trans_SHAR_irr(DisasContext *ctx, arg_SHAR_irr *a)
+{
+    shiftr_imm(a->rd, a->rs2, a->imm, 1);
+    return true;
+}
+
+/* shar rs, rd */
+static bool trans_SHAR_rr(DisasContext *ctx, arg_SHAR_rr *a)
+{
+    shiftr_reg(a->rd, a->rs, 1);
+    return true;
+}
+
+/* shlr #imm:5, rd */
+/* shlr #imm:5, rs2, rd */
+static bool trans_SHLR_irr(DisasContext *ctx, arg_SHLR_irr *a)
+{
+    shiftr_imm(a->rd, a->rs2, a->imm, 0);
+    return true;
+}
+
+/* shlr rs, rd */
+static bool trans_SHLR_rr(DisasContext *ctx, arg_SHLR_rr *a)
+{
+    shiftr_reg(a->rd, a->rs, 0);
+    return true;
+}
+
+/* rolc rd */
+static bool trans_ROLC(DisasContext *ctx, arg_ROLC *a)
+{
+    TCGv tmp;
+    tmp = tcg_temp_new();
+    tcg_gen_shri_i32(tmp, cpu_regs[a->rd], 31);
+    tcg_gen_shli_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1);
+    tcg_gen_or_i32(cpu_regs[a->rd], cpu_regs[a->rd], cpu_psw_c);
+    tcg_gen_mov_i32(cpu_psw_c, tmp);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[a->rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[a->rd]);
+    tcg_temp_free(tmp);
+    return true;
+}
+
+/* rorc rd */
+static bool trans_RORC(DisasContext *ctx, arg_RORC *a)
+{
+    TCGv tmp;
+    tmp = tcg_temp_new();
+    tcg_gen_andi_i32(tmp, cpu_regs[a->rd], 0x00000001);
+    tcg_gen_shri_i32(cpu_regs[a->rd], cpu_regs[a->rd], 1);
+    tcg_gen_shli_i32(cpu_psw_c, cpu_psw_c, 31);
+    tcg_gen_or_i32(cpu_regs[a->rd], cpu_regs[a->rd], cpu_psw_c);
+    tcg_gen_mov_i32(cpu_psw_c, tmp);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[a->rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[a->rd]);
+    return true;
+}
+
+enum {ROTR = 0, ROTL = 1};
+enum {ROT_IMM = 0, ROT_REG = 1};
+static inline void rx_rot(int ir, int dir, int rd, int src)
+{
+    switch (dir) {
+    case ROTL:
+        if (ir == ROT_IMM) {
+            tcg_gen_rotli_i32(cpu_regs[rd], cpu_regs[rd], src);
+        } else {
+            tcg_gen_rotl_i32(cpu_regs[rd], cpu_regs[rd], cpu_regs[src]);
+        }
+        tcg_gen_andi_i32(cpu_psw_c, cpu_regs[rd], 0x00000001);
+        break;
+    case ROTR:
+        if (ir == ROT_IMM) {
+            tcg_gen_rotri_i32(cpu_regs[rd], cpu_regs[rd], src);
+        } else {
+            tcg_gen_rotr_i32(cpu_regs[rd], cpu_regs[rd], cpu_regs[src]);
+        }
+        tcg_gen_shri_i32(cpu_psw_c, cpu_regs[rd], 31);
+        break;
+    }
+    tcg_gen_mov_i32(cpu_psw_z, cpu_regs[rd]);
+    tcg_gen_mov_i32(cpu_psw_s, cpu_regs[rd]);
+}
+
+/* rotl #imm, rd */
+static bool trans_ROTL_ir(DisasContext *ctx, arg_ROTL_ir *a)
+{
+    rx_rot(ROT_IMM, ROTL, a->rd, a->imm);
+    return true;
+}
+
+/* rotl rs, rd */
+static bool trans_ROTL_rr(DisasContext *ctx, arg_ROTL_rr *a)
+{
+    rx_rot(ROT_REG, ROTL, a->rd, a->rs);
+    return true;
+}
+
+/* rotr #imm, rd */
+static bool trans_ROTR_ir(DisasContext *ctx, arg_ROTR_ir *a)
+{
+    rx_rot(ROT_IMM, ROTR, a->rd, a->imm);
+    return true;
+}
+
+/* rotr rs, rd */
+static bool trans_ROTR_rr(DisasContext *ctx, arg_ROTR_rr *a)
+{
+    rx_rot(ROT_REG, ROTR, a->rd, a->rs);
+    return true;
+}
+
+/* revl rs, rd */
+static bool trans_REVL(DisasContext *ctx, arg_REVL *a)
+{
+    tcg_gen_bswap32_i32(cpu_regs[a->rd], cpu_regs[a->rs]);
+    return true;
+}
+
+/* revw rs, rd */
+static bool trans_REVW(DisasContext *ctx, arg_REVW *a)
+{
+    TCGv tmp;
+    tmp = tcg_temp_new();
+    tcg_gen_andi_i32(tmp, cpu_regs[a->rs], 0x00ff00ff);
+    tcg_gen_shli_i32(tmp, tmp, 8);
+    tcg_gen_shri_i32(cpu_regs[a->rd], cpu_regs[a->rs], 8);
+    tcg_gen_andi_i32(cpu_regs[a->rd], cpu_regs[a->rd], 0x00ff00ff);
+    tcg_gen_or_i32(cpu_regs[a->rd], cpu_regs[a->rd], tmp);
+    tcg_temp_free(tmp);
+    return true;
+}
+
+/* conditional branch helper */
+static void rx_bcnd_main(DisasContext *ctx, int cd, int dst)
+{
+    DisasCompare dc;
+    TCGLabel *t, *done;
+
+    switch (cd) {
+    case 0 ... 13:
+        dc.temp = tcg_temp_new();
+        psw_cond(&dc, cd);
+        t = gen_new_label();
+        done = gen_new_label();
+        tcg_gen_brcondi_i32(dc.cond, dc.value, 0, t);
+        gen_goto_tb(ctx, 0, ctx->base.pc_next);
+        tcg_gen_br(done);
+        gen_set_label(t);
+        gen_goto_tb(ctx, 1, ctx->pc + dst);
+        gen_set_label(done);
+        tcg_temp_free(dc.temp);
+        break;
+    case 14:
+        /* always true case */
+        gen_goto_tb(ctx, 0, ctx->pc + dst);
+        break;
+    case 15:
+        /* always false case */
+        /* Nothing do */
+        break;
+    }
+}
+
+/* beq dsp:3 / bne dsp:3 */
+/* beq dsp:8 / bne dsp:8 */
+/* bc dsp:8 / bnc dsp:8 */
+/* bgtu dsp:8 / bleu dsp:8 */
+/* bpz dsp:8 / bn dsp:8 */
+/* bge dsp:8 / blt dsp:8 */
+/* bgt dsp:8 / ble dsp:8 */
+/* bo dsp:8 / bno dsp:8 */
+/* beq dsp:16 / bne dsp:16 */
+static bool trans_BCnd(DisasContext *ctx, arg_BCnd *a)
+{
+    rx_bcnd_main(ctx, a->cd, a->dsp);
+    return true;
+}
+
+/* bra dsp:3 */
+/* bra dsp:8 */
+/* bra dsp:16 */
+/* bra dsp:24 */
+static bool trans_BRA(DisasContext *ctx, arg_BRA *a)
+{
+    rx_bcnd_main(ctx, 14, a->dsp);
+    return true;
+}
+
+/* bra rs */
+static bool trans_BRA_l(DisasContext *ctx, arg_BRA_l *a)
+{
+    tcg_gen_addi_i32(cpu_pc, cpu_regs[a->rd], ctx->pc);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+static inline void rx_save_pc(DisasContext *ctx)
+{
+    TCGv pc = tcg_const_i32(ctx->base.pc_next);
+    push(pc);
+    tcg_temp_free(pc);
+}
+
+/* jmp rs */
+static bool trans_JMP(DisasContext *ctx, arg_JMP *a)
+{
+    tcg_gen_mov_i32(cpu_pc, cpu_regs[a->rs]);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+/* jsr rs */
+static bool trans_JSR(DisasContext *ctx, arg_JSR *a)
+{
+    rx_save_pc(ctx);
+    tcg_gen_mov_i32(cpu_pc, cpu_regs[a->rs]);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+/* bsr dsp:16 */
+/* bsr dsp:24 */
+static bool trans_BSR(DisasContext *ctx, arg_BSR *a)
+{
+    rx_save_pc(ctx);
+    rx_bcnd_main(ctx, 14, a->dsp);
+    return true;
+}
+
+/* bsr rs */
+static bool trans_BSR_l(DisasContext *ctx, arg_BSR_l *a)
+{
+    rx_save_pc(ctx);
+    tcg_gen_addi_i32(cpu_pc, cpu_regs[a->rd], ctx->pc);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+/* rts */
+static bool trans_RTS(DisasContext *ctx, arg_RTS *a)
+{
+    pop(cpu_pc);
+    ctx->base.is_jmp = DISAS_JUMP;
+    return true;
+}
+
+/* nop */
+static bool trans_NOP(DisasContext *ctx, arg_NOP *a)
+{
+    return true;
+}
+
+/* scmpu */
+static bool trans_SCMPU(DisasContext *ctx, arg_SCMPU *a)
+{
+    gen_helper_scmpu(cpu_env);
+    return true;
+}
+
+/* smovu */
+static bool trans_SMOVU(DisasContext *ctx, arg_SMOVU *a)
+{
+    gen_helper_smovu(cpu_env);
+    return true;
+}
+
+/* smovf */
+static bool trans_SMOVF(DisasContext *ctx, arg_SMOVF *a)
+{
+    gen_helper_smovf(cpu_env);
+    return true;
+}
+
+/* smovb */
+static bool trans_SMOVB(DisasContext *ctx, arg_SMOVB *a)
+{
+    gen_helper_smovb(cpu_env);
+    return true;
+}
+
+#define STRING(op)                              \
+    do {                                        \
+        TCGv size = tcg_const_i32(a->sz);       \
+        gen_helper_##op(cpu_env, size);         \
+        tcg_temp_free(size);                    \
+    } while (0)
+
+/* suntile.<bwl> */
+static bool trans_SUNTIL(DisasContext *ctx, arg_SUNTIL *a)
+{
+    STRING(suntil);
+    return true;
+}
+
+/* swhile.<bwl> */
+static bool trans_SWHILE(DisasContext *ctx, arg_SWHILE *a)
+{
+    STRING(swhile);
+    return true;
+}
+/* sstr.<bwl> */
+static bool trans_SSTR(DisasContext *ctx, arg_SSTR *a)
+{
+    STRING(sstr);
+    return true;
+}
+
+/* rmpa.<bwl> */
+static bool trans_RMPA(DisasContext *ctx, arg_RMPA *a)
+{
+    STRING(rmpa);
+    return true;
+}
+
+static void rx_mul64hi(TCGv_i64 ret, int rs, int rs2)
+{
+    TCGv_i64 tmp0, tmp1;
+    tmp0 = tcg_temp_new_i64();
+    tmp1 = tcg_temp_new_i64();
+    tcg_gen_ext_i32_i64(tmp0, cpu_regs[rs]);
+    tcg_gen_sari_i64(tmp0, tmp0, 16);
+    tcg_gen_ext_i32_i64(tmp1, cpu_regs[rs2]);
+    tcg_gen_sari_i64(tmp1, tmp1, 16);
+    tcg_gen_mul_i64(ret, tmp0, tmp1);
+    tcg_gen_shli_i64(ret, ret, 16);
+    tcg_temp_free_i64(tmp0);
+    tcg_temp_free_i64(tmp1);
+}
+
+static void rx_mul64lo(TCGv_i64 ret, int rs, int rs2)
+{
+    TCGv_i64 tmp0, tmp1;
+    tmp0 = tcg_temp_new_i64();
+    tmp1 = tcg_temp_new_i64();
+    tcg_gen_ext_i32_i64(tmp0, cpu_regs[rs]);
+    tcg_gen_ext16s_i64(tmp0, tmp0);
+    tcg_gen_ext_i32_i64(tmp1, cpu_regs[rs2]);
+    tcg_gen_ext16s_i64(tmp1, tmp1);
+    tcg_gen_mul_i64(ret, tmp0, tmp1);
+    tcg_gen_shli_i64(ret, ret, 16);
+    tcg_temp_free_i64(tmp0);
+    tcg_temp_free_i64(tmp1);
+}
+
+/* mulhi rs,rs2 */
+static bool trans_MULHI(DisasContext *ctx, arg_MULHI *a)
+{
+    rx_mul64hi(cpu_acc, a->rs, a->rs2);
+    return true;
+}
+
+/* mullo rs,rs2 */
+static bool trans_MULLO(DisasContext *ctx, arg_MULLO *a)
+{
+    rx_mul64lo(cpu_acc, a->rs, a->rs2);
+    return true;
+}
+
+/* machi rs,rs2 */
+static bool trans_MACHI(DisasContext *ctx, arg_MACHI *a)
+{
+    TCGv_i64 tmp;
+    tmp = tcg_temp_new_i64();
+    rx_mul64hi(tmp, a->rs, a->rs2);
+    tcg_gen_add_i64(cpu_acc, cpu_acc, tmp);
+    tcg_temp_free_i64(tmp);
+    return true;
+}
+
+/* maclo rs,rs2 */
+static bool trans_MACLO(DisasContext *ctx, arg_MACLO *a)
+{
+    TCGv_i64 tmp;
+    tmp = tcg_temp_new_i64();
+    rx_mul64lo(tmp, a->rs, a->rs2);
+    tcg_gen_add_i64(cpu_acc, cpu_acc, tmp);
+    tcg_temp_free_i64(tmp);
+    return true;
+}
+
+/* mvfachi rd */
+static bool trans_MVFACHI(DisasContext *ctx, arg_MVFACHI *a)
+{
+    tcg_gen_extrh_i64_i32(cpu_regs[a->rd], cpu_acc);
+    return true;
+}
+
+/* mvfacmi rd */
+static bool trans_MVFACMI(DisasContext *ctx, arg_MVFACMI *a)
+{
+    TCGv_i64 rd64;
+    rd64 = tcg_temp_new_i64();
+    tcg_gen_extract_i64(rd64, cpu_acc, 16, 32);
+    tcg_gen_extrl_i64_i32(cpu_regs[a->rd], rd64);
+    tcg_temp_free_i64(rd64);
+    return true;
+}
+
+/* mvtachi rs */
+static bool trans_MVTACHI(DisasContext *ctx, arg_MVTACHI *a)
+{
+    TCGv_i64 rs64;
+    rs64 = tcg_temp_new_i64();
+    tcg_gen_extu_i32_i64(rs64, cpu_regs[a->rs]);
+    tcg_gen_deposit_i64(cpu_acc, cpu_acc, rs64, 32, 32);
+    tcg_temp_free_i64(rs64);
+    return true;
+}
+
+/* mvtaclo rs */
+static bool trans_MVTACLO(DisasContext *ctx, arg_MVTACLO *a)
+{
+    TCGv_i64 rs64;
+    rs64 = tcg_temp_new_i64();
+    tcg_gen_extu_i32_i64(rs64, cpu_regs[a->rs]);
+    tcg_gen_deposit_i64(cpu_acc, cpu_acc, rs64, 0, 32);
+    tcg_temp_free_i64(rs64);
+    return true;
+}
+
+/* racw #imm */
+static bool trans_RACW(DisasContext *ctx, arg_RACW *a)
+{
+    TCGv imm = tcg_const_i32(a->imm + 1);
+    gen_helper_racw(cpu_env, imm);
+    tcg_temp_free(imm);
+    return true;
+}
+
+/* sat rd */
+static bool trans_SAT(DisasContext *ctx, arg_SAT *a)
+{
+    TCGv tmp, z;
+    tmp = tcg_temp_new();
+    z = tcg_const_i32(0);
+    /* S == 1 -> 0xffffffff / S == 0 -> 0x00000000 */
+    tcg_gen_sari_i32(tmp, cpu_psw_s, 31);
+    /* S == 1 -> 0x7fffffff / S == 0 -> 0x80000000 */
+    tcg_gen_xori_i32(tmp, tmp, 0x80000000);
+    tcg_gen_movcond_i32(TCG_COND_LT, cpu_regs[a->rd],
+                        cpu_psw_o, z, tmp, cpu_regs[a->rd]);
+    tcg_temp_free(tmp);
+    tcg_temp_free(z);
+    return true;
+}
+
+/* satr */
+static bool trans_SATR(DisasContext *ctx, arg_SATR *a)
+{
+    gen_helper_satr(cpu_env);
+    return true;
+}
+
+#define cat3(a, b, c) a##b##c
+#define FOP(name, op)                                                   \
+    static bool cat3(trans_, name, _ir)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _ir) * a)      \
+    {                                                                   \
+        TCGv imm = tcg_const_i32(li(ctx, 0));                           \
+        gen_helper_##op(cpu_regs[a->rd], cpu_env,                       \
+                        cpu_regs[a->rd], imm);                          \
+        tcg_temp_free(imm);                                             \
+        return true;                                                    \
+    }                                                                   \
+    static bool cat3(trans_, name, _mr)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _mr) * a)      \
+    {                                                                   \
+        TCGv val, mem;                                                  \
+        mem = tcg_temp_new();                                           \
+        val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs);            \
+        gen_helper_##op(cpu_regs[a->rd], cpu_env,                       \
+                        cpu_regs[a->rd], val);                          \
+        tcg_temp_free(mem);                                             \
+        return true;                                                    \
+    }
+
+#define FCONVOP(name, op)                                       \
+    static bool trans_##name(DisasContext *ctx, arg_##name * a) \
+    {                                                           \
+        TCGv val, mem;                                          \
+        mem = tcg_temp_new();                                   \
+        val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs);    \
+        gen_helper_##op(cpu_regs[a->rd], cpu_env, val);         \
+        tcg_temp_free(mem);                                     \
+        return true;                                            \
+    }
+
+FOP(FADD, fadd)
+FOP(FSUB, fsub)
+FOP(FMUL, fmul)
+FOP(FDIV, fdiv)
+
+/* fcmp #imm, rd */
+static bool trans_FCMP_ir(DisasContext *ctx, arg_FCMP_ir * a)
+{
+    TCGv imm = tcg_const_i32(li(ctx, 0));
+    gen_helper_fcmp(cpu_env, cpu_regs[a->rd], imm);
+    tcg_temp_free(imm);
+    return true;
+}
+
+/* fcmp dsp[rs], rd */
+/* fcmp rs, rd */
+static bool trans_FCMP_mr(DisasContext *ctx, arg_FCMP_mr *a)
+{
+    TCGv val, mem;
+    mem = tcg_temp_new();
+    val = rx_load_source(ctx, mem, a->ld, MO_32, a->rs);
+    gen_helper_fcmp(cpu_env, cpu_regs[a->rd], val);
+    tcg_temp_free(mem);
+    return true;
+}
+
+FCONVOP(FTOI, ftoi)
+FCONVOP(ROUND, round)
+
+/* itof rs, rd */
+/* itof dsp[rs], rd */
+static bool trans_ITOF(DisasContext *ctx, arg_ITOF * a)
+{
+    TCGv val, mem;
+    mem = tcg_temp_new();
+    val = rx_load_source(ctx, mem, a->ld, a->mi, a->rs);
+    gen_helper_itof(cpu_regs[a->rd], cpu_env, val);
+    tcg_temp_free(mem);
+    return true;
+}
+
+static void rx_bsetm(TCGv mem, TCGv mask)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    rx_gen_ld(MO_8, val, mem);
+    tcg_gen_or_i32(val, val, mask);
+    rx_gen_st(MO_8, val, mem);
+    tcg_temp_free(val);
+}
+
+static void rx_bclrm(TCGv mem, TCGv mask)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    rx_gen_ld(MO_8, val, mem);
+    tcg_gen_andc_i32(val, val, mask);
+    rx_gen_st(MO_8, val, mem);
+    tcg_temp_free(val);
+}
+
+static void rx_btstm(TCGv mem, TCGv mask)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    rx_gen_ld(MO_8, val, mem);
+    tcg_gen_and_i32(val, val, mask);
+    tcg_gen_setcondi_i32(TCG_COND_NE, cpu_psw_c, val, 0);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_c);
+    tcg_temp_free(val);
+}
+
+static void rx_bnotm(TCGv mem, TCGv mask)
+{
+    TCGv val;
+    val = tcg_temp_new();
+    rx_gen_ld(MO_8, val, mem);
+    tcg_gen_xor_i32(val, val, mask);
+    rx_gen_st(MO_8, val, mem);
+    tcg_temp_free(val);
+}
+
+static void rx_bsetr(TCGv reg, TCGv mask)
+{
+    tcg_gen_or_i32(reg, reg, mask);
+}
+
+static void rx_bclrr(TCGv reg, TCGv mask)
+{
+    tcg_gen_andc_i32(reg, reg, mask);
+}
+
+static inline void rx_btstr(TCGv reg, TCGv mask)
+{
+    TCGv t0;
+    t0 = tcg_temp_new();
+    tcg_gen_and_i32(t0, reg, mask);
+    tcg_gen_setcondi_i32(TCG_COND_NE, cpu_psw_c, t0, 0);
+    tcg_gen_mov_i32(cpu_psw_z, cpu_psw_c);
+    tcg_temp_free(t0);
+}
+
+static inline void rx_bnotr(TCGv reg, TCGv mask)
+{
+    tcg_gen_xor_i32(reg, reg, mask);
+}
+
+#define BITOP(name, op)                                                 \
+    static bool cat3(trans_, name, _im)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _im) * a)      \
+    {                                                                   \
+        TCGv mask, mem, addr;                                           \
+        mem = tcg_temp_new();                                           \
+        mask = tcg_const_i32(1 << a->imm);                              \
+        addr = rx_index_addr(ctx, mem, a->ld, MO_8, a->rs);             \
+        cat3(rx_, op, m)(addr, mask);                                   \
+        tcg_temp_free(mask);                                            \
+        tcg_temp_free(mem);                                             \
+        return true;                                                    \
+    }                                                                   \
+    static bool cat3(trans_, name, _ir)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _ir) * a)      \
+    {                                                                   \
+        TCGv mask;                                                      \
+        mask = tcg_const_i32(1 << a->imm);                              \
+        cat3(rx_, op, r)(cpu_regs[a->rd], mask);                        \
+        tcg_temp_free(mask);                                            \
+        return true;                                                    \
+    }                                                                   \
+    static bool cat3(trans_, name, _rr)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _rr) * a)      \
+    {                                                                   \
+        TCGv mask, b;                                                   \
+        mask = tcg_const_i32(1);                                        \
+        b = tcg_temp_new();                                             \
+        tcg_gen_andi_i32(b, cpu_regs[a->rs], 31);                       \
+        tcg_gen_shl_i32(mask, mask, b);                                 \
+        cat3(rx_, op, r)(cpu_regs[a->rd], mask);                        \
+        tcg_temp_free(mask);                                            \
+        tcg_temp_free(b);                                               \
+        return true;                                                    \
+    }                                                                   \
+    static bool cat3(trans_, name, _rm)(DisasContext *ctx,              \
+                                        cat3(arg_, name, _rm) * a)      \
+    {                                                                   \
+        TCGv mask, mem, addr, b;                                        \
+        mask = tcg_const_i32(1);                                        \
+        b = tcg_temp_new();                                             \
+        tcg_gen_andi_i32(b, cpu_regs[a->rd], 7);                        \
+        tcg_gen_shl_i32(mask, mask, b);                                 \
+        mem = tcg_temp_new();                                           \
+        addr = rx_index_addr(ctx, mem, a->ld, MO_8, a->rs);             \
+        cat3(rx_, op, m)(addr, mask);                                   \
+        tcg_temp_free(mem);                                             \
+        tcg_temp_free(mask);                                            \
+        tcg_temp_free(b);                                               \
+        return true;                                                    \
+    }
+
+BITOP(BSET, bset)
+BITOP(BCLR, bclr)
+BITOP(BTST, btst)
+BITOP(BNOT, bnot)
+
+static inline void bmcnd_op(TCGv val, TCGCond cond, int pos)
+{
+    TCGv bit;
+    DisasCompare dc;
+    dc.temp = tcg_temp_new();
+    bit = tcg_temp_new();
+    psw_cond(&dc, cond);
+    tcg_gen_andi_i32(val, val, ~(1 << pos));
+    tcg_gen_setcondi_i32(dc.cond, bit, dc.value, 0);
+    tcg_gen_deposit_i32(val, val, bit, pos, 1);
+    tcg_temp_free(bit);
+    tcg_temp_free(dc.temp);
+ }
+
+/* bmcnd #imm, dsp[rd] */
+static bool trans_BMCnd_im(DisasContext *ctx, arg_BMCnd_im *a)
+{
+    TCGv val, mem, addr;
+    val = tcg_temp_new();
+    mem = tcg_temp_new();
+    addr = rx_index_addr(ctx, mem, a->ld, MO_8, a->rd);
+    rx_gen_ld(MO_8, val, addr);
+    bmcnd_op(val, a->cd, a->imm);
+    rx_gen_st(MO_8, val, addr);
+    tcg_temp_free(val);
+    tcg_temp_free(mem);
+    return true;
+}
+
+/* bmcond #imm, rd */
+static bool trans_BMCnd_ir(DisasContext *ctx, arg_BMCnd_ir *a)
+{
+    bmcnd_op(cpu_regs[a->rd], a->cd, a->imm);
+    return true;
+}
+
+enum {
+    PSW_C = 0,
+    PSW_Z = 1,
+    PSW_S = 2,
+    PSW_O = 3,
+    PSW_I = 8,
+    PSW_U = 9,
+};
+
+static inline void clrsetpsw(DisasContext *ctx, int cb, int val)
+{
+    if (cb < 8) {
+        switch (cb) {
+        case PSW_C:
+            tcg_gen_movi_i32(cpu_psw_c, val);
+            break;
+        case PSW_Z:
+            tcg_gen_movi_i32(cpu_psw_z, val == 0);
+            break;
+        case PSW_S:
+            tcg_gen_movi_i32(cpu_psw_s, val ? -1 : 0);
+            break;
+        case PSW_O:
+            tcg_gen_movi_i32(cpu_psw_o, val << 31);
+            break;
+        default:
+            qemu_log_mask(LOG_GUEST_ERROR, "Invalid distination %d", cb);
+            break;
+        }
+    } else if (is_privileged(ctx, 0)) {
+        switch (cb) {
+        case PSW_I:
+            tcg_gen_movi_i32(cpu_psw_i, val);
+            ctx->base.is_jmp = DISAS_UPDATE;
+            break;
+        case PSW_U:
+            tcg_gen_movi_i32(cpu_psw_u, val);
+            break;
+        default:
+            qemu_log_mask(LOG_GUEST_ERROR, "Invalid distination %d", cb);
+            break;
+        }
+    }
+}
+
+/* clrpsw psw */
+static bool trans_CLRPSW(DisasContext *ctx, arg_CLRPSW *a)
+{
+    clrsetpsw(ctx, a->cb, 0);
+    return true;
+}
+
+/* setpsw psw */
+static bool trans_SETPSW(DisasContext *ctx, arg_SETPSW *a)
+{
+    clrsetpsw(ctx, a->cb, 1);
+    return true;
+}
+
+/* mvtipl #imm */
+static bool trans_MVTIPL(DisasContext *ctx, arg_MVTIPL *a)
+{
+    if (is_privileged(ctx, 1)) {
+        tcg_gen_movi_i32(cpu_psw_ipl, a->imm);
+        ctx->base.is_jmp = DISAS_UPDATE;
+    }
+    return true;
+}
+
+/* mvtc #imm, rd */
+static bool trans_MVTC_i(DisasContext *ctx, arg_MVTC_i *a)
+{
+    TCGv imm;
+
+    imm = tcg_const_i32(a->imm);
+    move_to_cr(ctx, imm, a->cr);
+    if (a->cr == 0 && is_privileged(ctx, 0)) {
+        ctx->base.is_jmp = DISAS_UPDATE;
+    }
+    tcg_temp_free(imm);
+    return true;
+}
+
+/* mvtc rs, rd */
+static bool trans_MVTC_r(DisasContext *ctx, arg_MVTC_r *a)
+{
+    move_to_cr(ctx, cpu_regs[a->rs], a->cr);
+    if (a->cr == 0 && is_privileged(ctx, 0)) {
+        ctx->base.is_jmp = DISAS_UPDATE;
+    }
+    return true;
+}
+
+/* mvfc rs, rd */
+static bool trans_MVFC(DisasContext *ctx, arg_MVFC *a)
+{
+    move_from_cr(cpu_regs[a->rd], a->cr, ctx->pc);
+    return true;
+}
+
+/* rtfi */
+static bool trans_RTFI(DisasContext *ctx, arg_RTFI *a)
+{
+    TCGv psw;
+    if (is_privileged(ctx, 1)) {
+        psw = tcg_temp_new();
+        tcg_gen_mov_i32(cpu_pc, cpu_bpc);
+        tcg_gen_mov_i32(psw, cpu_bpsw);
+        gen_helper_set_psw_rte(cpu_env, psw);
+        ctx->base.is_jmp = DISAS_EXIT;
+        tcg_temp_free(psw);
+    }
+    return true;
+}
+
+/* rte */
+static bool trans_RTE(DisasContext *ctx, arg_RTE *a)
+{
+    TCGv psw;
+    if (is_privileged(ctx, 1)) {
+        psw = tcg_temp_new();
+        pop(cpu_pc);
+        pop(psw);
+        gen_helper_set_psw_rte(cpu_env, psw);
+        ctx->base.is_jmp = DISAS_EXIT;
+        tcg_temp_free(psw);
+    }
+    return true;
+}
+
+/* brk */
+static bool trans_BRK(DisasContext *ctx, arg_BRK *a)
+{
+    tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
+    gen_helper_rxbrk(cpu_env);
+    ctx->base.is_jmp = DISAS_NORETURN;
+    return true;
+}
+
+/* int #imm */
+static bool trans_INT(DisasContext *ctx, arg_INT *a)
+{
+    TCGv vec;
+
+    tcg_debug_assert(a->imm < 0x100);
+    vec = tcg_const_i32(a->imm);
+    tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
+    gen_helper_rxint(cpu_env, vec);
+    tcg_temp_free(vec);
+    ctx->base.is_jmp = DISAS_NORETURN;
+    return true;
+}
+
+/* wait */
+static bool trans_WAIT(DisasContext *ctx, arg_WAIT *a)
+{
+    if (is_privileged(ctx, 1)) {
+        tcg_gen_addi_i32(cpu_pc, cpu_pc, 2);
+        gen_helper_wait(cpu_env);
+    }
+    return true;
+}
+
+static void rx_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
+{
+    CPURXState *env = cs->env_ptr;
+    DisasContext *ctx = container_of(dcbase, DisasContext, base);
+    ctx->env = env;
+}
+
+static void rx_tr_tb_start(DisasContextBase *dcbase, CPUState *cs)
+{
+}
+
+static void rx_tr_insn_start(DisasContextBase *dcbase, CPUState *cs)
+{
+    DisasContext *ctx = container_of(dcbase, DisasContext, base);
+
+    tcg_gen_insn_start(ctx->base.pc_next);
+}
+
+static bool rx_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *cs,
+                                    const CPUBreakpoint *bp)
+{
+    DisasContext *ctx = container_of(dcbase, DisasContext, base);
+
+    /* We have hit a breakpoint - make sure PC is up-to-date */
+    tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
+    gen_helper_debug(cpu_env);
+    ctx->base.is_jmp = DISAS_NORETURN;
+    ctx->base.pc_next += 1;
+    return true;
+}
+
+static void rx_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
+{
+    DisasContext *ctx = container_of(dcbase, DisasContext, base);
+    uint32_t insn;
+
+    ctx->pc = ctx->base.pc_next;
+    insn = decode_load(ctx);
+    if (!decode(ctx, insn)) {
+        gen_helper_raise_illegal_instruction(cpu_env);
+    }
+}
+
+static void rx_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
+{
+    DisasContext *ctx = container_of(dcbase, DisasContext, base);
+
+    switch (ctx->base.is_jmp) {
+    case DISAS_NEXT:
+    case DISAS_TOO_MANY:
+        gen_goto_tb(ctx, 0, dcbase->pc_next);
+        break;
+    case DISAS_JUMP:
+        if (ctx->base.singlestep_enabled) {
+            gen_helper_debug(cpu_env);
+        } else {
+            tcg_gen_lookup_and_goto_ptr();
+        }
+        break;
+    case DISAS_UPDATE:
+        tcg_gen_movi_i32(cpu_pc, ctx->base.pc_next);
+    case DISAS_EXIT:
+        tcg_gen_exit_tb(NULL, 0);
+        break;
+    case DISAS_NORETURN:
+        break;
+    default:
+        g_assert_not_reached();
+    }
+}
+
+static void rx_tr_disas_log(const DisasContextBase *dcbase, CPUState *cs)
+{
+    qemu_log("IN:\n");  /* , lookup_symbol(dcbase->pc_first)); */
+    log_target_disas(cs, dcbase->pc_first, dcbase->tb->size);
+}
+
+static const TranslatorOps rx_tr_ops = {
+    .init_disas_context = rx_tr_init_disas_context,
+    .tb_start           = rx_tr_tb_start,
+    .insn_start         = rx_tr_insn_start,
+    .breakpoint_check   = rx_tr_breakpoint_check,
+    .translate_insn     = rx_tr_translate_insn,
+    .tb_stop            = rx_tr_tb_stop,
+    .disas_log          = rx_tr_disas_log,
+};
+
+void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
+{
+    DisasContext dc;
+
+    translator_loop(&rx_tr_ops, &dc.base, cs, tb, max_insns);
+}
+
+void restore_state_to_opc(CPURXState *env, TranslationBlock *tb,
+                          target_ulong *data)
+{
+    env->pc = data[0];
+}
+
+#define ALLOC_REGISTER(sym, name) \
+    cpu_##sym = tcg_global_mem_new_i32(cpu_env, \
+                                       offsetof(CPURXState, sym), name)
+
+void rx_translate_init(void)
+{
+    static const char * const regnames[NUM_REGS] = {
+        "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7",
+        "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"
+    };
+    int i;
+
+    for (i = 0; i < NUM_REGS; i++) {
+        cpu_regs[i] = tcg_global_mem_new_i32(cpu_env,
+                                              offsetof(CPURXState, regs[i]),
+                                              regnames[i]);
+    }
+    ALLOC_REGISTER(pc, "PC");
+    ALLOC_REGISTER(psw_o, "PSW(O)");
+    ALLOC_REGISTER(psw_s, "PSW(S)");
+    ALLOC_REGISTER(psw_z, "PSW(Z)");
+    ALLOC_REGISTER(psw_c, "PSW(C)");
+    ALLOC_REGISTER(psw_u, "PSW(U)");
+    ALLOC_REGISTER(psw_i, "PSW(I)");
+    ALLOC_REGISTER(psw_pm, "PSW(PM)");
+    ALLOC_REGISTER(psw_ipl, "PSW(IPL)");
+    ALLOC_REGISTER(usp, "USP");
+    ALLOC_REGISTER(fpsw, "FPSW");
+    ALLOC_REGISTER(bpsw, "BPSW");
+    ALLOC_REGISTER(bpc, "BPC");
+    ALLOC_REGISTER(isp, "ISP");
+    ALLOC_REGISTER(fintv, "FINTV");
+    ALLOC_REGISTER(intb, "INTB");
+    cpu_acc = tcg_global_mem_new_i64(cpu_env,
+                                     offsetof(CPURXState, acc), "ACC");
+}
index dbe5346ec9019f4f5939598b7a8384d05239e7e4..1630818c280db8ff67525056b7491bad67ffe0a5 100644 (file)
@@ -61,7 +61,7 @@ typedef struct S390CPUClass {
     const char *desc;
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
     void (*load_normal)(CPUState *cpu);
     void (*reset)(CPUState *cpu, cpu_reset_type type);
 } S390CPUClass;
index 3dd396e8703579447e1f5dc2899e0dd1028cdcb6..427a46e3e1b61da1b7aae1f0e543ecba7a06330b 100644 (file)
@@ -96,8 +96,9 @@ static void s390_cpu_reset(CPUState *s, cpu_reset_type type)
     S390CPU *cpu = S390_CPU(s);
     S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
     CPUS390XState *env = &cpu->env;
+    DeviceState *dev = DEVICE(s);
 
-    scc->parent_reset(s);
+    scc->parent_reset(dev);
     cpu->env.sigp_order = 0;
     s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu);
 
@@ -450,8 +451,9 @@ static Property s390x_cpu_properties[] = {
     DEFINE_PROP_END_OF_LIST()
 };
 
-static void s390_cpu_reset_full(CPUState *s)
+static void s390_cpu_reset_full(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     return s390_cpu_reset(s, S390_CPU_RESET_CLEAR);
 }
 
@@ -466,7 +468,7 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_props(dc, s390x_cpu_properties);
     dc->user_creatable = true;
 
-    cpu_class_set_parent_reset(cc, s390_cpu_reset_full, &scc->parent_reset);
+    device_class_set_parent_reset(dc, s390_cpu_reset_full, &scc->parent_reset);
 #if !defined(CONFIG_USER_ONLY)
     scc->load_normal = s390_cpu_load_normal;
 #endif
index 0c56d055badafd820151f433c370b2c38848db93..72a63f3fd3f89c839e9cec2c894587cabb16ab4b 100644 (file)
@@ -51,7 +51,7 @@ typedef struct SuperHCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 
     uint32_t pvr;
     uint32_t prr;
index 70c8d8170ff30cce81228fe0f535ef35c349ddb7..3c68021c5650eb0bc36c135bc7d40866d1cf3cc5 100644 (file)
@@ -47,14 +47,14 @@ static bool superh_cpu_has_work(CPUState *cs)
     return cs->interrupt_request & CPU_INTERRUPT_HARD;
 }
 
-/* CPUClass::reset() */
-static void superh_cpu_reset(CPUState *s)
+static void superh_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     SuperHCPU *cpu = SUPERH_CPU(s);
     SuperHCPUClass *scc = SUPERH_CPU_GET_CLASS(cpu);
     CPUSH4State *env = &cpu->env;
 
-    scc->parent_reset(s);
+    scc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUSH4State, end_reset_fields));
 
@@ -214,7 +214,7 @@ static void superh_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_parent_realize(dc, superh_cpu_realizefn,
                                     &scc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, superh_cpu_reset, &scc->parent_reset);
+    device_class_set_parent_reset(dc, superh_cpu_reset, &scc->parent_reset);
 
     cc->class_by_name = superh_cpu_class_by_name;
     cc->has_work = superh_cpu_has_work;
index 7442e2768e8876cc66d27e4d3ff79b96692f50e3..8b4d33c21e50d177de59b39c08626573ad804d3f 100644 (file)
@@ -49,7 +49,7 @@ typedef struct SPARCCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
     sparc_def_t *cpu_def;
 } SPARCCPUClass;
 
index eeaecbd8d69b876a98603bff04980a9c0390bbf0..3f05aba9d66c0c7af072805cd9545e8416d89b36 100644 (file)
 
 //#define DEBUG_FEATURES
 
-/* CPUClass::reset() */
-static void sparc_cpu_reset(CPUState *s)
+static void sparc_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     SPARCCPU *cpu = SPARC_CPU(s);
     SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(cpu);
     CPUSPARCState *env = &cpu->env;
 
-    scc->parent_reset(s);
+    scc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUSPARCState, end_reset_fields));
     env->cwp = 0;
@@ -859,7 +859,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, void *data)
                                     &scc->parent_realize);
     device_class_set_props(dc, sparc_cpu_properties);
 
-    cpu_class_set_parent_reset(cc, sparc_cpu_reset, &scc->parent_reset);
+    device_class_set_parent_reset(dc, sparc_cpu_reset, &scc->parent_reset);
 
     cc->class_by_name = sparc_cpu_class_by_name;
     cc->parse_features = sparc_cpu_parse_features;
index cd422a0467a05575cd91192c64c1874ebd39ed6d..1fee87c094b289fec243aeab186f4f8ae9a8faef 100644 (file)
@@ -68,13 +68,14 @@ static bool tilegx_cpu_has_work(CPUState *cs)
     return true;
 }
 
-static void tilegx_cpu_reset(CPUState *s)
+static void tilegx_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     TileGXCPU *cpu = TILEGX_CPU(s);
     TileGXCPUClass *tcc = TILEGX_CPU_GET_CLASS(cpu);
     CPUTLGState *env = &cpu->env;
 
-    tcc->parent_reset(s);
+    tcc->parent_reset(dev);
 
     memset(env, 0, offsetof(CPUTLGState, end_reset_fields));
 }
@@ -142,7 +143,7 @@ static void tilegx_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_parent_realize(dc, tilegx_cpu_realizefn,
                                     &tcc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, tilegx_cpu_reset, &tcc->parent_reset);
+    device_class_set_parent_reset(dc, tilegx_cpu_reset, &tcc->parent_reset);
 
     cc->class_by_name = tilegx_cpu_class_by_name;
     cc->has_work = tilegx_cpu_has_work;
index 9cbec247d238a5b5fe4483225b6a0c4441803454..193b6bbccba37ebe5aed155fc0536a37749c239d 100644 (file)
@@ -118,7 +118,7 @@ typedef struct TileGXCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } TileGXCPUClass;
 
 /**
index 7c1e130b4ede26da18b61d89e935f00282be7e3d..cd819e6f240c0a4a4f3208fcfc2741f43064bc5b 100644 (file)
@@ -36,7 +36,7 @@ typedef struct TriCoreCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 } TriCoreCPUClass;
 
 typedef struct TriCoreCPU TriCoreCPU;
index 85bc9f03a1ee050da19e734051900175fa39c5da..743b404a95a06aaa0535fde5dd0691f2c84e74ca 100644 (file)
@@ -53,13 +53,14 @@ static void tricore_cpu_synchronize_from_tb(CPUState *cs,
     env->PC = tb->pc;
 }
 
-static void tricore_cpu_reset(CPUState *s)
+static void tricore_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     TriCoreCPU *cpu = TRICORE_CPU(s);
     TriCoreCPUClass *tcc = TRICORE_CPU_GET_CLASS(cpu);
     CPUTriCoreState *env = &cpu->env;
 
-    tcc->parent_reset(s);
+    tcc->parent_reset(dev);
 
     cpu_state_reset(env);
 }
@@ -153,7 +154,7 @@ static void tricore_cpu_class_init(ObjectClass *c, void *data)
     device_class_set_parent_realize(dc, tricore_cpu_realizefn,
                                     &mcc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, tricore_cpu_reset, &mcc->parent_reset);
+    device_class_set_parent_reset(dc, tricore_cpu_reset, &mcc->parent_reset);
     cc->class_by_name = tricore_cpu_class_by_name;
     cc->has_work = tricore_cpu_has_work;
 
index 9ac54241bd695afa52f31b788b17cbe9b096288d..3ea93ce1f937a05d4233be80fd404e842c14d6af 100644 (file)
@@ -56,7 +56,7 @@ typedef struct XtensaCPUClass {
     /*< public >*/
 
     DeviceRealize parent_realize;
-    void (*parent_reset)(CPUState *cpu);
+    DeviceReset parent_reset;
 
     const XtensaConfig *config;
 } XtensaCPUClass;
index 4856aee8eca61e35fdcc7e0c4691680e888a80d3..82c2ee0679f8f04cab54eb5971c44022887016a9 100644 (file)
@@ -67,14 +67,14 @@ bool xtensa_abi_call0(void)
 }
 #endif
 
-/* CPUClass::reset() */
-static void xtensa_cpu_reset(CPUState *s)
+static void xtensa_cpu_reset(DeviceState *dev)
 {
+    CPUState *s = CPU(dev);
     XtensaCPU *cpu = XTENSA_CPU(s);
     XtensaCPUClass *xcc = XTENSA_CPU_GET_CLASS(cpu);
     CPUXtensaState *env = &cpu->env;
 
-    xcc->parent_reset(s);
+    xcc->parent_reset(dev);
 
     env->exception_taken = 0;
     env->pc = env->config->exception_vector[EXC_RESET0 + env->static_vectors];
@@ -184,7 +184,7 @@ static void xtensa_cpu_class_init(ObjectClass *oc, void *data)
     device_class_set_parent_realize(dc, xtensa_cpu_realizefn,
                                     &xcc->parent_realize);
 
-    cpu_class_set_parent_reset(cc, xtensa_cpu_reset, &xcc->parent_reset);
+    device_class_set_parent_reset(dc, xtensa_cpu_reset, &xcc->parent_reset);
 
     cc->class_by_name = xtensa_cpu_class_by_name;
     cc->has_work = xtensa_cpu_has_work;
index d1340301b21778fba6613e86ece13f8e685cc6b4..51de67629837da69d3599ae6f1087ccfddfe51bc 100644 (file)
@@ -20,6 +20,8 @@ check-help:
        @echo " $(MAKE) check-venv           Creates a Python venv for tests"
        @echo " $(MAKE) check-clean          Clean the tests and related data"
        @echo
+       @echo " $(MAKE) get-vm-images        Downloads all images used by acceptance tests, according to configured targets (~350 MB each, 1.5 GB max)"
+       @echo
        @echo
        @echo "The variable SPEED can be set to control the gtester speed setting."
        @echo "Default options are -k and (for $(MAKE) V=1) --verbose; they can be"
@@ -890,7 +892,21 @@ $(TESTS_RESULTS_DIR):
 
 check-venv: $(TESTS_VENV_DIR)
 
-check-acceptance: check-venv $(TESTS_RESULTS_DIR)
+FEDORA_31_ARCHES_CANDIDATES=$(patsubst ppc64,ppc64le,$(TARGETS))
+FEDORA_31_ARCHES := x86_64 aarch64 ppc64le s390x
+FEDORA_31_DOWNLOAD=$(filter $(FEDORA_31_ARCHES),$(FEDORA_31_ARCHES_CANDIDATES))
+
+# download one specific Fedora 31 image
+get-vm-image-fedora-31-%: check-venv
+       $(call quiet-command, \
+             $(TESTS_VENV_DIR)/bin/python -m avocado vmimage get \
+             --distro=fedora --distro-version=31 --arch=$*, \
+       "AVOCADO", "Downloading acceptance tests VM image for $*")
+
+# download all vm images, according to defined targets
+get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD))
+
+check-acceptance: check-venv $(TESTS_RESULTS_DIR) get-vm-images
        $(call quiet-command, \
             $(TESTS_VENV_DIR)/bin/python -m avocado \
             --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
@@ -901,7 +917,7 @@ check-acceptance: check-venv $(TESTS_RESULTS_DIR)
 
 # Consolidated targets
 
-.PHONY: check-block check-qapi-schema check-qtest check-unit check check-clean
+.PHONY: check-block check-qapi-schema check-qtest check-unit check check-clean get-vm-images
 check-qapi-schema: check-tests/qapi-schema/frontend check-tests/qapi-schema/doc-good.texi
 check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
 ifeq ($(CONFIG_TOOLS),y)
index d4358eb43196eeac89d9682a54ea2534b4ae0e30..59e7b4f7631f5bed1d4a7c0063750da9133f9cff 100644 (file)
@@ -16,8 +16,21 @@ import tempfile
 
 import avocado
 
-SRC_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..', '..', '..')
-sys.path.append(os.path.join(SRC_ROOT_DIR, 'python'))
+#: The QEMU build root directory.  It may also be the source directory
+#: if building from the source dir, but it's safer to use BUILD_DIR for
+#: that purpose.  Be aware that if this code is moved outside of a source
+#: and build tree, it will not be accurate.
+BUILD_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
+
+if os.path.islink(os.path.dirname(os.path.dirname(__file__))):
+    # The link to the acceptance tests dir in the source code directory
+    lnk = os.path.dirname(os.path.dirname(__file__))
+    #: The QEMU root source directory
+    SOURCE_DIR = os.path.dirname(os.path.dirname(os.readlink(lnk)))
+else:
+    SOURCE_DIR = BUILD_DIR
+
+sys.path.append(os.path.join(SOURCE_DIR, 'python'))
 
 from qemu.machine import QEMUMachine
 
@@ -49,10 +62,10 @@ def pick_default_qemu_bin(arch=None):
     if is_readable_executable_file(qemu_bin_relative_path):
         return qemu_bin_relative_path
 
-    qemu_bin_from_src_dir_path = os.path.join(SRC_ROOT_DIR,
+    qemu_bin_from_bld_dir_path = os.path.join(BUILD_DIR,
                                               qemu_bin_relative_path)
-    if is_readable_executable_file(qemu_bin_from_src_dir_path):
-        return qemu_bin_from_src_dir_path
+    if is_readable_executable_file(qemu_bin_from_bld_dir_path):
+        return qemu_bin_from_bld_dir_path
 
 
 def _console_interaction(test, success_message, failure_message,
@@ -153,7 +166,7 @@ class Test(avocado.Test):
         self.qemu_bin = self.params.get('qemu_bin',
                                         default=default_qemu_bin)
         if self.qemu_bin is None:
-            self.cancel("No QEMU binary defined or found in the source tree")
+            self.cancel("No QEMU binary defined or found in the build tree")
 
     def _new_vm(self, *args):
         vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp())
diff --git a/tests/acceptance/boot_linux.py b/tests/acceptance/boot_linux.py
new file mode 100644 (file)
index 0000000..075a386
--- /dev/null
@@ -0,0 +1,222 @@
+# Functional test that boots a complete Linux system via a cloud image
+#
+# Copyright (c) 2018-2020 Red Hat, Inc.
+#
+# Author:
+#  Cleber Rosa <crosa@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or
+# later.  See the COPYING file in the top-level directory.
+
+import os
+
+from avocado_qemu import Test, BUILD_DIR
+
+from qemu.accel import kvm_available
+from qemu.accel import tcg_available
+
+from avocado.utils import cloudinit
+from avocado.utils import network
+from avocado.utils import vmimage
+from avocado.utils import datadrainer
+from avocado.utils.path import find_command
+
+ACCEL_NOT_AVAILABLE_FMT = "%s accelerator does not seem to be available"
+KVM_NOT_AVAILABLE = ACCEL_NOT_AVAILABLE_FMT % "KVM"
+TCG_NOT_AVAILABLE = ACCEL_NOT_AVAILABLE_FMT % "TCG"
+
+
+class BootLinux(Test):
+    """
+    Boots a Linux system, checking for a successful initialization
+    """
+
+    timeout = 900
+    chksum = None
+
+    def setUp(self):
+        super(BootLinux, self).setUp()
+        self.vm.add_args('-smp', '2')
+        self.vm.add_args('-m', '1024')
+        self.prepare_boot()
+        self.prepare_cloudinit()
+
+    def prepare_boot(self):
+        self.log.debug('Looking for and selecting a qemu-img binary to be '
+                       'used to create the bootable snapshot image')
+        # If qemu-img has been built, use it, otherwise the system wide one
+        # will be used.  If none is available, the test will cancel.
+        qemu_img = os.path.join(BUILD_DIR, 'qemu-img')
+        if not os.path.exists(qemu_img):
+            qemu_img = find_command('qemu-img', False)
+        if qemu_img is False:
+            self.cancel('Could not find "qemu-img", which is required to '
+                        'create the bootable image')
+        vmimage.QEMU_IMG = qemu_img
+
+        self.log.info('Downloading/preparing boot image')
+        # Fedora 31 only provides ppc64le images
+        image_arch = self.arch
+        if image_arch == 'ppc64':
+            image_arch = 'ppc64le'
+        try:
+            self.boot = vmimage.get(
+                'fedora', arch=image_arch, version='31',
+                checksum=self.chksum,
+                algorithm='sha256',
+                cache_dir=self.cache_dirs[0],
+                snapshot_dir=self.workdir)
+            self.vm.add_args('-drive', 'file=%s' % self.boot.path)
+        except:
+            self.cancel('Failed to download/prepare boot image')
+
+    def prepare_cloudinit(self):
+        self.log.info('Preparing cloudinit image')
+        try:
+            cloudinit_iso = os.path.join(self.workdir, 'cloudinit.iso')
+            self.phone_home_port = network.find_free_port()
+            cloudinit.iso(cloudinit_iso, self.name,
+                          username='root',
+                          password='password',
+                          # QEMU's hard coded usermode router address
+                          phone_home_host='10.0.2.2',
+                          phone_home_port=self.phone_home_port)
+            self.vm.add_args('-drive', 'file=%s,format=raw' % cloudinit_iso)
+        except Exception:
+            self.cancel('Failed to prepared cloudinit image')
+
+    def launch_and_wait(self):
+        self.vm.set_console()
+        self.vm.launch()
+        console_drainer = datadrainer.LineLogger(self.vm.console_socket.fileno(),
+                                                 logger=self.log.getChild('console'))
+        console_drainer.start()
+        self.log.info('VM launched, waiting for boot confirmation from guest')
+        cloudinit.wait_for_phone_home(('0.0.0.0', self.phone_home_port), self.name)
+
+
+class BootLinuxX8664(BootLinux):
+    """
+    :avocado: tags=arch:x86_64
+    """
+
+    chksum = 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0'
+
+    def test_pc_i440fx_tcg(self):
+        """
+        :avocado: tags=machine:pc
+        :avocado: tags=accel:tcg
+        """
+        if not tcg_available(self.qemu_bin):
+            self.cancel(TCG_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "tcg")
+        self.launch_and_wait()
+
+    def test_pc_i440fx_kvm(self):
+        """
+        :avocado: tags=machine:pc
+        :avocado: tags=accel:kvm
+        """
+        if not kvm_available(self.arch, self.qemu_bin):
+            self.cancel(KVM_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "kvm")
+        self.launch_and_wait()
+
+    def test_pc_q35_tcg(self):
+        """
+        :avocado: tags=machine:q35
+        :avocado: tags=accel:tcg
+        """
+        if not tcg_available(self.qemu_bin):
+            self.cancel(TCG_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "tcg")
+        self.launch_and_wait()
+
+    def test_pc_q35_kvm(self):
+        """
+        :avocado: tags=machine:q35
+        :avocado: tags=accel:kvm
+        """
+        if not kvm_available(self.arch, self.qemu_bin):
+            self.cancel(KVM_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "kvm")
+        self.launch_and_wait()
+
+
+class BootLinuxAarch64(BootLinux):
+    """
+    :avocado: tags=arch:aarch64
+    :avocado: tags=machine:virt
+    :avocado: tags=machine:gic-version=2
+    """
+
+    chksum = '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5639c997fdf16fe49'
+
+    def add_common_args(self):
+        self.vm.add_args('-bios',
+                         os.path.join(BUILD_DIR, 'pc-bios',
+                                      'edk2-aarch64-code.fd'))
+        self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0')
+        self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom')
+
+    def test_virt_tcg(self):
+        """
+        :avocado: tags=accel:tcg
+        :avocado: tags=cpu:max
+        """
+        if not tcg_available(self.qemu_bin):
+            self.cancel(TCG_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "tcg")
+        self.vm.add_args("-cpu", "max")
+        self.vm.add_args("-machine", "virt,gic-version=2")
+        self.add_common_args()
+        self.launch_and_wait()
+
+    def test_virt_kvm(self):
+        """
+        :avocado: tags=accel:kvm
+        :avocado: tags=cpu:host
+        """
+        if not kvm_available(self.arch, self.qemu_bin):
+            self.cancel(KVM_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "kvm")
+        self.vm.add_args("-cpu", "host")
+        self.vm.add_args("-machine", "virt,gic-version=2")
+        self.add_common_args()
+        self.launch_and_wait()
+
+
+class BootLinuxPPC64(BootLinux):
+    """
+    :avocado: tags=arch:ppc64
+    """
+
+    chksum = '7c3528b85a3df4b2306e892199a9e1e43f991c506f2cc390dc4efa2026ad2f58'
+
+    def test_pseries_tcg(self):
+        """
+        :avocado: tags=machine:pseries
+        :avocado: tags=accel:tcg
+        """
+        if not tcg_available(self.qemu_bin):
+            self.cancel(TCG_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "tcg")
+        self.launch_and_wait()
+
+
+class BootLinuxS390X(BootLinux):
+    """
+    :avocado: tags=arch:s390x
+    """
+
+    chksum = '4caaab5a434fd4d1079149a072fdc7891e354f834d355069ca982fdcaf5a122d'
+
+    def test_s390_ccw_virtio_tcg(self):
+        """
+        :avocado: tags=machine:s390-ccw-virtio
+        :avocado: tags=accel:tcg
+        """
+        if not tcg_available(self.qemu_bin):
+            self.cancel(TCG_NOT_AVAILABLE)
+        self.vm.add_args("-accel", "tcg")
+        self.launch_and_wait()
diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker
new file mode 100644 (file)
index 0000000..bfa0d33
--- /dev/null
@@ -0,0 +1,32 @@
+FROM centos:8.1.1911
+
+RUN dnf -y update
+ENV PACKAGES \
+    SDL-devel \
+    bison \
+    bzip2 \
+    bzip2-devel \
+    dbus-daemon \
+    flex \
+    gcc \
+    gcc-c++ \
+    gettext \
+    git \
+    glib2-devel \
+    libaio-devel \
+    libepoxy-devel \
+    lzo-devel \
+    make \
+    mesa-libEGL-devel \
+    nettle-devel \
+    perl-Test-Harness \
+    pixman-devel \
+    python36 \
+    rdma-core-devel \
+    spice-glib-devel \
+    spice-server \
+    tar \
+    zlib-devel
+
+RUN dnf install -y $PACKAGES
+RUN rpm -q $PACKAGES | sort > /packages.txt
index 9d7053e59df251f0b7e95d28e566283148bd4f19..d16d6431bc8b9c0a0701e35cb81f897240461a42 100644 (file)
@@ -9,7 +9,7 @@ MAINTAINER Philippe Mathieu-DaudĂ© <f4bug@amsat.org>
 
 ENV TARGET i686
 
-ENV PATH $PATH:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/bin
+ENV PATH $PATH:/usr/lib/mxe/usr/bin:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/bin
 
 ENV PKG_CONFIG_PATH \
     $PKG_CONFIG_PATH:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/lib/pkgconfig
index 23043baa26b355299578dc0c9a385a8cd40aac74..7bc4934cd23fa71da2e43a56f7124f9a537499c3 100644 (file)
@@ -30,12 +30,15 @@ import logging
 import atexit
 import io
 from collections import OrderedDict
+import faulthandler
 
 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
 from qemu import qtest
 
 assert sys.version_info >= (3,6)
 
+faulthandler.enable()
+
 # This will not work if arguments contain spaces but is necessary if we
 # want to support the override options that ./check supports.
 qemu_img_args = [os.environ.get('QEMU_IMG_PROG', 'qemu-img')]
@@ -922,7 +925,7 @@ class QMPTestCase(unittest.TestCase):
         self.assert_qmp(event, 'data/type', 'mirror')
 
     def pause_wait(self, job_id='job0'):
-        with Timeout(1, "Timeout waiting for job to pause"):
+        with Timeout(3, "Timeout waiting for job to pause"):
             while True:
                 result = self.vm.qmp('query-block-jobs')
                 found = False
index a24980054400bed7bd25c83c7b1a5777cc3836c0..48e8e02d6ecc02649641f1f1bce6dccd553402a6 100644 (file)
@@ -421,7 +421,7 @@ static char *create_qcow2_with_mbr(MBRpartitions mbr, uint64_t sectors)
     char *raw_path = strdup(template);
     char *qcow2_path = strdup(template);
     char cmd[100 + 2 * PATH_MAX];
-    uint8_t buf[512];
+    uint8_t buf[512] = {};
     int i, ret, fd, offset;
     uint64_t qcow2_size = sectors * 512;
     uint8_t status, parttype, head, sector, cyl;
@@ -457,8 +457,8 @@ static char *create_qcow2_with_mbr(MBRpartitions mbr, uint64_t sectors)
         buf[offset + 0x6] = sector;
         buf[offset + 0x7] = cyl;
 
-        (*(uint32_t *)&buf[offset + 0x8]) = cpu_to_le32(mbr[i].start_sect);
-        (*(uint32_t *)&buf[offset + 0xc]) = cpu_to_le32(mbr[i].nr_sects);
+        stl_le_p(&buf[offset + 0x8], mbr[i].start_sect);
+        stl_le_p(&buf[offset + 0xc], mbr[i].nr_sects);
 
         offset += 0x10;
     }
index 5953d317554779060fe95cd9bf93fd74d4227af1..8bb54a6360a101edb8cb7becdba7fddbf433c1f4 100644 (file)
@@ -56,6 +56,7 @@ static struct arch2cpu cpus_map[] = {
     { "hppa", "hppa" },
     { "riscv64", "rv64gcsu-v1.10.0" },
     { "riscv32", "rv32gcsu-v1.9.1" },
+    { "rx", "rx62n" },
 };
 
 static const char *get_cpu_model_by_arch(const char *arch)
index f4f1736a086e0387a7e20da931c05170e8da541d..f9c84b4ba1a0466a46aace654b8be04d01c53fef 100644 (file)
@@ -2,3 +2,4 @@
 # in the tests/venv Python virtual environment. For more info,
 # refer to: https://pip.pypa.io/en/stable/user_guide/#id1
 avocado-framework==76.0
+pycdlib==1.9.0
index e1f867085f413e63b607bbae833175225204f87e..b6726cf76b793826d8684c7a74d9608b7c67d3cf 100644 (file)
@@ -22,7 +22,6 @@
 
 typedef struct TestHBitmapData {
     HBitmap       *hb;
-    HBitmap       *meta;
     unsigned long *bits;
     size_t         size;
     size_t         old_size;
@@ -94,14 +93,6 @@ static void hbitmap_test_init(TestHBitmapData *data,
     }
 }
 
-static void hbitmap_test_init_meta(TestHBitmapData *data,
-                                   uint64_t size, int granularity,
-                                   int meta_chunk)
-{
-    hbitmap_test_init(data, size, granularity);
-    data->meta = hbitmap_create_meta(data->hb, meta_chunk);
-}
-
 static inline size_t hbitmap_test_array_size(size_t bits)
 {
     size_t n = DIV_ROUND_UP(bits, BITS_PER_LONG);
@@ -144,9 +135,6 @@ static void hbitmap_test_teardown(TestHBitmapData *data,
                                   const void *unused)
 {
     if (data->hb) {
-        if (data->meta) {
-            hbitmap_free_meta(data->hb);
-        }
         hbitmap_free(data->hb);
         data->hb = NULL;
     }
@@ -648,96 +636,6 @@ static void test_hbitmap_truncate_shrink_large(TestHBitmapData *data,
     hbitmap_test_truncate(data, size, -diff, 0);
 }
 
-static void hbitmap_check_meta(TestHBitmapData *data,
-                               int64_t start, int count)
-{
-    int64_t i;
-
-    for (i = 0; i < data->size; i++) {
-        if (i >= start && i < start + count) {
-            g_assert(hbitmap_get(data->meta, i));
-        } else {
-            g_assert(!hbitmap_get(data->meta, i));
-        }
-    }
-}
-
-static void hbitmap_test_meta(TestHBitmapData *data,
-                              int64_t start, int count,
-                              int64_t check_start, int check_count)
-{
-    hbitmap_reset_all(data->hb);
-    hbitmap_reset_all(data->meta);
-
-    /* Test "unset" -> "unset" will not update meta. */
-    hbitmap_reset(data->hb, start, count);
-    hbitmap_check_meta(data, 0, 0);
-
-    /* Test "unset" -> "set" will update meta */
-    hbitmap_set(data->hb, start, count);
-    hbitmap_check_meta(data, check_start, check_count);
-
-    /* Test "set" -> "set" will not update meta */
-    hbitmap_reset_all(data->meta);
-    hbitmap_set(data->hb, start, count);
-    hbitmap_check_meta(data, 0, 0);
-
-    /* Test "set" -> "unset" will update meta */
-    hbitmap_reset_all(data->meta);
-    hbitmap_reset(data->hb, start, count);
-    hbitmap_check_meta(data, check_start, check_count);
-}
-
-static void hbitmap_test_meta_do(TestHBitmapData *data, int chunk_size)
-{
-    uint64_t size = chunk_size * 100;
-    hbitmap_test_init_meta(data, size, 0, chunk_size);
-
-    hbitmap_test_meta(data, 0, 1, 0, chunk_size);
-    hbitmap_test_meta(data, 0, chunk_size, 0, chunk_size);
-    hbitmap_test_meta(data, chunk_size - 1, 1, 0, chunk_size);
-    hbitmap_test_meta(data, chunk_size - 1, 2, 0, chunk_size * 2);
-    hbitmap_test_meta(data, chunk_size - 1, chunk_size + 1, 0, chunk_size * 2);
-    hbitmap_test_meta(data, chunk_size - 1, chunk_size + 2, 0, chunk_size * 3);
-    hbitmap_test_meta(data, 7 * chunk_size - 1, chunk_size + 2,
-                      6 * chunk_size, chunk_size * 3);
-    hbitmap_test_meta(data, size - 1, 1, size - chunk_size, chunk_size);
-    hbitmap_test_meta(data, 0, size, 0, size);
-}
-
-static void test_hbitmap_meta_byte(TestHBitmapData *data, const void *unused)
-{
-    hbitmap_test_meta_do(data, BITS_PER_BYTE);
-}
-
-static void test_hbitmap_meta_word(TestHBitmapData *data, const void *unused)
-{
-    hbitmap_test_meta_do(data, BITS_PER_LONG);
-}
-
-static void test_hbitmap_meta_sector(TestHBitmapData *data, const void *unused)
-{
-    hbitmap_test_meta_do(data, BDRV_SECTOR_SIZE * BITS_PER_BYTE);
-}
-
-/**
- * Create an HBitmap and test set/unset.
- */
-static void test_hbitmap_meta_one(TestHBitmapData *data, const void *unused)
-{
-    int i;
-    int64_t offsets[] = {
-        0, 1, L1 - 1, L1, L1 + 1, L2 - 1, L2, L2 + 1, L3 - 1, L3, L3 + 1
-    };
-
-    hbitmap_test_init_meta(data, L3 * 2, 0, 1);
-    for (i = 0; i < ARRAY_SIZE(offsets); i++) {
-        hbitmap_test_meta(data, offsets[i], 1, offsets[i], 1);
-        hbitmap_test_meta(data, offsets[i], L1, offsets[i], L1);
-        hbitmap_test_meta(data, offsets[i], L2, offsets[i], L2);
-    }
-}
-
 static void test_hbitmap_serialize_align(TestHBitmapData *data,
                                          const void *unused)
 {
@@ -750,13 +648,6 @@ static void test_hbitmap_serialize_align(TestHBitmapData *data,
     g_assert_cmpint(r, ==, 64 << 3);
 }
 
-static void test_hbitmap_meta_zero(TestHBitmapData *data, const void *unused)
-{
-    hbitmap_test_init_meta(data, 0, 0, 1);
-
-    hbitmap_check_meta(data, 0, 0);
-}
-
 static void hbitmap_test_serialize_range(TestHBitmapData *data,
                                          uint8_t *buf, size_t buf_size,
                                          uint64_t pos, uint64_t count)
@@ -925,106 +816,123 @@ static void test_hbitmap_iter_and_reset(TestHBitmapData *data,
     hbitmap_iter_next(&hbi);
 }
 
-static void test_hbitmap_next_zero_check_range(TestHBitmapData *data,
-                                               uint64_t start,
-                                               uint64_t count)
+static void test_hbitmap_next_x_check_range(TestHBitmapData *data,
+                                            int64_t start,
+                                            int64_t count)
 {
-    int64_t ret1 = hbitmap_next_zero(data->hb, start, count);
-    int64_t ret2 = start;
+    int64_t next_zero = hbitmap_next_zero(data->hb, start, count);
+    int64_t next_dirty = hbitmap_next_dirty(data->hb, start, count);
+    int64_t next;
     int64_t end = start >= data->size || data->size - start < count ?
                 data->size : start + count;
+    bool first_bit = hbitmap_get(data->hb, start);
 
-    for ( ; ret2 < end && hbitmap_get(data->hb, ret2); ret2++) {
+    for (next = start;
+         next < end && hbitmap_get(data->hb, next) == first_bit;
+         next++)
+    {
         ;
     }
-    if (ret2 == end) {
-        ret2 = -1;
+
+    if (next == end) {
+        next = -1;
     }
 
-    g_assert_cmpint(ret1, ==, ret2);
+    g_assert_cmpint(next_dirty, ==, first_bit ? start : next);
+    g_assert_cmpint(next_zero, ==, first_bit ? next : start);
 }
 
-static void test_hbitmap_next_zero_check(TestHBitmapData *data, int64_t start)
+static void test_hbitmap_next_x_check(TestHBitmapData *data, int64_t start)
 {
-    test_hbitmap_next_zero_check_range(data, start, UINT64_MAX);
+    test_hbitmap_next_x_check_range(data, start, INT64_MAX);
 }
 
-static void test_hbitmap_next_zero_do(TestHBitmapData *data, int granularity)
+static void test_hbitmap_next_x_do(TestHBitmapData *data, int granularity)
 {
     hbitmap_test_init(data, L3, granularity);
-    test_hbitmap_next_zero_check(data, 0);
-    test_hbitmap_next_zero_check(data, L3 - 1);
-    test_hbitmap_next_zero_check_range(data, 0, 1);
-    test_hbitmap_next_zero_check_range(data, L3 - 1, 1);
+    test_hbitmap_next_x_check(data, 0);
+    test_hbitmap_next_x_check(data, L3 - 1);
+    test_hbitmap_next_x_check_range(data, 0, 1);
+    test_hbitmap_next_x_check_range(data, L3 - 1, 1);
 
     hbitmap_set(data->hb, L2, 1);
-    test_hbitmap_next_zero_check(data, 0);
-    test_hbitmap_next_zero_check(data, L2 - 1);
-    test_hbitmap_next_zero_check(data, L2);
-    test_hbitmap_next_zero_check(data, L2 + 1);
-    test_hbitmap_next_zero_check_range(data, 0, 1);
-    test_hbitmap_next_zero_check_range(data, 0, L2);
-    test_hbitmap_next_zero_check_range(data, L2 - 1, 1);
-    test_hbitmap_next_zero_check_range(data, L2 - 1, 2);
-    test_hbitmap_next_zero_check_range(data, L2, 1);
-    test_hbitmap_next_zero_check_range(data, L2 + 1, 1);
+    test_hbitmap_next_x_check(data, 0);
+    test_hbitmap_next_x_check(data, L2 - 1);
+    test_hbitmap_next_x_check(data, L2);
+    test_hbitmap_next_x_check(data, L2 + 1);
+    test_hbitmap_next_x_check_range(data, 0, 1);
+    test_hbitmap_next_x_check_range(data, 0, L2);
+    test_hbitmap_next_x_check_range(data, L2 - 1, 1);
+    test_hbitmap_next_x_check_range(data, L2 - 1, 2);
+    test_hbitmap_next_x_check_range(data, L2, 1);
+    test_hbitmap_next_x_check_range(data, L2 + 1, 1);
 
     hbitmap_set(data->hb, L2 + 5, L1);
-    test_hbitmap_next_zero_check(data, 0);
-    test_hbitmap_next_zero_check(data, L2 + 1);
-    test_hbitmap_next_zero_check(data, L2 + 2);
-    test_hbitmap_next_zero_check(data, L2 + 5);
-    test_hbitmap_next_zero_check(data, L2 + L1 - 1);
-    test_hbitmap_next_zero_check(data, L2 + L1);
-    test_hbitmap_next_zero_check_range(data, L2, 6);
-    test_hbitmap_next_zero_check_range(data, L2 + 1, 3);
-    test_hbitmap_next_zero_check_range(data, L2 + 4, L1);
-    test_hbitmap_next_zero_check_range(data, L2 + 5, L1);
+    test_hbitmap_next_x_check(data, 0);
+    test_hbitmap_next_x_check(data, L2 - L1);
+    test_hbitmap_next_x_check(data, L2 + 1);
+    test_hbitmap_next_x_check(data, L2 + 2);
+    test_hbitmap_next_x_check(data, L2 + 5);
+    test_hbitmap_next_x_check(data, L2 + L1 - 1);
+    test_hbitmap_next_x_check(data, L2 + L1);
+    test_hbitmap_next_x_check(data, L2 + L1 + 1);
+    test_hbitmap_next_x_check_range(data, L2 - 2, L1);
+    test_hbitmap_next_x_check_range(data, L2, 4);
+    test_hbitmap_next_x_check_range(data, L2, 6);
+    test_hbitmap_next_x_check_range(data, L2 + 1, 3);
+    test_hbitmap_next_x_check_range(data, L2 + 4, L1);
+    test_hbitmap_next_x_check_range(data, L2 + 5, L1);
+    test_hbitmap_next_x_check_range(data, L2 + 5 + L1 - 1, 1);
+    test_hbitmap_next_x_check_range(data, L2 + 5 + L1, 1);
+    test_hbitmap_next_x_check_range(data, L2 + 5 + L1 + 1, 1);
 
     hbitmap_set(data->hb, L2 * 2, L3 - L2 * 2);
-    test_hbitmap_next_zero_check(data, L2 * 2 - L1);
-    test_hbitmap_next_zero_check(data, L2 * 2 - 2);
-    test_hbitmap_next_zero_check(data, L2 * 2 - 1);
-    test_hbitmap_next_zero_check(data, L2 * 2);
-    test_hbitmap_next_zero_check(data, L3 - 1);
-    test_hbitmap_next_zero_check_range(data, L2 * 2 - L1, L1 + 1);
-    test_hbitmap_next_zero_check_range(data, L2 * 2, L2);
+    test_hbitmap_next_x_check(data, L2 * 2 - L1);
+    test_hbitmap_next_x_check(data, L2 * 2 - 2);
+    test_hbitmap_next_x_check(data, L2 * 2 - 1);
+    test_hbitmap_next_x_check(data, L2 * 2);
+    test_hbitmap_next_x_check(data, L2 * 2 + 1);
+    test_hbitmap_next_x_check(data, L2 * 2 + L1);
+    test_hbitmap_next_x_check(data, L3 - 1);
+    test_hbitmap_next_x_check_range(data, L2 * 2 - L1, L1 + 1);
+    test_hbitmap_next_x_check_range(data, L2 * 2, L2);
 
     hbitmap_set(data->hb, 0, L3);
-    test_hbitmap_next_zero_check(data, 0);
+    test_hbitmap_next_x_check(data, 0);
 }
 
-static void test_hbitmap_next_zero_0(TestHBitmapData *data, const void *unused)
+static void test_hbitmap_next_x_0(TestHBitmapData *data, const void *unused)
 {
-    test_hbitmap_next_zero_do(data, 0);
+    test_hbitmap_next_x_do(data, 0);
 }
 
-static void test_hbitmap_next_zero_4(TestHBitmapData *data, const void *unused)
+static void test_hbitmap_next_x_4(TestHBitmapData *data, const void *unused)
 {
-    test_hbitmap_next_zero_do(data, 4);
+    test_hbitmap_next_x_do(data, 4);
 }
 
-static void test_hbitmap_next_zero_after_truncate(TestHBitmapData *data,
-                                                  const void *unused)
+static void test_hbitmap_next_x_after_truncate(TestHBitmapData *data,
+                                               const void *unused)
 {
     hbitmap_test_init(data, L1, 0);
     hbitmap_test_truncate_impl(data, L1 * 2);
     hbitmap_set(data->hb, 0, L1);
-    test_hbitmap_next_zero_check(data, 0);
+    test_hbitmap_next_x_check(data, 0);
 }
 
-static void test_hbitmap_next_dirty_area_check(TestHBitmapData *data,
-                                               uint64_t offset,
-                                               uint64_t count)
+static void test_hbitmap_next_dirty_area_check_limited(TestHBitmapData *data,
+                                                       int64_t offset,
+                                                       int64_t count,
+                                                       int64_t max_dirty)
 {
-    uint64_t off1, off2;
-    uint64_t len1 = 0, len2;
+    int64_t off1, off2;
+    int64_t len1 = 0, len2;
     bool ret1, ret2;
     int64_t end;
 
-    off1 = offset;
-    len1 = count;
-    ret1 = hbitmap_next_dirty_area(data->hb, &off1, &len1);
+    ret1 = hbitmap_next_dirty_area(data->hb,
+            offset, count == INT64_MAX ? INT64_MAX : offset + count, max_dirty,
+            &off1, &len1);
 
     end = offset > data->size || data->size - offset < count ? data->size :
                                                                offset + count;
@@ -1033,45 +941,52 @@ static void test_hbitmap_next_dirty_area_check(TestHBitmapData *data,
         ;
     }
 
-    for (len2 = 1; off2 + len2 < end && hbitmap_get(data->hb, off2 + len2);
-         len2++) {
+    for (len2 = 1; (off2 + len2 < end && len2 < max_dirty &&
+                    hbitmap_get(data->hb, off2 + len2)); len2++)
+    {
         ;
     }
 
     ret2 = off2 < end;
-    if (!ret2) {
-        /* leave unchanged */
-        off2 = offset;
-        len2 = count;
+    g_assert_cmpint(ret1, ==, ret2);
+
+    if (ret2) {
+        g_assert_cmpint(off1, ==, off2);
+        g_assert_cmpint(len1, ==, len2);
     }
+}
 
-    g_assert_cmpint(ret1, ==, ret2);
-    g_assert_cmpint(off1, ==, off2);
-    g_assert_cmpint(len1, ==, len2);
+static void test_hbitmap_next_dirty_area_check(TestHBitmapData *data,
+                                               int64_t offset, int64_t count)
+{
+    test_hbitmap_next_dirty_area_check_limited(data, offset, count, INT64_MAX);
 }
 
 static void test_hbitmap_next_dirty_area_do(TestHBitmapData *data,
                                             int granularity)
 {
     hbitmap_test_init(data, L3, granularity);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
     test_hbitmap_next_dirty_area_check(data, 0, 1);
     test_hbitmap_next_dirty_area_check(data, L3 - 1, 1);
+    test_hbitmap_next_dirty_area_check_limited(data, 0, INT64_MAX, 1);
 
     hbitmap_set(data->hb, L2, 1);
     test_hbitmap_next_dirty_area_check(data, 0, 1);
     test_hbitmap_next_dirty_area_check(data, 0, L2);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
-    test_hbitmap_next_dirty_area_check(data, L2 - 1, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, L2 - 1, INT64_MAX);
     test_hbitmap_next_dirty_area_check(data, L2 - 1, 1);
     test_hbitmap_next_dirty_area_check(data, L2 - 1, 2);
     test_hbitmap_next_dirty_area_check(data, L2 - 1, 3);
-    test_hbitmap_next_dirty_area_check(data, L2, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, L2, INT64_MAX);
     test_hbitmap_next_dirty_area_check(data, L2, 1);
     test_hbitmap_next_dirty_area_check(data, L2 + 1, 1);
+    test_hbitmap_next_dirty_area_check_limited(data, 0, INT64_MAX, 1);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 - 1, 2, 1);
 
     hbitmap_set(data->hb, L2 + 5, L1);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
     test_hbitmap_next_dirty_area_check(data, L2 - 2, 8);
     test_hbitmap_next_dirty_area_check(data, L2 + 1, 5);
     test_hbitmap_next_dirty_area_check(data, L2 + 1, 3);
@@ -1081,18 +996,23 @@ static void test_hbitmap_next_dirty_area_do(TestHBitmapData *data,
     test_hbitmap_next_dirty_area_check(data, L2 + L1, L1);
     test_hbitmap_next_dirty_area_check(data, L2, 0);
     test_hbitmap_next_dirty_area_check(data, L2 + 1, 0);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 + 3, INT64_MAX, 3);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 + 3, 7, 10);
 
     hbitmap_set(data->hb, L2 * 2, L3 - L2 * 2);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
-    test_hbitmap_next_dirty_area_check(data, L2, UINT64_MAX);
-    test_hbitmap_next_dirty_area_check(data, L2 + 1, UINT64_MAX);
-    test_hbitmap_next_dirty_area_check(data, L2 + 5 + L1 - 1, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, L2, INT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, L2 + 1, INT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, L2 + 5 + L1 - 1, INT64_MAX);
     test_hbitmap_next_dirty_area_check(data, L2 + 5 + L1, 5);
     test_hbitmap_next_dirty_area_check(data, L2 * 2 - L1, L1 + 1);
     test_hbitmap_next_dirty_area_check(data, L2 * 2, L2);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 * 2 + 1, INT64_MAX, 5);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 * 2 + 1, 10, 5);
+    test_hbitmap_next_dirty_area_check_limited(data, L2 * 2 + 1, 2, 5);
 
     hbitmap_set(data->hb, 0, L3);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
 }
 
 static void test_hbitmap_next_dirty_area_0(TestHBitmapData *data,
@@ -1119,7 +1039,7 @@ static void test_hbitmap_next_dirty_area_after_truncate(TestHBitmapData *data,
     hbitmap_test_init(data, L1, 0);
     hbitmap_test_truncate_impl(data, L1 * 2);
     hbitmap_set(data->hb, L1 + 1, 1);
-    test_hbitmap_next_dirty_area_check(data, 0, UINT64_MAX);
+    test_hbitmap_next_dirty_area_check(data, 0, INT64_MAX);
 }
 
 int main(int argc, char **argv)
@@ -1165,12 +1085,6 @@ int main(int argc, char **argv)
     hbitmap_test_add("/hbitmap/truncate/shrink/large",
                      test_hbitmap_truncate_shrink_large);
 
-    hbitmap_test_add("/hbitmap/meta/zero", test_hbitmap_meta_zero);
-    hbitmap_test_add("/hbitmap/meta/one", test_hbitmap_meta_one);
-    hbitmap_test_add("/hbitmap/meta/byte", test_hbitmap_meta_byte);
-    hbitmap_test_add("/hbitmap/meta/word", test_hbitmap_meta_word);
-    hbitmap_test_add("/hbitmap/meta/sector", test_hbitmap_meta_sector);
-
     hbitmap_test_add("/hbitmap/serialize/align",
                      test_hbitmap_serialize_align);
     hbitmap_test_add("/hbitmap/serialize/basic",
@@ -1183,12 +1097,12 @@ int main(int argc, char **argv)
     hbitmap_test_add("/hbitmap/iter/iter_and_reset",
                      test_hbitmap_iter_and_reset);
 
-    hbitmap_test_add("/hbitmap/next_zero/next_zero_0",
-                     test_hbitmap_next_zero_0);
-    hbitmap_test_add("/hbitmap/next_zero/next_zero_4",
-                     test_hbitmap_next_zero_4);
-    hbitmap_test_add("/hbitmap/next_zero/next_zero_after_truncate",
-                     test_hbitmap_next_zero_after_truncate);
+    hbitmap_test_add("/hbitmap/next_zero/next_x_0",
+                     test_hbitmap_next_x_0);
+    hbitmap_test_add("/hbitmap/next_zero/next_x_4",
+                     test_hbitmap_next_x_4);
+    hbitmap_test_add("/hbitmap/next_zero/next_x_after_truncate",
+                     test_hbitmap_next_x_after_truncate);
 
     hbitmap_test_add("/hbitmap/next_dirty_area/next_dirty_area_0",
                      test_hbitmap_next_dirty_area_0);
index 1942287f33d9500417b75c3781aaa4f61b0cf9ae..049030a50ebad57aeaaca439e7b3c2a72d28cc0d 100644 (file)
 
 static void test_topo_bits(void)
 {
+    X86CPUTopoInfo topo_info = {0};
+
     /* simple tests for 1 thread per core, 1 core per die, 1 die per package */
-    g_assert_cmpuint(apicid_smt_width(1, 1, 1), ==, 0);
-    g_assert_cmpuint(apicid_core_width(1, 1, 1), ==, 0);
-    g_assert_cmpuint(apicid_die_width(1, 1, 1), ==, 0);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 1};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 0);
+    g_assert_cmpuint(apicid_core_width(&topo_info), ==, 0);
+    g_assert_cmpuint(apicid_die_width(&topo_info), ==, 0);
 
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 1, 1, 0), ==, 0);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 1, 1, 1), ==, 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 1, 1, 2), ==, 2);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 1, 1, 3), ==, 3);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 1};
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 0), ==, 0);
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 1), ==, 1);
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 2), ==, 2);
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 3), ==, 3);
 
 
     /* Test field width calculation for multiple values
      */
-    g_assert_cmpuint(apicid_smt_width(1, 1, 2), ==, 1);
-    g_assert_cmpuint(apicid_smt_width(1, 1, 3), ==, 2);
-    g_assert_cmpuint(apicid_smt_width(1, 1, 4), ==, 2);
-
-    g_assert_cmpuint(apicid_smt_width(1, 1, 14), ==, 4);
-    g_assert_cmpuint(apicid_smt_width(1, 1, 15), ==, 4);
-    g_assert_cmpuint(apicid_smt_width(1, 1, 16), ==, 4);
-    g_assert_cmpuint(apicid_smt_width(1, 1, 17), ==, 5);
-
-
-    g_assert_cmpuint(apicid_core_width(1, 30, 2), ==, 5);
-    g_assert_cmpuint(apicid_core_width(1, 31, 2), ==, 5);
-    g_assert_cmpuint(apicid_core_width(1, 32, 2), ==, 5);
-    g_assert_cmpuint(apicid_core_width(1, 33, 2), ==, 6);
-
-    g_assert_cmpuint(apicid_die_width(1, 30, 2), ==, 0);
-    g_assert_cmpuint(apicid_die_width(2, 30, 2), ==, 1);
-    g_assert_cmpuint(apicid_die_width(3, 30, 2), ==, 2);
-    g_assert_cmpuint(apicid_die_width(4, 30, 2), ==, 2);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 2};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 1);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 3};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 2);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 4};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 2);
+
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 14};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 4);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 15};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 4);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 16};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 4);
+    topo_info = (X86CPUTopoInfo) {0, 1, 1, 17};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 5);
+
+
+    topo_info = (X86CPUTopoInfo) {0, 1, 30, 2};
+    g_assert_cmpuint(apicid_core_width(&topo_info), ==, 5);
+    topo_info = (X86CPUTopoInfo) {0, 1, 31, 2};
+    g_assert_cmpuint(apicid_core_width(&topo_info), ==, 5);
+    topo_info = (X86CPUTopoInfo) {0, 1, 32, 2};
+    g_assert_cmpuint(apicid_core_width(&topo_info), ==, 5);
+    topo_info = (X86CPUTopoInfo) {0, 1, 33, 2};
+    g_assert_cmpuint(apicid_core_width(&topo_info), ==, 6);
+
+    topo_info = (X86CPUTopoInfo) {0, 1, 30, 2};
+    g_assert_cmpuint(apicid_die_width(&topo_info), ==, 0);
+    topo_info = (X86CPUTopoInfo) {0, 2, 30, 2};
+    g_assert_cmpuint(apicid_die_width(&topo_info), ==, 1);
+    topo_info = (X86CPUTopoInfo) {0, 3, 30, 2};
+    g_assert_cmpuint(apicid_die_width(&topo_info), ==, 2);
+    topo_info = (X86CPUTopoInfo) {0, 4, 30, 2};
+    g_assert_cmpuint(apicid_die_width(&topo_info), ==, 2);
 
     /* build a weird topology and see if IDs are calculated correctly
      */
 
     /* This will use 2 bits for thread ID and 3 bits for core ID
      */
-    g_assert_cmpuint(apicid_smt_width(1, 6, 3), ==, 2);
-    g_assert_cmpuint(apicid_core_offset(1, 6, 3), ==, 2);
-    g_assert_cmpuint(apicid_die_offset(1, 6, 3), ==, 5);
-    g_assert_cmpuint(apicid_pkg_offset(1, 6, 3), ==, 5);
-
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 0), ==, 0);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 1), ==, 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 2), ==, 2);
-
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 1 * 3 + 0), ==,
+    topo_info = (X86CPUTopoInfo) {0, 1, 6, 3};
+    g_assert_cmpuint(apicid_smt_width(&topo_info), ==, 2);
+    g_assert_cmpuint(apicid_core_offset(&topo_info), ==, 2);
+    g_assert_cmpuint(apicid_die_offset(&topo_info), ==, 5);
+    g_assert_cmpuint(apicid_pkg_offset(&topo_info), ==, 5);
+
+    topo_info = (X86CPUTopoInfo) {0, 1, 6, 3};
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 0), ==, 0);
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 1), ==, 1);
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 2), ==, 2);
+
+    topo_info = (X86CPUTopoInfo) {0, 1, 6, 3};
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 1 * 3 + 0), ==,
                      (1 << 2) | 0);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 1 * 3 + 1), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 1 * 3 + 1), ==,
                      (1 << 2) | 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 1 * 3 + 2), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 1 * 3 + 2), ==,
                      (1 << 2) | 2);
 
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 2 * 3 + 0), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 2 * 3 + 0), ==,
                      (2 << 2) | 0);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 2 * 3 + 1), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 2 * 3 + 1), ==,
                      (2 << 2) | 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 2 * 3 + 2), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 2 * 3 + 2), ==,
                      (2 << 2) | 2);
 
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 5 * 3 + 0), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 5 * 3 + 0), ==,
                      (5 << 2) | 0);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 5 * 3 + 1), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 5 * 3 + 1), ==,
                      (5 << 2) | 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3, 5 * 3 + 2), ==,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info, 5 * 3 + 2), ==,
                      (5 << 2) | 2);
 
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info,
                      1 * 6 * 3 + 0 * 3 + 0), ==, (1 << 5));
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info,
                      1 * 6 * 3 + 1 * 3 + 1), ==, (1 << 5) | (1 << 2) | 1);
-    g_assert_cmpuint(x86_apicid_from_cpu_idx(1, 6, 3,
+    g_assert_cmpuint(x86_apicid_from_cpu_idx(&topo_info,
                      3 * 6 * 3 + 5 * 3 + 2), ==, (3 << 5) | (5 << 2) | 2);
 }
 
index 242c6e519ce1715a54d6183c3648d009fedb9202..305b894a63f15d4327082823861a956cac51dca9 100644 (file)
@@ -104,7 +104,7 @@ struct HBitmap {
 /* Advance hbi to the next nonzero word and return it.  hbi->pos
  * is updated.  Returns zero if we reach the end of the bitmap.
  */
-unsigned long hbitmap_iter_skip_words(HBitmapIter *hbi)
+static unsigned long hbitmap_iter_skip_words(HBitmapIter *hbi)
 {
     size_t pos = hbi->pos;
     const HBitmap *hb = hbi->hb;
@@ -193,7 +193,31 @@ void hbitmap_iter_init(HBitmapIter *hbi, const HBitmap *hb, uint64_t first)
     }
 }
 
-int64_t hbitmap_next_zero(const HBitmap *hb, uint64_t start, uint64_t count)
+int64_t hbitmap_next_dirty(const HBitmap *hb, int64_t start, int64_t count)
+{
+    HBitmapIter hbi;
+    int64_t first_dirty_off;
+    uint64_t end;
+
+    assert(start >= 0 && count >= 0);
+
+    if (start >= hb->orig_size || count == 0) {
+        return -1;
+    }
+
+    end = count > hb->orig_size - start ? hb->orig_size : start + count;
+
+    hbitmap_iter_init(&hbi, hb, start);
+    first_dirty_off = hbitmap_iter_next(&hbi);
+
+    if (first_dirty_off < 0 || first_dirty_off >= end) {
+        return -1;
+    }
+
+    return MAX(start, first_dirty_off);
+}
+
+int64_t hbitmap_next_zero(const HBitmap *hb, int64_t start, int64_t count)
 {
     size_t pos = (start >> hb->granularity) >> BITS_PER_LEVEL;
     unsigned long *last_lev = hb->levels[HBITMAP_LEVELS - 1];
@@ -202,6 +226,8 @@ int64_t hbitmap_next_zero(const HBitmap *hb, uint64_t start, uint64_t count)
     uint64_t end_bit, sz;
     int64_t res;
 
+    assert(start >= 0 && count >= 0);
+
     if (start >= hb->orig_size || count == 0) {
         return -1;
     }
@@ -244,41 +270,33 @@ int64_t hbitmap_next_zero(const HBitmap *hb, uint64_t start, uint64_t count)
     return res;
 }
 
-bool hbitmap_next_dirty_area(const HBitmap *hb, uint64_t *start,
-                             uint64_t *count)
+bool hbitmap_next_dirty_area(const HBitmap *hb, int64_t start, int64_t end,
+                             int64_t max_dirty_count,
+                             int64_t *dirty_start, int64_t *dirty_count)
 {
-    HBitmapIter hbi;
-    int64_t firt_dirty_off, area_end;
-    uint32_t granularity = 1UL << hb->granularity;
-    uint64_t end;
+    int64_t next_zero;
 
-    if (*start >= hb->orig_size || *count == 0) {
+    assert(start >= 0 && end >= 0 && max_dirty_count > 0);
+
+    end = MIN(end, hb->orig_size);
+    if (start >= end) {
         return false;
     }
 
-    end = *count > hb->orig_size - *start ? hb->orig_size : *start + *count;
-
-    hbitmap_iter_init(&hbi, hb, *start);
-    firt_dirty_off = hbitmap_iter_next(&hbi);
-
-    if (firt_dirty_off < 0 || firt_dirty_off >= end) {
+    start = hbitmap_next_dirty(hb, start, end - start);
+    if (start < 0) {
         return false;
     }
 
-    if (firt_dirty_off + granularity >= end) {
-        area_end = end;
-    } else {
-        area_end = hbitmap_next_zero(hb, firt_dirty_off + granularity,
-                                     end - firt_dirty_off - granularity);
-        if (area_end < 0) {
-            area_end = end;
-        }
-    }
+    end = start + MIN(end - start, max_dirty_count);
 
-    if (firt_dirty_off > *start) {
-        *start = firt_dirty_off;
+    next_zero = hbitmap_next_zero(hb, start, end - start);
+    if (next_zero >= 0) {
+        end = next_zero;
     }
-    *count = area_end - *start;
+
+    *dirty_start = start;
+    *dirty_count = end - start;
 
     return true;
 }
@@ -298,6 +316,35 @@ uint64_t hbitmap_count(const HBitmap *hb)
     return hb->count << hb->granularity;
 }
 
+/**
+ * hbitmap_iter_next_word:
+ * @hbi: HBitmapIter to operate on.
+ * @p_cur: Location where to store the next non-zero word.
+ *
+ * Return the index of the next nonzero word that is set in @hbi's
+ * associated HBitmap, and set *p_cur to the content of that word
+ * (bits before the index that was passed to hbitmap_iter_init are
+ * trimmed on the first call).  Return -1, and set *p_cur to zero,
+ * if all remaining words are zero.
+ */
+static size_t hbitmap_iter_next_word(HBitmapIter *hbi, unsigned long *p_cur)
+{
+    unsigned long cur = hbi->cur[HBITMAP_LEVELS - 1];
+
+    if (cur == 0) {
+        cur = hbitmap_iter_skip_words(hbi);
+        if (cur == 0) {
+            *p_cur = 0;
+            return -1;
+        }
+    }
+
+    /* The next call will resume work from the next word.  */
+    hbi->cur[HBITMAP_LEVELS - 1] = 0;
+    *p_cur = cur;
+    return hbi->pos;
+}
+
 /* Count the number of set bits between start and end, not accounting for
  * the granularity.  Also an example of how to use hbitmap_iter_next_word.
  */
@@ -716,6 +763,7 @@ HBitmap *hbitmap_alloc(uint64_t size, int granularity)
     HBitmap *hb = g_new0(struct HBitmap, 1);
     unsigned i;
 
+    assert(size <= INT64_MAX);
     hb->orig_size = size;
 
     assert(granularity >= 0 && granularity < 64);
@@ -746,6 +794,7 @@ void hbitmap_truncate(HBitmap *hb, uint64_t size)
     uint64_t num_elements = size;
     uint64_t old;
 
+    assert(size <= INT64_MAX);
     hb->orig_size = size;
 
     /* Size comes in as logical elements, adjust for granularity. */
@@ -803,16 +852,15 @@ bool hbitmap_can_merge(const HBitmap *a, const HBitmap *b)
  */
 static void hbitmap_sparse_merge(HBitmap *dst, const HBitmap *src)
 {
-    uint64_t offset = 0;
-    uint64_t count = src->orig_size;
+    int64_t offset;
+    int64_t count;
 
-    while (hbitmap_next_dirty_area(src, &offset, &count)) {
+    for (offset = 0;
+         hbitmap_next_dirty_area(src, offset, src->orig_size, INT64_MAX,
+                                 &offset, &count);
+         offset += count)
+    {
         hbitmap_set(dst, offset, count);
-        offset += count;
-        if (offset >= src->orig_size) {
-            break;
-        }
-        count = src->orig_size - offset;
     }
 }
 
@@ -874,22 +922,6 @@ bool hbitmap_merge(const HBitmap *a, const HBitmap *b, HBitmap *result)
     return true;
 }
 
-HBitmap *hbitmap_create_meta(HBitmap *hb, int chunk_size)
-{
-    assert(!(chunk_size & (chunk_size - 1)));
-    assert(!hb->meta);
-    hb->meta = hbitmap_alloc(hb->size << hb->granularity,
-                             hb->granularity + ctz32(chunk_size));
-    return hb->meta;
-}
-
-void hbitmap_free_meta(HBitmap *hb)
-{
-    assert(hb->meta);
-    hbitmap_free(hb->meta);
-    hb->meta = NULL;
-}
-
 char *hbitmap_sha256(const HBitmap *bitmap, Error **errp)
 {
     size_t size = bitmap->sizes[HBITMAP_LEVELS - 1] * sizeof(unsigned long);