Re: [PATCH V2 05/19] csky: System Call
From: Arnd Bergmann <arnd@arndb.de>
Date: 2018-07-04 21:04:47
Also in:
lkml
On Wed, Jul 4, 2018 at 1:49 PM, Guo Ren [off-list ref] wrote:
quoted
quoted
+#define __NR_set_thread_area (__NR_arch_specific_syscall + 0) +__SYSCALL(__NR_set_thread_area, sys_set_thread_area) +#define __NR_ipc (__NR_arch_specific_syscall + 1) +__SYSCALL(__NR_ipc, sys_ipc) +#define __NR_socketcall (__NR_arch_specific_syscall + 2) +__SYSCALL(__NR_socketcall, sys_socketcall) +#define __NR_ugetrlimit (__NR_arch_specific_syscall + 3) +__SYSCALL(__NR_ugetrlimit, sys_getrlimit) +#define __NR_cacheflush (__NR_arch_specific_syscall + 4) +__SYSCALL(__NR_cacheflush, sys_cacheflush) +#define __NR_sysfs (__NR_arch_specific_syscall + 5) +__SYSCALL(__NR_sysfs, sys_sysfs) + +__SYSCALL(__NR_fadvise64_64, sys_csky_fadvise64_64)We definitely don't want ipc, socketcall, ugetrlimit, or sysfs.Ok, remove them.quoted
For fadvise64_64, please redefine the symbol name so the table points at the right entry.We need exchange the args for abiv1. loff_t is 64bit and abiv1 need 8-bytes align in args. /* * for abiv1 the 64bits args should be even th, So we need mov the advice forward. */ SYSCALL_DEFINE4(csky_fadvise64_64, int, fd, int, advice, loff_t, offset, loff_t, len) { return sys_fadvise64_64(fd, offset, len, advice); }
Right, I do understand what it's used for, my point was that you don't really need a separate system call number for it, just redirect the entry point using the same trick that nds32 has in arch/nds32/kernel/syscall_table.c: #define sys_fadvise64_64 csky_fadvise64_64
quoted
I'm not completely sure about set_thread_area, can you explain what you need that for?In abiv1 there is no tls register, so we use "trap 3" for csky_get_tls defined in arch/csky/kernel/entry.S to get tls. Also we use set_thread_area to set tls in kernel. For abiv2 it has r31 for tls-reg, but we still keep the mechanism.
ok.
Arnd