Commit ecbba30f authored by Masahiro Yamada's avatar Masahiro Yamada Committed by Thomas Bogendoerfer

mips: syscalls: switch to generic syscalltbl.sh

Many architectures duplicate similar shell scripts.

This commit converts mips to use scripts/syscalltbl.sh. This also
unifies syscall_table_32_o32.h and syscall_table_64_o32.h into
syscall_table_o32.h.

The offset parameters are unneeded here; __SYSCALL(nr, entry) is defined
as 'PTR entry', so the parameter 'nr' is not used in the first place.

With this commit, syscall tables and generated files are straight
mapped,  which makes things easier to understand.

  syscall_n32.tbl  -->  syscall_table_n32.h
  syscall_n64.tbl  -->  syscall_table_n64.h
  syscall_o32.tbl  -->  syscall_table_o32.h

Then, the abi parameters are also unneeded.
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 45c7e8af
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# MIPS headers # MIPS headers
generated-y += syscall_table_32_o32.h generated-y += syscall_table_n32.h
generated-y += syscall_table_64_n32.h generated-y += syscall_table_n64.h
generated-y += syscall_table_64_n64.h generated-y += syscall_table_o32.h
generated-y += syscall_table_64_o32.h
generated-y += unistd_nr_n32.h generated-y += unistd_nr_n32.h
generated-y += unistd_nr_n64.h generated-y += unistd_nr_n64.h
generated-y += unistd_nr_o32.h generated-y += unistd_nr_o32.h
......
...@@ -217,9 +217,9 @@ einval: li v0, -ENOSYS ...@@ -217,9 +217,9 @@ einval: li v0, -ENOSYS
#define sys_sched_getaffinity mipsmt_sys_sched_getaffinity #define sys_sched_getaffinity mipsmt_sys_sched_getaffinity
#endif /* CONFIG_MIPS_MT_FPAFF */ #endif /* CONFIG_MIPS_MT_FPAFF */
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
#define __SYSCALL(nr, entry) PTR entry #define __SYSCALL(nr, entry) PTR entry
.align 2 .align 2
.type sys_call_table, @object .type sys_call_table, @object
EXPORT(sys_call_table) EXPORT(sys_call_table)
#include <asm/syscall_table_32_o32.h> #include <asm/syscall_table_o32.h>
#undef __SYSCALL
...@@ -104,5 +104,4 @@ not_n32_scall: ...@@ -104,5 +104,4 @@ not_n32_scall:
#define __SYSCALL(nr, entry) PTR entry #define __SYSCALL(nr, entry) PTR entry
.type sysn32_call_table, @object .type sysn32_call_table, @object
EXPORT(sysn32_call_table) EXPORT(sysn32_call_table)
#include <asm/syscall_table_64_n32.h> #include <asm/syscall_table_n32.h>
#undef __SYSCALL
...@@ -113,5 +113,4 @@ illegal_syscall: ...@@ -113,5 +113,4 @@ illegal_syscall:
.align 3 .align 3
.type sys_call_table, @object .type sys_call_table, @object
EXPORT(sys_call_table) EXPORT(sys_call_table)
#include <asm/syscall_table_64_n64.h> #include <asm/syscall_table_n64.h>
#undef __SYSCALL
...@@ -213,9 +213,9 @@ einval: li v0, -ENOSYS ...@@ -213,9 +213,9 @@ einval: li v0, -ENOSYS
jr ra jr ra
END(sys32_syscall) END(sys32_syscall)
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, compat)
#define __SYSCALL(nr, entry) PTR entry #define __SYSCALL(nr, entry) PTR entry
.align 3 .align 3
.type sys32_call_table,@object .type sys32_call_table,@object
EXPORT(sys32_call_table) EXPORT(sys32_call_table)
#include <asm/syscall_table_64_o32.h> #include <asm/syscall_table_o32.h>
#undef __SYSCALL
...@@ -10,7 +10,7 @@ syscalln64 := $(src)/syscall_n64.tbl ...@@ -10,7 +10,7 @@ syscalln64 := $(src)/syscall_n64.tbl
syscallo32 := $(src)/syscall_o32.tbl syscallo32 := $(src)/syscall_o32.tbl
syshdr := $(srctree)/$(src)/syscallhdr.sh syshdr := $(srctree)/$(src)/syscallhdr.sh
sysnr := $(srctree)/$(src)/syscallnr.sh sysnr := $(srctree)/$(src)/syscallnr.sh
systbl := $(srctree)/$(src)/syscalltbl.sh systbl := $(srctree)/scripts/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@ quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \ cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
...@@ -25,10 +25,7 @@ quiet_cmd_sysnr = SYSNR $@ ...@@ -25,10 +25,7 @@ quiet_cmd_sysnr = SYSNR $@
'$(sysnr_offset_$(basetarget))' '$(sysnr_offset_$(basetarget))'
quiet_cmd_systbl = SYSTBL $@ quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \ cmd_systbl = $(CONFIG_SHELL) $(systbl) $< $@
'$(systbl_abis_$(basetarget))' \
'$(systbl_abi_$(basetarget))' \
'$(systbl_offset_$(basetarget))'
syshdr_offset_unistd_n32 := __NR_Linux syshdr_offset_unistd_n32 := __NR_Linux
$(uapi)/unistd_n32.h: $(syscalln32) $(syshdr) FORCE $(uapi)/unistd_n32.h: $(syscalln32) $(syshdr) FORCE
...@@ -57,33 +54,21 @@ sysnr_offset_unistd_nr_o32 := 4000 ...@@ -57,33 +54,21 @@ sysnr_offset_unistd_nr_o32 := 4000
$(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr) FORCE $(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr) FORCE
$(call if_changed,sysnr) $(call if_changed,sysnr)
systbl_abi_syscall_table_32_o32 := 32_o32 $(kapi)/syscall_table_n32.h: $(syscalln32) $(systbl) FORCE
systbl_offset_syscall_table_32_o32 := 4000
$(kapi)/syscall_table_32_o32.h: $(syscallo32) $(systbl) FORCE
$(call if_changed,systbl) $(call if_changed,systbl)
systbl_abi_syscall_table_64_n32 := 64_n32 $(kapi)/syscall_table_n64.h: $(syscalln64) $(systbl) FORCE
systbl_offset_syscall_table_64_n32 := 6000
$(kapi)/syscall_table_64_n32.h: $(syscalln32) $(systbl) FORCE
$(call if_changed,systbl) $(call if_changed,systbl)
systbl_abi_syscall_table_64_n64 := 64_n64 $(kapi)/syscall_table_o32.h: $(syscallo32) $(systbl) FORCE
systbl_offset_syscall_table_64_n64 := 5000
$(kapi)/syscall_table_64_n64.h: $(syscalln64) $(systbl) FORCE
$(call if_changed,systbl)
systbl_abi_syscall_table_64_o32 := 64_o32
systbl_offset_syscall_table_64_o32 := 4000
$(kapi)/syscall_table_64_o32.h: $(syscallo32) $(systbl) FORCE
$(call if_changed,systbl) $(call if_changed,systbl)
uapisyshdr-y += unistd_n32.h \ uapisyshdr-y += unistd_n32.h \
unistd_n64.h \ unistd_n64.h \
unistd_o32.h unistd_o32.h
kapisyshdr-y += syscall_table_32_o32.h \ kapisyshdr-y += syscall_table_n32.h \
syscall_table_64_n32.h \ syscall_table_n64.h \
syscall_table_64_n64.h \ syscall_table_o32.h \
syscall_table_64_o32.h \
unistd_nr_n32.h \ unistd_nr_n32.h \
unistd_nr_n64.h \ unistd_nr_n64.h \
unistd_nr_o32.h unistd_nr_o32.h
......
#!/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 compat ; do
if [ "$my_abi" = "64_o32" ] && [ ! -z "$compat" ]; then
emit $((nxt+offset)) $((nr+offset)) $compat
else
emit $((nxt+offset)) $((nr+offset)) $entry
fi
nxt=$((nr+1))
done
) > "$out"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment