On Tue, Feb 25, 2020 at 3:50 AM Laurent Vivier <laur...@vivier.eu> wrote: > > 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)
Fixed! Your script also updated this :) > > 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 added brackets and fixed everything above. > > ... > > I think you can remove following defintion as they should be translated > by the target glibc. glibc won't be exposing these externally, the current plan is just to use this internally to glibc. Alistair > > > +/* > > + * 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 >