On Mon, 8 Oct 2018 at 10:47, Firoz Khan <firoz.khan@xxxxxxxxxx> wrote: > > The system call tables are in different format in all > architecture and it will be difficult to manually add or > modify the system calls in the respective files. To make > it easy by keeping a script and which'll generate the > header file and syscall table file so this change will > unify them across all architectures. > > The system call table generation script is added in > syscalls directory which contain the script to generate > both uapi header file system call table generation file > and syscall.tbl file which'll be the input for the > scripts. > > syscall.tbl contains the list of available system calls > along with system call number and corresponding entry point. > Add a new system call in this architecture will be possible > by adding new entry in the syscall.tbl file. > > Adding a new table entry consisting of: > - System call number. > - ABI. > - System call name. > - Entry point name. > - Compat entry name, if required. > > syscallhdr.sh and syscalltbl.sh will generate uapi header- > unistd_32/64.h and syscall_table_32/64/c32.h files respect- > ively. File syscall_table_32/64/c32.h is included by sys- > call.S - the real system call table. Both .sh files will > parse the content syscall.tbl to generate the header and > table files. > > ARM, s390 and x86 architecuture does have the similar support. > I leverage their implementation to come up with a generic > solution. > > Signed-off-by: Firoz Khan <firoz.khan@xxxxxxxxxx> > --- > arch/parisc/kernel/syscalls/Makefile | 55 +++++ > arch/parisc/kernel/syscalls/syscall.tbl | 352 ++++++++++++++++++++++++++++++ > arch/parisc/kernel/syscalls/syscallhdr.sh | 35 +++ > arch/parisc/kernel/syscalls/syscalltbl.sh | 41 ++++ > 4 files changed, 483 insertions(+) > create mode 100644 arch/parisc/kernel/syscalls/Makefile > create mode 100644 arch/parisc/kernel/syscalls/syscall.tbl > create mode 100644 arch/parisc/kernel/syscalls/syscallhdr.sh > create mode 100644 arch/parisc/kernel/syscalls/syscalltbl.sh > > diff --git a/arch/parisc/kernel/syscalls/Makefile b/arch/parisc/kernel/syscalls/Makefile > new file mode 100644 > index 0000000..e4c9c63 > --- /dev/null > +++ b/arch/parisc/kernel/syscalls/Makefile > @@ -0,0 +1,55 @@ > +# SPDX-License-Identifier: GPL-2.0 > +kapi := arch/$(SRCARCH)/include/generated/asm > +uapi := arch/$(SRCARCH)/include/generated/uapi/asm > + > +_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 > + > +quiet_cmd_syshdr = SYSHDR $@ > + cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \ > + '$(syshdr_abi_$(basetarget))' \ > + '$(syshdr_pfx_$(basetarget))' \ > + '$(syshdr_offset_$(basetarget))' > + > +quiet_cmd_systbl = SYSTBL $@ > + cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \ > + '$(systbl_abi_$(basetarget))' \ > + '$(systbl_offset_$(basetarget))' > + > +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) > + > +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) > + > +systbl_abi_syscall_table_c32 := common,64 > +$(kapi)/syscall_table_c32.h: $(syscall) $(systbl) > + $(call if_changed,systbl) > + > +uapisyshdr-y += unistd_32.h unistd_64.h > +kapisyshdr-y += syscall_table_32.h \ > + syscall_table_64.h \ > + syscall_table_c32.h > + > +targets += $(uapisyshdr-y) $(kapisyshdr-y) > + > +PHONY += all > +all: $(addprefix $(uapi)/,$(uapisyshdr-y)) > +all: $(addprefix $(kapi)/,$(kapisyshdr-y)) > + @: > diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl > new file mode 100644 > index 0000000..4e85293 > --- /dev/null > +++ b/arch/parisc/kernel/syscalls/syscall.tbl > @@ -0,0 +1,352 @@ > +# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note > +# > +# system call numbers and entry vectors for parisc > +# > +# The format is: > +# <number> <abi> <name> <entry point> <compat entry point> > +# > +# The <abi> can be common, 64, or 32 for this file. > +# > +0 common restart_syscall sys_restart_syscall > +1 common exit sys_exit > +2 common fork sys_fork_wrapper > +3 common read sys_read > +4 common write sys_write > +5 common open sys_open compat_sys_open > +6 common close sys_close > +7 common waitpid sys_waitpid > +8 common creat sys_creat > +9 common link sys_link > +10 common unlink sys_unlink > +11 common execve sys_execve compat_sys_execve > +12 common chdir sys_chdir > +13 common time sys_time compat_sys_time > +14 common mknod sys_mknod > +15 common chmod sys_chmod > +16 common lchown sys_lchown > +17 common socket sys_socket > +18 common stat sys_newstat compat_sys_newstat > +19 common lseek sys_lseek compat_sys_lseek > +20 common getpid sys_getpid > +21 common mount sys_mount compat_sys_mount > +22 common bind sys_bind > +23 common setuid sys_setuid > +24 common getuid sys_getuid > +25 common stime sys_stime compat_sys_stime > +26 common ptrace sys_ptrace compat_sys_ptrace > +27 common alarm sys_alarm > +28 common fstat sys_newfstat compat_sys_newfstat > +29 common pause sys_pause > +30 common utime sys_utime compat_sys_utime > +31 common connect sys_connect > +32 common listen sys_listen > +33 common access sys_access > +34 common nice sys_nice > +35 common accept sys_accept > +36 common sync sys_sync > +37 common kill sys_kill > +38 common rename sys_rename > +39 common mkdir sys_mkdir > +40 common rmdir sys_rmdir > +41 common dup sys_dup > +42 common pipe sys_pipe > +43 common times sys_times compat_sys_times > +44 common getsockname sys_getsockname > +45 common brk sys_brk > +46 common setgid sys_setgid > +47 common getgid sys_getgid > +48 common signal sys_signal > +49 common geteuid sys_geteuid > +50 common getegid sys_getegid > +51 common acct sys_acct > +52 common umount2 sys_umount > +53 common getpeername sys_getpeername > +54 common ioctl sys_ioctl compat_sys_ioctl > +55 common fcntl sys_fcntl compat_sys_fcntl > +56 common socketpair sys_socketpair > +57 common setpgid sys_setpgid > +58 common send sys_send > +59 common uname sys_newuname > +60 common umask sys_umask > +61 common chroot sys_chroot > +62 common ustat sys_ustat compat_sys_ustat > +63 common dup2 sys_dup2 > +64 common getppid sys_getppid > +65 common getpgrp sys_getpgrp > +66 common setsid sys_setsid > +67 common pivot_root sys_pivot_root > +68 common sgetmask sys_sgetmask sys32_unimplemented > +69 common ssetmask sys_ssetmask sys32_unimplemented > +70 common setreuid sys_setreuid > +71 common setregid sys_setregid > +72 common mincore sys_mincore > +73 common sigpending sys_sigpending compat_sys_sigpending > +74 common sethostname sys_sethostname > +75 common setrlimit sys_setrlimit compat_sys_setrlimit > +76 common getrlimit sys_getrlimit compat_sys_getrlimit > +77 common getrusage sys_getrusage compat_sys_getrusage > +78 common gettimeofday sys_gettimeofday compat_sys_gettimeofday > +79 common settimeofday sys_settimeofday compat_sys_settimeofday > +80 common getgroups sys_getgroups > +81 common setgroups sys_setgroups > +82 common sendto sys_sendto > +83 common symlink sys_symlink > +84 common lstat sys_newlstat compat_sys_newlstat > +85 common readlink sys_readlink > +86 common uselib sys_ni_syscall > +87 common swapon sys_swapon > +88 common reboot sys_reboot > +89 common mmap2 sys_mmap2 > +90 common mmap sys_mmap > +91 common munmap sys_munmap > +92 common truncate sys_truncate compat_sys_truncate > +93 common ftruncate sys_ftruncate compat_sys_ftruncate > +94 common fchmod sys_fchmod > +95 common fchown sys_fchown > +96 common getpriority sys_getpriority > +97 common setpriority sys_setpriority > +98 common recv sys_recv > +99 common statfs sys_statfs compat_sys_statfs > +100 common fstatfs sys_fstatfs compat_sys_fstatfs > +101 common stat64 sys_stat64 > +103 common syslog sys_syslog > +104 common setitimer sys_setitimer compat_sys_setitimer > +105 common getitimer sys_getitimer compat_sys_getitimer > +106 common capget sys_capget > +107 common capset sys_capset > +108 32 pread64 parisc_pread64 > +108 64 pread64 sys_pread64 parisc_pread64 > +109 32 pwrite64 parisc_pwrite64 > +109 64 pwrite64 sys_pwrite64 parisc_pwrite64 > +110 common getcwd sys_getcwd > +111 common vhangup sys_vhangup > +112 common fstat64 sys_fstat64 > +113 common vfork sys_vfork_wrapper > +114 common wait4 sys_wait4 compat_sys_wait4 > +115 common swapoff sys_swapoff > +116 common sysinfo sys_sysinfo compat_sys_sysinfo > +117 common shutdown sys_shutdown > +118 common fsync sys_fsync > +119 common madvise sys_madvise > +120 common clone sys_clone_wrapper > +121 common setdomainname sys_setdomainname > +122 common sendfile sys_sendfile compat_sys_sendfile > +123 common recvfrom sys_recvfrom > +124 common adjtimex sys_adjtimex compat_sys_adjtimex > +125 common mprotect sys_mprotect > +126 common sigprocmask sys_sigprocmask compat_sys_sigprocmask > +128 common init_module sys_init_module > +129 common delete_module sys_delete_module > +131 common quotactl sys_quotactl > +132 common getpgid sys_getpgid > +133 common fchdir sys_fchdir > +134 common bdflush sys_bdflush > +135 common sysfs sys_sysfs > +136 32 personality parisc_personality > +136 64 personality sys_personality parisc_personality > +138 common setfsuid sys_setfsuid > +139 common setfsgid sys_setfsgid > +140 common _llseek sys_llseek > +141 common getdents sys_getdents compat_sys_getdents > +142 common _newselect sys_select compat_sys_select > +143 common flock sys_flock > +144 common msync sys_msync > +145 common readv sys_readv compat_sys_readv > +146 common writev sys_writev compat_sys_writev > +147 common getsid sys_getsid > +148 common fdatasync sys_fdatasync > +149 common _sysctl sys_sysctl compat_sys_sysctl > +150 common mlock sys_mlock > +151 common munlock sys_munlock > +152 common mlockall sys_mlockall > +153 common munlockall sys_munlockall > +154 common sched_setparam sys_sched_setparam > +155 common sched_getparam sys_sched_getparam > +156 common sched_setscheduler sys_sched_setscheduler > +157 common sched_getscheduler sys_sched_getscheduler > +158 common sched_yield sys_sched_yield > +159 common sched_get_priority_max sys_sched_get_priority_max > +160 common sched_get_priority_min sys_sched_get_priority_min > +161 common sched_rr_get_interval sys_sched_rr_get_interval compat_sys_sched_rr_get_interval > +162 common nanosleep sys_nanosleep compat_sys_nanosleep > +163 common mremap sys_mremap > +164 common setresuid sys_setresuid > +165 common getresuid sys_getresuid > +166 common sigaltstack sys_sigaltstack compat_sys_sigaltstack > +168 common poll sys_poll > +170 common setresgid sys_setresgid > +171 common getresgid sys_getresgid > +172 common prctl sys_prctl > +173 common rt_sigreturn sys_rt_sigreturn > +174 common rt_sigaction sys_rt_sigaction compat_sys_rt_sigaction > +175 common rt_sigprocmask sys_rt_sigprocmask compat_sys_rt_sigprocmask > +176 common rt_sigpending sys_rt_sigpending compat_sys_rt_sigpending > +177 common rt_sigtimedwait sys_rt_sigtimedwait compat_sys_rt_sigtimedwait > +178 common rt_sigqueueinfo sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo > +179 common rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend > +180 common chown sys_chown > +181 common setsockopt sys_setsockopt compat_sys_setsockopt > +182 common getsockopt sys_getsockopt compat_sys_getsockopt > +183 common sendmsg sys_sendmsg compat_sys_sendmsg > +184 common recvmsg sys_recvmsg compat_sys_recvmsg > +185 common semop sys_semop > +186 common semget sys_semget > +187 common semctl sys_semctl compat_sys_semctl > +188 common msgsnd sys_msgsnd compat_sys_msgsnd > +189 common msgrcv sys_msgrcv compat_sys_msgrcv > +190 common msgget sys_msgget > +191 common msgctl sys_msgctl compat_sys_msgctl > +192 common shmat sys_shmat compat_sys_shmat > +193 common shmdt sys_shmdt > +194 common shmget sys_shmget > +195 common shmctl sys_shmctl compat_sys_shmctl > +198 common lstat64 sys_lstat64 > +199 32 truncate64 parisc_truncate64 > +199 64 truncate64 sys_truncate64 parisc_truncate64 > +200 32 ftruncate64 parisc_ftruncate64 > +200 64 ftruncate64 sys_ftruncate64 parisc_ftruncate64 > +201 common getdents64 sys_getdents64 > +202 common fcntl64 sys_fcntl64 compat_sys_fcntl64 > +206 common gettid sys_gettid > +207 32 readahead parisc_readahead > +207 64 readahead sys_readahead parisc_readahead > +208 common tkill sys_tkill > +209 common sendfile64 sys_sendfile64 compat_sys_sendfile64 > +210 common futex sys_futex compat_sys_futex > +211 common sched_setaffinity sys_sched_setaffinity compat_sys_sched_setaffinity > +212 common sched_getaffinity sys_sched_getaffinity compat_sys_sched_getaffinity > +215 common io_setup sys_io_setup compat_sys_io_setup > +216 common io_destroy sys_io_destroy > +217 common io_getevents sys_io_getevents compat_sys_io_getevents > +218 common io_submit sys_io_submit compat_sys_io_submit > +219 common io_cancel sys_io_cancel > +222 common exit_group sys_exit_group > +223 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie > +224 common epoll_create sys_epoll_create > +225 common epoll_ctl sys_epoll_ctl > +226 common epoll_wait sys_epoll_wait > +227 common remap_file_pages sys_remap_file_pages > +228 common semtimedop sys_semtimedop compat_sys_semtimedop > +229 common mq_open sys_mq_open compat_sys_mq_open > +230 common mq_unlink sys_mq_unlink > +231 common mq_timedsend sys_mq_timedsend compat_sys_mq_timedsend > +232 common mq_timedreceive sys_mq_timedreceive compat_sys_mq_timedreceive > +233 common mq_notify sys_mq_notify compat_sys_mq_notify > +234 common mq_getsetattr sys_mq_getsetattr compat_sys_mq_getsetattr > +235 common waitid sys_waitid compat_sys_waitid > +236 32 fadvise64_64 parisc_fadvise64_64 > +236 64 fadvise64_64 sys_fadvise64_64 parisc_fadvise64_64 > +237 common set_tid_address sys_set_tid_address > +238 common setxattr sys_setxattr > +239 common lsetxattr sys_lsetxattr > +240 common fsetxattr sys_fsetxattr > +241 common getxattr sys_getxattr > +242 common lgetxattr sys_lgetxattr > +243 common fgetxattr sys_fgetxattr > +244 common listxattr sys_listxattr > +245 common llistxattr sys_llistxattr > +246 common flistxattr sys_flistxattr > +247 common removexattr sys_removexattr > +248 common lremovexattr sys_lremovexattr > +249 common fremovexattr sys_fremovexattr > +250 common timer_create sys_timer_create compat_sys_timer_create > +251 common timer_settime sys_timer_settime compat_sys_timer_settime > +252 common timer_gettime sys_timer_gettime compat_sys_timer_gettime > +253 common timer_getoverrun sys_timer_getoverrun > +254 common timer_delete sys_timer_delete > +255 common clock_settime sys_clock_settime compat_sys_clock_settime > +256 common clock_gettime sys_clock_gettime compat_sys_clock_gettime > +257 common clock_getres sys_clock_getres compat_sys_clock_getres > +258 common clock_nanosleep sys_clock_nanosleep compat_sys_clock_nanosleep > +259 common tgkill sys_tgkill > +260 common mbind sys_mbind compat_sys_mbind > +261 common get_mempolicy sys_get_mempolicy compat_sys_get_mempolicy > +262 common set_mempolicy sys_set_mempolicy compat_sys_set_mempolicy > +264 common add_key sys_add_key > +265 common request_key sys_request_key > +266 common keyctl sys_keyctl compat_sys_keyctl > +267 common ioprio_set sys_ioprio_set > +268 common ioprio_get sys_ioprio_get > +269 common inotify_init sys_inotify_init > +270 common inotify_add_watch sys_inotify_add_watch > +271 common inotify_rm_watch sys_inotify_rm_watch > +272 common migrate_pages sys_migrate_pages > +273 common pselect6 sys_pselect6 compat_sys_pselect6 > +274 common ppoll sys_ppoll compat_sys_ppoll > +275 common openat sys_openat compat_sys_openat > +276 common mkdirat sys_mkdirat > +277 common mknodat sys_mknodat > +278 common fchownat sys_fchownat > +279 common futimesat sys_futimesat compat_sys_futimesat > +280 common fstatat64 sys_fstatat64 > +281 common unlinkat sys_unlinkat > +282 common renameat sys_renameat > +283 common linkat sys_linkat > +284 common symlinkat sys_symlinkat > +285 common readlinkat sys_readlinkat > +286 common fchmodat sys_fchmodat > +287 common faccessat sys_faccessat > +288 common unshare sys_unshare > +289 common set_robust_list sys_set_robust_list compat_sys_set_robust_list > +290 common get_robust_list sys_get_robust_list compat_sys_get_robust_list > +291 common splice sys_splice > +292 32 sync_file_range parisc_sync_file_range > +292 64 sync_file_range sys_sync_file_range parisc_sync_file_range > +293 common tee sys_tee > +294 common vmsplice sys_vmsplice compat_sys_vmsplice > +295 common move_pages sys_move_pages compat_sys_move_pages > +296 common getcpu sys_getcpu > +297 common epoll_pwait sys_epoll_pwait compat_sys_epoll_pwait > +298 common statfs64 sys_statfs64 compat_sys_statfs64 > +299 common fstatfs64 sys_fstatfs64 compat_sys_fstatfs64 > +300 common kexec_load sys_kexec_load compat_sys_kexec_load > +301 common utimensat sys_utimensat compat_sys_utimensat > +302 common signalfd sys_signalfd compat_sys_signalfd > +304 common eventfd sys_eventfd > +305 32 fallocate parisc_fallocate > +305 64 fallocate sys_fallocate parisc_fallocate > +306 common timerfd_create sys_timerfd_create > +307 common timerfd_settime sys_timerfd_settime compat_sys_timerfd_settime > +308 common timerfd_gettime sys_timerfd_gettime compat_sys_timerfd_gettime > +309 common signalfd4 sys_signalfd4 compat_sys_signalfd4 > +310 common eventfd2 sys_eventfd2 > +311 common epoll_create1 sys_epoll_create1 > +312 common dup3 sys_dup3 > +313 common pipe2 sys_pipe2 > +314 common inotify_init1 sys_inotify_init1 > +315 common preadv sys_preadv compat_sys_preadv > +316 common pwritev sys_pwritev compat_sys_pwritev > +317 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo > +318 common perf_event_open sys_perf_event_open > +319 common recvmmsg sys_recvmmsg compat_sys_recvmmsg > +320 common accept4 sys_accept4 > +321 common prlimit64 sys_prlimit64 > +322 common fanotify_init sys_fanotify_init > +323 common fanotify_mark sys_fanotify_mark sys32_fanotify_mark > +324 common clock_adjtime sys_clock_adjtime compat_sys_clock_adjtime > +325 common name_to_handle_at sys_name_to_handle_at > +326 common open_by_handle_at sys_open_by_handle_at compat_sys_open_by_handle_at > +327 common syncfs sys_syncfs > +328 common setns sys_setns > +329 common sendmmsg sys_sendmmsg compat_sys_sendmmsg > +330 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv > +331 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev > +332 common kcmp sys_kcmp > +333 common finit_module sys_finit_module > +334 common sched_setattr sys_sched_setattr > +335 common sched_getattr sys_sched_getattr > +336 common utimes sys_utimes compat_sys_utimes > +337 common renameat2 sys_renameat2 > +338 common seccomp sys_seccomp > +339 common getrandom sys_getrandom > +340 common memfd_create sys_memfd_create > +341 common bpf sys_bpf > +342 common execveat sys_execveat compat_sys_execveat > +343 common membarrier sys_membarrier > +344 common userfaultfd sys_userfaultfd > +345 common mlock2 sys_mlock2 > +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 > 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'` > +grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | ( > + echo "#ifndef ${fileguard}" > + echo "#define ${fileguard}" > + echo "" > + > + nxt=0 > + while read nr abi name entry compat ; do > + if [ -z "$offset" ]; then > + echo -e "#define __NR_${prefix}${name}\t$nr" > + else > + echo -e "#define __NR_${prefix}${name}\t($offset + $nr)" > + fi > + nxt=$nr > + let nxt=nxt+1 > + done > + > + echo "" > + echo "#ifdef __KERNEL__" > + echo -e "#define __NR_syscalls\t$nxt" > + echo "#endif" > + echo "" > + echo "#endif /* ${fileguard} */" > +) > "$out" > diff --git a/arch/parisc/kernel/syscalls/syscalltbl.sh b/arch/parisc/kernel/syscalls/syscalltbl.sh > new file mode 100644 > index 0000000..82b0416 > --- /dev/null > +++ b/arch/parisc/kernel/syscalls/syscalltbl.sh > @@ -0,0 +1,41 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0 > + > +in="$1" > +out="$2" > +my_abis=`echo "($3)" | tr ',' '|'` > +offset="$4" > + > +emit() { > + nxt="$1" > + nr="$2" > + entry="$3" > + > + while [ $nxt -lt $nr ]; do > + echo "__SYSCALL($nxt, sys_ni_syscall, )" > + let nxt=nxt+1 > + done > + echo "__SYSCALL($nr, $entry, )" > +} > + > +grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | ( > + if [ -z "$offset" ]; then > + nxt=0 > + else > + nxt=$offset > + fi > + > + while read nr abi name entry compat ; do > + if [ ${out: -5} = "c32.h" ]; then > + if [ -z "$compat" ]; then > + emit $nxt $nr $entry > + else > + emit $nxt $nr $compat > + fi > + elif [ ${out: -4} = "64.h" -o ${out: -4} = "32.h" ]; then > + emit $nxt $nr $entry > + fi > + nxt=$nr > + let nxt=nxt+1 > + done > +) > "$out" > -- > 1.9.1 > I did some stupidity here. will fix now. Thanks!