qemu-riscv
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 2/2] linux-user/riscv: Update the syscall_nr's to the 5.5


From: Alistair Francis
Subject: Re: [PATCH v2 2/2] linux-user/riscv: Update the syscall_nr's to the 5.5 kernel
Date: Wed, 26 Feb 2020 11:32:45 -0800

On Tue, Feb 25, 2020 at 3:50 AM Laurent Vivier <address@hidden> wrote:
>
> Le 25/02/2020 à 00:21, Alistair Francis a écrit :
> > Signed-off-by: Alistair Francis <address@hidden>
> > ---
> >  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
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]