System call table generation support is provided for alpha, ia64, m68k, microblaze, mips, parisc, powerpc, sh, sparc and xtensa architectures. The implementat- ions are almost similar across all the above archte- ctures. In order to reduce the source code across all the above architectures, create common ".sh" files and keep it in the common directory, script/. This will be a generic scripts which can use for all the above architectures.
This patch depends on; https://lore.kernel.org/lkml/1546439331-18646-1-git-send-email-firoz.khan@li...
Firoz Khan (2): m68k: remove nargs from __SYSCALL m68k: generate uapi header and syscall table header files
arch/m68k/kernel/syscalls/Makefile | 11 ++++++++-- arch/m68k/kernel/syscalls/syscallhdr.sh | 36 --------------------------------- arch/m68k/kernel/syscalls/syscalltbl.sh | 32 ----------------------------- arch/m68k/kernel/syscalltable.S | 2 +- 4 files changed, 10 insertions(+), 71 deletions(-) delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh
The __SYSCALL macro's arguments are system call number, system call entry name and number of arguments for the system call.
Argument- nargs in __SYSCALL(nr, entry, nargs) is neither calculated nor used anywhere. So it would be better to keep the implementaion as __SYSCALL(nr, entry). This will unifies the implementation with some other architetures too.
Signed-off-by: Firoz Khan firoz.khan@linaro.org --- arch/m68k/kernel/syscalls/syscalltbl.sh | 4 ++-- arch/m68k/kernel/syscalltable.S | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh index 85d78d9..904b8e6 100644 --- a/arch/m68k/kernel/syscalls/syscalltbl.sh +++ b/arch/m68k/kernel/syscalls/syscalltbl.sh @@ -13,10 +13,10 @@ emit() { t_entry="$3"
while [ $t_nxt -lt $t_nr ]; do - printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}" + printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}" t_nxt=$((t_nxt+1)) done - printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}" + printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}" }
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | ( diff --git a/arch/m68k/kernel/syscalltable.S b/arch/m68k/kernel/syscalltable.S index d329cc7..0082664 100644 --- a/arch/m68k/kernel/syscalltable.S +++ b/arch/m68k/kernel/syscalltable.S @@ -18,7 +18,7 @@ #define sys_mmap2 sys_mmap_pgoff #endif
-#define __SYSCALL(nr, entry, nargs) .long entry +#define __SYSCALL(nr, entry) .long entry .section .rodata ALIGN ENTRY(sys_call_table)
Hi Firoz,
Thanks for your patch!
On Wed, Jan 2, 2019 at 4:19 PM Firoz Khan firoz.khan@linaro.org wrote:
The __SYSCALL macro's arguments are system call number, system call entry name and number of arguments for the
name,
system call.
Argument- nargs in __SYSCALL(nr, entry, nargs) is neither
Argument nargs
calculated nor used anywhere. So it would be better to keep the implementaion as __SYSCALL(nr, entry). This will
implementation
unifies the implementation with some other architetures
unify architectures
too.
Signed-off-by: Firoz Khan firoz.khan@linaro.org
arch/m68k/kernel/syscalls/syscalltbl.sh | 4 ++-- arch/m68k/kernel/syscalltable.S | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh index 85d78d9..904b8e6 100644 --- a/arch/m68k/kernel/syscalls/syscalltbl.sh +++ b/arch/m68k/kernel/syscalls/syscalltbl.sh @@ -13,10 +13,10 @@ emit() { t_entry="$3"
while [ $t_nxt -lt $t_nr ]; do
printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
Please keep the space after the comma.
t_nxt=$((t_nxt+1)) done
printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}"
Idem ditto.
Gr{oetje,eeting}s,
Geert
Hi Geert,
Thanks for your feedback.
On Thu, 3 Jan 2019 at 16:15, Geert Uytterhoeven geert@linux-m68k.org wrote:
while [ $t_nxt -lt $t_nr ]; do
printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}"
Please keep the space after the comma.
This is intentional as I was facing some compilation issue with one architecture (If I'm right it is powerpc) when I keep the space after comma.
Firoz
Unified system call table generation script must be run to generate unistd_32.h and syscall_table.h files. This patch will have changes which will invokes the script.
This patch will generate unistd_32.h and syscall_table.h files by the syscall table generation script invoked by m68k/Makefile and the generated files against the removed files must be identical.
The generated uapi header file will be included in uapi/- asm/unistd.h and generated system call table header file will be included by kernel/syscalltable.S file.
Signed-off-by: Firoz Khan firoz.khan@linaro.org --- arch/m68k/kernel/syscalls/Makefile | 11 ++++++++-- arch/m68k/kernel/syscalls/syscallhdr.sh | 36 --------------------------------- arch/m68k/kernel/syscalls/syscalltbl.sh | 32 ----------------------------- 3 files changed, 9 insertions(+), 70 deletions(-) delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh
diff --git a/arch/m68k/kernel/syscalls/Makefile b/arch/m68k/kernel/syscalls/Makefile index 659faef..75c7421 100644 --- a/arch/m68k/kernel/syscalls/Makefile +++ b/arch/m68k/kernel/syscalls/Makefile @@ -6,8 +6,9 @@ _dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \ $(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
syscall := $(srctree)/$(src)/syscall.tbl -syshdr := $(srctree)/$(src)/syscallhdr.sh -systbl := $(srctree)/$(src)/syscalltbl.sh +syshdr := $(srctree)/scripts/syscallhdr.sh +sysnr := $(srctree)/scripts/syscallnr.sh +systbl := $(srctree)/scripts/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@ cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \ @@ -15,6 +16,12 @@ quiet_cmd_syshdr = SYSHDR $@ '$(syshdr_pfx_$(basetarget))' \ '$(syshdr_offset_$(basetarget))'
+quiet_cmd_sysnr = SYSNR $@ + cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \ + '$(sysnr_abis_$(basetarget))' \ + '$(sysnr_pfx_$(basetarget))' \ + '$(sysnr_offset_$(basetarget))' + quiet_cmd_systbl = SYSTBL $@ cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \ '$(systbl_abis_$(basetarget))' \ diff --git a/arch/m68k/kernel/syscalls/syscallhdr.sh b/arch/m68k/kernel/syscalls/syscallhdr.sh deleted file mode 100644 index 6f357d6..0000000 --- a/arch/m68k/kernel/syscalls/syscallhdr.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -in="$1" -out="$2" -my_abis=`echo "($3)" | tr ',' '|'` -prefix="$4" -offset="$5" - -fileguard=_UAPI_ASM_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 __NR_%s%s\t%s\n" \ - "${prefix}" "${name}" "${nr}" - else - printf "#define __NR_%s%s\t(%s + %s)\n" \ - "${prefix}" "${name}" "${offset}" "${nr}" - fi - nxt=$((nr+1)) - done - - printf "\n" - printf "#ifdef __KERNEL__\n" - printf "#define __NR_syscalls\t%s\n" "${nxt}" - printf "#endif\n" - printf "\n" - printf "#endif /* %s */\n" "${fileguard}" -) > "$out" diff --git a/arch/m68k/kernel/syscalls/syscalltbl.sh b/arch/m68k/kernel/syscalls/syscalltbl.sh deleted file mode 100644 index 904b8e6..0000000 --- a/arch/m68k/kernel/syscalls/syscalltbl.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -in="$1" -out="$2" -my_abis=`echo "($3)" | tr ',' '|'` -my_abi="$4" -offset="$5" - -emit() { - t_nxt="$1" - t_nr="$2" - t_entry="$3" - - while [ $t_nxt -lt $t_nr ]; do - printf "__SYSCALL(%s,sys_ni_syscall)\n" "${t_nxt}" - t_nxt=$((t_nxt+1)) - done - printf "__SYSCALL(%s,%s)\n" "${t_nxt}" "${t_entry}" -} - -grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | ( - nxt=0 - if [ -z "$offset" ]; then - offset=0 - fi - - while read nr abi name entry ; do - emit $((nxt+offset)) $((nr+offset)) $entry - nxt=$((nr+1)) - done -) > "$out"
Hi Firoz,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on m68k/for-next] [also build test ERROR on next-20190102] [cannot apply to v4.20] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Firoz-Khan/m68k-remove-nargs-from-_... base: https://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git for-next config: m68k-multi_defconfig (attached as .config) compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=m68k
All errors (new ones prefixed by >>):
make[2]: *** No rule to make target 'scripts/syscalltbl.sh', needed by 'arch/m68k/include/generated/asm/syscall_table.h'. make[2]: *** No rule to make target 'scripts/syscallhdr.sh', needed by 'arch/m68k/include/generated/uapi/asm/unistd_32.h'.
make[2]: Target 'all' not remade because of errors. make[1]: *** [archheaders] Error 2 make[1]: Target 'prepare' not remade because of errors. make: *** [sub-make] Error 2
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Firoz,
Thanks for your patch!
On Wed, Jan 2, 2019 at 4:19 PM Firoz Khan firoz.khan@linaro.org wrote:
Subject: m68k: generate uapi header and syscall table header files
Unified system call table generation script must be run to generate unistd_32.h and syscall_table.h files. This patch will have changes which will invokes the script.
This patch will generate unistd_32.h and syscall_table.h files by the syscall table generation script invoked by m68k/Makefile and the generated files against the removed files must be identical.
The generated uapi header file will be included in uapi/- asm/unistd.h and generated system call table header file will be included by kernel/syscalltable.S file.
This doesn't really describe what this patch is doing. This patch switches m68k over to use the common scripts for system call header file generation.
Signed-off-by: Firoz Khan firoz.khan@linaro.org
arch/m68k/kernel/syscalls/Makefile | 11 ++++++++-- arch/m68k/kernel/syscalls/syscallhdr.sh | 36 --------------------------------- arch/m68k/kernel/syscalls/syscalltbl.sh | 32 ----------------------------- 3 files changed, 9 insertions(+), 70 deletions(-) delete mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh delete mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh
diff --git a/arch/m68k/kernel/syscalls/Makefile b/arch/m68k/kernel/syscalls/Makefile index 659faef..75c7421 100644 --- a/arch/m68k/kernel/syscalls/Makefile +++ b/arch/m68k/kernel/syscalls/Makefile @@ -6,8 +6,9 @@ _dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \ $(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
syscall := $(srctree)/$(src)/syscall.tbl -syshdr := $(srctree)/$(src)/syscallhdr.sh -systbl := $(srctree)/$(src)/syscalltbl.sh +syshdr := $(srctree)/scripts/syscallhdr.sh +sysnr := $(srctree)/scripts/syscallnr.sh
What's the purpose of adding sysnr?
+systbl := $(srctree)/scripts/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@ cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \ @@ -15,6 +16,12 @@ quiet_cmd_syshdr = SYSHDR $@ '$(syshdr_pfx_$(basetarget))' \ '$(syshdr_offset_$(basetarget))'
+quiet_cmd_sysnr = SYSNR $@
cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
'$(sysnr_abis_$(basetarget))' \
'$(sysnr_pfx_$(basetarget))' \
'$(sysnr_offset_$(basetarget))'
What's the purpose of adding this build rule, which is unused?
The patch works fine though.
I assume the common build rules will be moved to a common place later?
Gr{oetje,eeting}s,
Geert
Hi Geert,
Thanks for your feedback!
On Thu, 3 Jan 2019 at 17:13, Geert Uytterhoeven geert@linux-m68k.org wrote:
The generated uapi header file will be included in uapi/- asm/unistd.h and generated system call table header file will be included by kernel/syscalltable.S file.
This doesn't really describe what this patch is doing. This patch switches m68k over to use the common scripts for system call header file generation.
Sure. I'll compose new commit message.
syscall := $(srctree)/$(src)/syscall.tbl -syshdr := $(srctree)/$(src)/syscallhdr.sh -systbl := $(srctree)/$(src)/syscalltbl.sh +syshdr := $(srctree)/scripts/syscallhdr.sh +sysnr := $(srctree)/scripts/syscallnr.sh
What's the purpose of adding sysnr?
Yes. This is not really required here. I planned to change the implementation in some other way, but didn't looks perfect and this was left here unnoticed.
+quiet_cmd_sysnr = SYSNR $@
cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
'$(sysnr_abis_$(basetarget))' \
'$(sysnr_pfx_$(basetarget))' \
'$(sysnr_offset_$(basetarget))'
What's the purpose of adding this build rule, which is unused?
Sure.
Firoz