On Fri, Oct 12, 2018 at 11:45 AM Firoz Khan firoz.khan@linaro.org wrote:
diff --git a/arch/parisc/kernel/syscalls/Makefile b/arch/parisc/kernel/syscalls/Makefile new file mode 100644 index 0000000..a0af5a3 --- /dev/null +++ b/arch/parisc/kernel/syscalls/Makefile
+syshdr_abi_unistd_32 := common,32 +syshdr_offset_unistd_32 := __NR_Linux +$(uapi)/unistd_32.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
+syshdr_abi_unistd_64 := common,64 +syshdr_offset_unistd_64 := __NR_Linux +$(uapi)/unistd_64.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
The __NR_Linux seems misplaced here, don't we need that only for ia64 and mips?
+systbl_abi_syscall_table_32 := common,32 +$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
+systbl_abi_syscall_table_64 := common,64 +$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
$(call if_changed,systbl)
Have you considered making the 'common' part implied? I expected to see it done that way, although listing it explicitly doesn't seem harmful either.
+systbl_abi_syscall_table_c32 := common,compat,32 +$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
$(call if_changed,systbl)
The way you specify 'compat' as one item in a list of ABIs seems rather odd, I'd suggest keeping that a separate flag.
I think you can also pass arguments to 'if_changed', rather than setting a global variable to control it. arch/powerpc/boot/Makefile has some examples of that. It should be possible to do this like
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl) $(call if_changed,systbl,common|32,compat)
Passing "common|32" as the list of ABIs in the first argument, and 'compat' as the second argument.
diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl new file mode 100644 index 0000000..7c9f268 --- /dev/null +++ b/arch/parisc/kernel/syscalls/syscall.tbl
...
+346 common copy_file_range sys_copy_file_range +347 common preadv2 sys_preadv2 compat_sys_preadv2 +348 common pwritev2 sys_pwritev2 compat_sys_pwritev2 +349 common statx sys_statx +350 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents \ No newline at end of file
Here is the missing newline again. This should never happen if your text editor is configured correctly.
diff --git a/arch/parisc/kernel/syscalls/syscallhdr.sh b/arch/parisc/kernel/syscalls/syscallhdr.sh new file mode 100644 index 0000000..607d4ca --- /dev/null +++ b/arch/parisc/kernel/syscalls/syscallhdr.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0
+in="$1" +out="$2" +my_abis=`echo "($3)" | tr ',' '|'` +prefix="$4" +offset="$5"
+fileguard=_UAPI_ASM_PARISC_`basename "$out" | sed \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
- -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
Maybe use ${ARCH} instead of PARISC here to keep it the same across architectures?
- my_abi="$(cut -d'|' -f2 <<< $my_abis)"
- while read nr abi name entry compat ; do
if [ $my_abi = "compat" ]; then
This check seems really fragile, but if you add another argument to the script instead of listing "compat" as the second option in the list of ABIs, I think it's fine.
ARnd