Le 25/02/2020 à 00:21, Alistair Francis a écrit : > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > --- > linux-user/riscv/syscall32_nr.h | 314 ++++++++++++++++++++++++++++++++ > linux-user/riscv/syscall64_nr.h | 303 ++++++++++++++++++++++++++++++ > linux-user/riscv/syscall_nr.h | 294 +----------------------------- > 3 files changed, 619 insertions(+), 292 deletions(-) > create mode 100644 linux-user/riscv/syscall32_nr.h > create mode 100644 linux-user/riscv/syscall64_nr.h > > diff --git a/linux-user/riscv/syscall32_nr.h b/linux-user/riscv/syscall32_nr.h > new file mode 100644 > index 0000000000..c3bf5930d0 > --- /dev/null > +++ b/linux-user/riscv/syscall32_nr.h > @@ -0,0 +1,314 @@ > +/* > + * Syscall numbers from asm-generic for RV32. > + */ > + > +#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_statfs 43 > +#define TARGET_NR_fstatfs 44 > +#define TARGET_NR_truncate 45 > +#define TARGET_NR_ftruncate 46
For riscv32, it's the 64bit version name to use: #define TARGET_NR_statfs64 43 #define TARGET_NR_fstatfs64 44 #define TARGET_NR_truncate64 45 #define TARGET_NR_ftruncate64 46 (and below) because: include/uapi/asm-generic/unistd.h #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) ... #else #define __NR_fcntl64 __NR3264_fcntl #define __NR_statfs64 __NR3264_statfs #define __NR_fstatfs64 __NR3264_fstatfs #define __NR_truncate64 __NR3264_truncate #define __NR_ftruncate64 __NR3264_ftruncate #define __NR_llseek __NR3264_lseek #define __NR_sendfile64 __NR3264_sendfile #if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64) #define __NR_fstatat64 __NR3264_fstatat #define __NR_fstat64 __NR3264_fstat #endif ... arch/riscv/include/uapi/asm/unistd.h #define __ARCH_WANT_NEW_STAT arch/riscv/include/uapi/asm/bitsperlong.h #define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8) ... > +#define TARGET_NR_getdents64 61 > +#define TARGET_NR__llseek 62 TARGET_NR_llseek > +#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 TARGET_NR_sendfile64 > +#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_fstatat64 79 #define TARGET_NR_fstat64 80 ... > +#define TARGET_NR_sethostname 161 > +#define TARGET_NR_setdomainname 162 #define TARGET_NR_getrlimit 163 #define TARGET_NR_setrlimit 164 because include/uapi/asm-generic/unistd.h #ifdef __ARCH_WANT_SET_GET_RLIMIT /* getrlimit and setrlimit are superseded with prlimit64 */ #define __NR_getrlimit 163 __SC_COMP(__NR_getrlimit, sys_getrlimit, compat_sys_getrlimit) #define __NR_setrlimit 164 __SC_COMP(__NR_setrlimit, sys_setrlimit, compat_sys_setrlimit) #endif arch/riscv/include/uapi/asm/unistd.h #define __ARCH_WANT_SET_GET_RLIMIT ... > +#define TARGET_NR_arch_specific_syscall 244 > +#define TARGET_NR_riscv_flush_icache TARGET_NR_arch_specific_syscall + 15 It should be good to keep parenthesis around the declaration: (TARGET_NR_arch_specific_syscall + 15) ... I think you can remove following defintion as they should be translated by the target glibc. > +/* > + * Alias some of the older pre 64-bit time_t syscalls to the 64-bit > + * ones for RV32. This is based on the list used by glibc. > + */ > +#define TARGET_NR_futex TARGET_NR_futex_time64 > +#define TARGET_NR_rt_sigtimedwait TARGET_NR_rt_sigtimedwait_time64 > +#define TARGET_NR_ppoll TARGET_NR_ppoll_time64 > +#define TARGET_NR_utimensat TARGET_NR_utimensat_time64 > +#define TARGET_NR_pselect6 TARGET_NR_pselect6_time64 > +#define TARGET_NR_recvmmsg TARGET_NR_recvmmsg_time64 > +#define TARGET_NR_semtimedop TARGET_NR_semtimedop_time64 > +#define TARGET_NR_mq_timedreceive TARGET_NR_mq_timedreceive_time64 > +#define TARGET_NR_mq_timedsend TARGET_NR_mq_timedsend_time64 > +#define TARGET_NR_clock_getres TARGET_NR_clock_getres_time64 > +#define TARGET_NR_timerfd_settime TARGET_NR_timerfd_settime64 > +#define TARGET_NR_timerfd_gettime TARGET_NR_timerfd_gettime64 > +#define TARGET_NR_sched_rr_get_interval > TARGET_NR_sched_rr_get_interval_time64 > +#define TARGET_NR_clock_adjtime TARGET_NR_clock_adjtime64 > + > +#endif > diff --git a/linux-user/riscv/syscall64_nr.h b/linux-user/riscv/syscall64_nr.h > new file mode 100644 > index 0000000000..b58364b570 > --- /dev/null > +++ b/linux-user/riscv/syscall64_nr.h syscall64_nr.h is correct. Thanks, Laurent