]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
sparc: add system call table generation support
authorFiroz Khan <firoz.khan@linaro.org>
Wed, 14 Nov 2018 05:26:30 +0000 (10:56 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Nov 2018 02:52:22 +0000 (18:52 -0800)
The system call tables are in different format in all
architecture and it will be difficult to manually add,
modify or delete the syscall table entries in the res-
pective files. To make it easy by keeping a script and
which will generate the uapi header and syscall table
file. This change will also help to unify the implemen-
tation across all architectures.

The system call table generation script is added in
kernel/syscalls directory which contain the scripts to
generate both uapi header file and system call table
files. The syscall.tbl will be 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. Both .sh files will parse the content syscall.tbl
to generate the header and table files. unistd_32/64.h will
be included by uapi/asm/unistd.h and syscall_table_32/64/-
c32.h is included by kernel/syscall.S - the real system
call table.

ARM, s390 and x86 architecuture does have similar support.
I leverage their implementation to come up with a generic
solution.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/syscalls/Makefile [new file with mode: 0644]
arch/sparc/kernel/syscalls/syscall.tbl [new file with mode: 0644]
arch/sparc/kernel/syscalls/syscallhdr.sh [new file with mode: 0644]
arch/sparc/kernel/syscalls/syscalltbl.sh [new file with mode: 0644]

diff --git a/arch/sparc/kernel/syscalls/Makefile b/arch/sparc/kernel/syscalls/Makefile
new file mode 100644 (file)
index 0000000..c22a21c
--- /dev/null
@@ -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_abis_$(basetarget))'               \
+                  '$(syshdr_pfx_$(basetarget))'                \
+                  '$(syshdr_offset_$(basetarget))'
+
+quiet_cmd_systbl = SYSTBL  $@
+      cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@'       \
+                  '$(systbl_abis_$(basetarget))'               \
+                  '$(systbl_abi_$(basetarget))'                \
+                  '$(systbl_offset_$(basetarget))'
+
+syshdr_abis_unistd_32 := common,32
+$(uapi)/unistd_32.h: $(syscall) $(syshdr)
+       $(call if_changed,syshdr)
+
+syshdr_abis_unistd_64 := common,64
+$(uapi)/unistd_64.h: $(syscall) $(syshdr)
+       $(call if_changed,syshdr)
+
+systbl_abis_syscall_table_32 := common,32
+$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
+       $(call if_changed,systbl)
+
+systbl_abis_syscall_table_64 := common,64
+$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
+       $(call if_changed,systbl)
+
+systbl_abis_syscall_table_c32 := common,32
+systbl_abi_syscall_table_c32 := c32
+$(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/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl
new file mode 100644 (file)
index 0000000..c8c77c0
--- /dev/null
@@ -0,0 +1,409 @@
+# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+#
+# system call numbers and entry vectors for sparc
+#
+# 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      32      exit                    sys_exit                        sparc_exit
+1      64      exit                    sparc_exit
+2      common  fork                    sys_fork
+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  wait4                   sys_wait4                       compat_sys_wait4
+8      common  creat                   sys_creat
+9      common  link                    sys_link
+10     common  unlink                  sys_unlink
+11     32      execv                   sunos_execv
+11     64      execv                   sys_nis_syscall
+12     common  chdir                   sys_chdir
+13     32      chown                   sys_chown16
+13     64      chown                   sys_chown
+14     common  mknod                   sys_mknod
+15     common  chmod                   sys_chmod
+16     32      lchown                  sys_lchown16
+16     64      lchown                  sys_lchown
+17     common  brk                     sys_brk
+18     common  perfctr                 sys_nis_syscall
+19     common  lseek                   sys_lseek                       compat_sys_lseek
+20     common  getpid                  sys_getpid
+21     common  capget                  sys_capget
+22     common  capset                  sys_capset
+23     32      setuid                  sys_setuid16
+23     64      setuid                  sys_setuid
+24     32      getuid                  sys_getuid16
+24     64      getuid                  sys_getuid
+25     common  vmsplice                sys_vmsplice                    compat_sys_vmsplice
+26     common  ptrace                  sys_ptrace                      compat_sys_ptrace
+27     common  alarm                   sys_alarm
+28     common  sigaltstack             sys_sigaltstack                 compat_sys_sigaltstack
+29     32      pause                   sys_pause
+29     64      pause                   sys_nis_syscall
+30     common  utime                   sys_utime                       compat_sys_utime
+31     32      lchown32                sys_lchown
+32     32      fchown32                sys_fchown
+33     common  access                  sys_access
+34     common  nice                    sys_nice
+35     32      chown32                 sys_chown
+36     common  sync                    sys_sync
+37     common  kill                    sys_kill
+38     common  stat                    sys_newstat                     compat_sys_newstat
+39     32      sendfile                sys_sendfile                    compat_sys_sendfile
+39     64      sendfile                sys_sendfile64
+40     common  lstat                   sys_newlstat                    compat_sys_newlstat
+41     common  dup                     sys_dup
+42     common  pipe                    sys_sparc_pipe
+43     common  times                   sys_times                       compat_sys_times
+44     32      getuid32                sys_getuid
+45     common  umount2                 sys_umount
+46     32      setgid                  sys_setgid16
+46     64      setgid                  sys_setgid
+47     32      getgid                  sys_getgid16
+47     64      getgid                  sys_getgid
+48     common  signal                  sys_signal
+49     32      geteuid                 sys_geteuid16
+49     64      geteuid                 sys_geteuid
+50     32      getegid                 sys_getegid16
+50     64      getegid                 sys_getegid
+51     common  acct                    sys_acct
+52     64      memory_ordering         sys_memory_ordering
+53     32      getgid32                sys_getgid
+54     common  ioctl                   sys_ioctl                       compat_sys_ioctl
+55     common  reboot                  sys_reboot
+56     32      mmap2                   sys_mmap2                       sys32_mmap2
+57     common  symlink                 sys_symlink
+58     common  readlink                sys_readlink
+59     32      execve                  sys_execve                      sys32_execve
+59     64      execve                  sys64_execve
+60     common  umask                   sys_umask
+61     common  chroot                  sys_chroot
+62     common  fstat                   sys_newfstat                    compat_sys_newfstat
+63     common  fstat64                 sys_fstat64                     compat_sys_fstat64
+64     common  getpagesize             sys_getpagesize
+65     common  msync                   sys_msync
+66     common  vfork                   sys_vfork
+67     common  pread64                 sys_pread64                     compat_sys_pread64
+68     common  pwrite64                sys_pwrite64                    compat_sys_pwrite64
+69     32      geteuid32               sys_geteuid
+70     32      getegid32               sys_getegid
+71     common  mmap                    sys_mmap
+72     32      setreuid32              sys_setreuid
+73     32      munmap                  sys_munmap
+73     64      munmap                  sys_64_munmap
+74     common  mprotect                sys_mprotect
+75     common  madvise                 sys_madvise
+76     common  vhangup                 sys_vhangup
+77     32      truncate64              sys_truncate64                  compat_sys_truncate64
+78     common  mincore                 sys_mincore
+79     32      getgroups               sys_getgroups16
+79     64      getgroups               sys_getgroups
+80     32      setgroups               sys_setgroups16
+80     64      setgroups               sys_setgroups
+81     common  getpgrp                 sys_getpgrp
+82     32      setgroups32             sys_setgroups
+83     common  setitimer               sys_setitimer                   compat_sys_setitimer
+84     32      ftruncate64             sys_ftruncate64                 compat_sys_ftruncate64
+85     common  swapon                  sys_swapon
+86     common  getitimer               sys_getitimer                   compat_sys_getitimer
+87     32      setuid32                sys_setuid
+88     common  sethostname             sys_sethostname
+89     32      setgid32                sys_setgid
+90     common  dup2                    sys_dup2
+91     32      setfsuid32              sys_setfsuid
+92     common  fcntl                   sys_fcntl                       compat_sys_fcntl
+93     common  select                  sys_select
+94     32      setfsgid32              sys_setfsgid
+95     common  fsync                   sys_fsync
+96     common  setpriority             sys_setpriority
+97     common  socket                  sys_socket
+98     common  connect                 sys_connect
+99     common  accept                  sys_accept
+100    common  getpriority             sys_getpriority
+101    common  rt_sigreturn            sys_rt_sigreturn                sys32_rt_sigreturn
+102    common  rt_sigaction            sys_rt_sigaction                compat_sys_rt_sigaction
+103    common  rt_sigprocmask          sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+104    common  rt_sigpending           sys_rt_sigpending               compat_sys_rt_sigpending
+105    common  rt_sigtimedwait         sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait
+106    common  rt_sigqueueinfo         sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+107    common  rt_sigsuspend           sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+108    32      setresuid32             sys_setresuid
+108    64      setresuid               sys_setresuid
+109    32      getresuid32             sys_getresuid
+109    64      getresuid               sys_getresuid
+110    32      setresgid32             sys_setresgid
+110    64      setresgid               sys_setresgid
+111    32      getresgid32             sys_getresgid
+111    64      getresgid               sys_getresgid
+112    32      setregid32              sys_setregid
+113    common  recvmsg                 sys_recvmsg                     compat_sys_recvmsg
+114    common  sendmsg                 sys_sendmsg                     compat_sys_sendmsg
+115    32      getgroups32             sys_getgroups
+116    common  gettimeofday            sys_gettimeofday                compat_sys_gettimeofday
+117    common  getrusage               sys_getrusage                   compat_sys_getrusage
+118    common  getsockopt              sys_getsockopt                  compat_sys_getsockopt
+119    common  getcwd                  sys_getcwd
+120    common  readv                   sys_readv                       compat_sys_readv
+121    common  writev                  sys_writev                      compat_sys_writev
+122    common  settimeofday            sys_settimeofday                compat_sys_settimeofday
+123    32      fchown                  sys_fchown16
+123    64      fchown                  sys_fchown
+124    common  fchmod                  sys_fchmod
+125    common  recvfrom                sys_recvfrom
+126    32      setreuid                sys_setreuid16
+126    64      setreuid                sys_setreuid
+127    32      setregid                sys_setregid16
+127    64      setregid                sys_setregid
+128    common  rename                  sys_rename
+129    common  truncate                sys_truncate                    compat_sys_truncate
+130    common  ftruncate               sys_ftruncate                   compat_sys_ftruncate
+131    common  flock                   sys_flock
+132    common  lstat64                 sys_lstat64                     compat_sys_lstat64
+133    common  sendto                  sys_sendto
+134    common  shutdown                sys_shutdown
+135    common  socketpair              sys_socketpair
+136    common  mkdir                   sys_mkdir
+137    common  rmdir                   sys_rmdir
+138    common  utimes                  sys_utimes                      compat_sys_utimes
+139    common  stat64                  sys_stat64                      compat_sys_stat64
+140    common  sendfile64              sys_sendfile64
+141    common  getpeername             sys_getpeername
+142    common  futex                   sys_futex                       compat_sys_futex
+143    common  gettid                  sys_gettid
+144    common  getrlimit               sys_getrlimit                   compat_sys_getrlimit
+145    common  setrlimit               sys_setrlimit                   compat_sys_setrlimit
+146    common  pivot_root              sys_pivot_root
+147    common  prctl                   sys_prctl
+148    common  pciconfig_read          sys_pciconfig_read
+149    common  pciconfig_write         sys_pciconfig_write
+150    common  getsockname             sys_getsockname
+151    common  inotify_init            sys_inotify_init
+152    common  inotify_add_watch       sys_inotify_add_watch
+153    common  poll                    sys_poll
+154    common  getdents64              sys_getdents64
+155    32      fcntl64                 sys_fcntl64                     compat_sys_fcntl64
+156    common  inotify_rm_watch        sys_inotify_rm_watch
+157    common  statfs                  sys_statfs                      compat_sys_statfs
+158    common  fstatfs                 sys_fstatfs                     compat_sys_fstatfs
+159    common  umount                  sys_oldumount
+160    common  sched_set_affinity      sys_sched_setaffinity           compat_sys_sched_setaffinity
+161    common  sched_get_affinity      sys_sched_getaffinity           compat_sys_sched_getaffinity
+162    common  getdomainname           sys_getdomainname
+163    common  setdomainname           sys_setdomainname
+164    64      utrap_install           sys_utrap_install
+165    common  quotactl                sys_quotactl
+166    common  set_tid_address         sys_set_tid_address
+167    common  mount                   sys_mount                       compat_sys_mount
+168    common  ustat                   sys_ustat                       compat_sys_ustat
+169    common  setxattr                sys_setxattr
+170    common  lsetxattr               sys_lsetxattr
+171    common  fsetxattr               sys_fsetxattr
+172    common  getxattr                sys_getxattr
+173    common  lgetxattr               sys_lgetxattr
+174    common  getdents                sys_getdents                    compat_sys_getdents
+175    common  setsid                  sys_setsid
+176    common  fchdir                  sys_fchdir
+177    common  fgetxattr               sys_fgetxattr
+178    common  listxattr               sys_listxattr
+179    common  llistxattr              sys_llistxattr
+180    common  flistxattr              sys_flistxattr
+181    common  removexattr             sys_removexattr
+182    common  lremovexattr            sys_lremovexattr
+183    32      sigpending              sys_sigpending                  compat_sys_sigpending
+183    64      sigpending              sys_nis_syscall
+184    common  query_module            sys_ni_syscall
+185    common  setpgid                 sys_setpgid
+186    common  fremovexattr            sys_fremovexattr
+187    common  tkill                   sys_tkill
+188    32      exit_group              sys_exit_group                  sparc_exit_group
+188    64      exit_group              sparc_exit_group
+189    common  uname                   sys_newuname
+190    common  init_module             sys_init_module
+191    32      personality             sys_personality                 sys_sparc64_personality
+191    64      personality             sys_sparc64_personality
+192    32      remap_file_pages        sys_sparc_remap_file_pages      sys_remap_file_pages
+192    64      remap_file_pages        sys_remap_file_pages
+193    common  epoll_create            sys_epoll_create
+194    common  epoll_ctl               sys_epoll_ctl
+195    common  epoll_wait              sys_epoll_wait
+196    common  ioprio_set              sys_ioprio_set
+197    common  getppid                 sys_getppid
+198    32      sigaction               sys_sparc_sigaction             compat_sys_sparc_sigaction
+198    64      sigaction               sys_nis_syscall
+199    common  sgetmask                sys_sgetmask
+200    common  ssetmask                sys_ssetmask
+201    32      sigsuspend              sys_sigsuspend
+201    64      sigsuspend              sys_nis_syscall
+202    common  oldlstat                sys_newlstat                    compat_sys_newlstat
+203    common  uselib                  sys_uselib
+204    32      readdir                 sys_old_readdir                 compat_sys_old_readdir
+204    64      readdir                 sys_nis_syscall
+205    common  readahead               sys_readahead                   compat_sys_readahead
+206    common  socketcall              sys_socketcall                  sys32_socketcall
+207    common  syslog                  sys_syslog
+208    common  lookup_dcookie          sys_lookup_dcookie              compat_sys_lookup_dcookie
+209    common  fadvise64               sys_fadvise64                   compat_sys_fadvise64
+210    common  fadvise64_64            sys_fadvise64_64                compat_sys_fadvise64_64
+211    common  tgkill                  sys_tgkill
+212    common  waitpid                 sys_waitpid
+213    common  swapoff                 sys_swapoff
+214    common  sysinfo                 sys_sysinfo                     compat_sys_sysinfo
+215    32      ipc                     sys_ipc                         compat_sys_ipc
+215    64      ipc                     sys_sparc_ipc
+216    32      sigreturn               sys_sigreturn                   sys32_sigreturn
+216    64      sigreturn               sys_nis_syscall
+217    common  clone                   sys_clone
+218    common  ioprio_get              sys_ioprio_get
+219    common  adjtimex                sys_adjtimex                    compat_sys_adjtimex
+220    32      sigprocmask             sys_sigprocmask                 compat_sys_sigprocmask
+220    64      sigprocmask             sys_nis_syscall
+221    common  create_module           sys_ni_syscall
+222    common  delete_module           sys_delete_module
+223    common  get_kernel_syms         sys_ni_syscall
+224    common  getpgid                 sys_getpgid
+225    common  bdflush                 sys_bdflush
+226    common  sysfs                   sys_sysfs
+227    common  afs_syscall             sys_nis_syscall
+228    common  setfsuid                sys_setfsuid16
+229    common  setfsgid                sys_setfsgid16
+230    common  _newselect              sys_select                      compat_sys_select
+231    32      time                    sys_time                        compat_sys_time
+232    common  splice                  sys_splice
+233    common  stime                   sys_stime                       compat_sys_stime
+234    common  statfs64                sys_statfs64                    compat_sys_statfs64
+235    common  fstatfs64               sys_fstatfs64                   compat_sys_fstatfs64
+236    common  _llseek                 sys_llseek
+237    common  mlock                   sys_mlock
+238    common  munlock                 sys_munlock
+239    common  mlockall                sys_mlockall
+240    common  munlockall              sys_munlockall
+241    common  sched_setparam          sys_sched_setparam
+242    common  sched_getparam          sys_sched_getparam
+243    common  sched_setscheduler      sys_sched_setscheduler
+244    common  sched_getscheduler      sys_sched_getscheduler
+245    common  sched_yield             sys_sched_yield
+246    common  sched_get_priority_max  sys_sched_get_priority_max
+247    common  sched_get_priority_min  sys_sched_get_priority_min
+248    common  sched_rr_get_interval   sys_sched_rr_get_interval       compat_sys_sched_rr_get_interval
+249    common  nanosleep               sys_nanosleep                   compat_sys_nanosleep
+250    32      mremap                  sys_mremap
+250    64      mremap                  sys_64_mremap
+251    common  _sysctl                 sys_sysctl                      compat_sys_sysctl
+252    common  getsid                  sys_getsid
+253    common  fdatasync               sys_fdatasync
+254    32      nfsservctl              sys_ni_syscall                  sys_nis_syscall
+254    64      nfsservctl              sys_nis_syscall
+255    common  sync_file_range         sys_sync_file_range             compat_sys_sync_file_range
+256    common  clock_settime           sys_clock_settime               compat_sys_clock_settime
+257    common  clock_gettime           sys_clock_gettime               compat_sys_clock_gettime
+258    common  clock_getres            sys_clock_getres                compat_sys_clock_getres
+259    common  clock_nanosleep         sys_clock_nanosleep             compat_sys_clock_nanosleep
+260    common  sched_getaffinity       sys_sched_getaffinity           compat_sys_sched_getaffinity
+261    common  sched_setaffinity       sys_sched_setaffinity           compat_sys_sched_setaffinity
+262    common  timer_settime           sys_timer_settime               compat_sys_timer_settime
+263    common  timer_gettime           sys_timer_gettime               compat_sys_timer_gettime
+264    common  timer_getoverrun        sys_timer_getoverrun
+265    common  timer_delete            sys_timer_delete
+266    common  timer_create            sys_timer_create                compat_sys_timer_create
+# 267 was vserver
+267    common  vserver                 sys_nis_syscall
+268    common  io_setup                sys_io_setup                    compat_sys_io_setup
+269    common  io_destroy              sys_io_destroy
+270    common  io_submit               sys_io_submit                   compat_sys_io_submit
+271    common  io_cancel               sys_io_cancel
+272    common  io_getevents            sys_io_getevents                compat_sys_io_getevents
+273    common  mq_open                 sys_mq_open                     compat_sys_mq_open
+274    common  mq_unlink               sys_mq_unlink
+275    common  mq_timedsend            sys_mq_timedsend                compat_sys_mq_timedsend
+276    common  mq_timedreceive         sys_mq_timedreceive             compat_sys_mq_timedreceive
+277    common  mq_notify               sys_mq_notify                   compat_sys_mq_notify
+278    common  mq_getsetattr           sys_mq_getsetattr               compat_sys_mq_getsetattr
+279    common  waitid                  sys_waitid                      compat_sys_waitid
+280    common  tee                     sys_tee
+281    common  add_key                 sys_add_key
+282    common  request_key             sys_request_key
+283    common  keyctl                  sys_keyctl                      compat_sys_keyctl
+284    common  openat                  sys_openat                      compat_sys_openat
+285    common  mkdirat                 sys_mkdirat
+286    common  mknodat                 sys_mknodat
+287    common  fchownat                sys_fchownat
+288    common  futimesat               sys_futimesat                   compat_sys_futimesat
+289    common  fstatat64               sys_fstatat64                   compat_sys_fstatat64
+290    common  unlinkat                sys_unlinkat
+291    common  renameat                sys_renameat
+292    common  linkat                  sys_linkat
+293    common  symlinkat               sys_symlinkat
+294    common  readlinkat              sys_readlinkat
+295    common  fchmodat                sys_fchmodat
+296    common  faccessat               sys_faccessat
+297    common  pselect6                sys_pselect6                    compat_sys_pselect6
+298    common  ppoll                   sys_ppoll                       compat_sys_ppoll
+299    common  unshare                 sys_unshare
+300    common  set_robust_list         sys_set_robust_list             compat_sys_set_robust_list
+301    common  get_robust_list         sys_get_robust_list             compat_sys_get_robust_list
+302    common  migrate_pages           sys_migrate_pages               compat_sys_migrate_pages
+303    common  mbind                   sys_mbind                       compat_sys_mbind
+304    common  get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
+305    common  set_mempolicy           sys_set_mempolicy               compat_sys_set_mempolicy
+306    common  kexec_load              sys_kexec_load                  compat_sys_kexec_load
+307    common  move_pages              sys_move_pages                  compat_sys_move_pages
+308    common  getcpu                  sys_getcpu
+309    common  epoll_pwait             sys_epoll_pwait                 compat_sys_epoll_pwait
+310    common  utimensat               sys_utimensat                   compat_sys_utimensat
+311    common  signalfd                sys_signalfd                    compat_sys_signalfd
+312    common  timerfd_create          sys_timerfd_create
+313    common  eventfd                 sys_eventfd
+314    common  fallocate               sys_fallocate                   compat_sys_fallocate
+315    common  timerfd_settime         sys_timerfd_settime             compat_sys_timerfd_settime
+316    common  timerfd_gettime         sys_timerfd_gettime             compat_sys_timerfd_gettime
+317    common  signalfd4               sys_signalfd4                   compat_sys_signalfd4
+318    common  eventfd2                sys_eventfd2
+319    common  epoll_create1           sys_epoll_create1
+320    common  dup3                    sys_dup3
+321    common  pipe2                   sys_pipe2
+322    common  inotify_init1           sys_inotify_init1
+323    common  accept4                 sys_accept4
+324    common  preadv                  sys_preadv                      compat_sys_preadv
+325    common  pwritev                 sys_pwritev                     compat_sys_pwritev
+326    common  rt_tgsigqueueinfo       sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+327    common  perf_event_open         sys_perf_event_open
+328    common  recvmmsg                sys_recvmmsg                    compat_sys_recvmmsg
+329    common  fanotify_init           sys_fanotify_init
+330    common  fanotify_mark           sys_fanotify_mark               compat_sys_fanotify_mark
+331    common  prlimit64               sys_prlimit64
+332    common  name_to_handle_at       sys_name_to_handle_at
+333    common  open_by_handle_at       sys_open_by_handle_at           compat_sys_open_by_handle_at
+334    common  clock_adjtime           sys_clock_adjtime               compat_sys_clock_adjtime
+335    common  syncfs                  sys_syncfs
+336    common  sendmmsg                sys_sendmmsg                    compat_sys_sendmmsg
+337    common  setns                   sys_setns
+338    common  process_vm_readv        sys_process_vm_readv            compat_sys_process_vm_readv
+339    common  process_vm_writev       sys_process_vm_writev           compat_sys_process_vm_writev
+340    32      kern_features           sys_ni_syscall                  sys_kern_features
+340    64      kern_features           sys_kern_features
+341    common  kcmp                    sys_kcmp
+342    common  finit_module            sys_finit_module
+343    common  sched_setattr           sys_sched_setattr
+344    common  sched_getattr           sys_sched_getattr
+345    common  renameat2               sys_renameat2
+346    common  seccomp                 sys_seccomp
+347    common  getrandom               sys_getrandom
+348    common  memfd_create            sys_memfd_create
+349    common  bpf                     sys_bpf
+350    32      execveat                sys_execveat                    sys32_execveat
+350    64      execveat                sys64_execveat
+351    common  membarrier              sys_membarrier
+352    common  userfaultfd             sys_userfaultfd
+353    common  bind                    sys_bind
+354    common  listen                  sys_listen
+355    common  setsockopt              sys_setsockopt                  compat_sys_setsockopt
+356    common  mlock2                  sys_mlock2
+357    common  copy_file_range         sys_copy_file_range
+358    common  preadv2                 sys_preadv2                     compat_sys_preadv2
+359    common  pwritev2                sys_pwritev2                    compat_sys_pwritev2
+360    common  statx                   sys_statx
+361    common  io_pgetevents           sys_io_pgetevents               compat_sys_io_pgetevents
diff --git a/arch/sparc/kernel/syscalls/syscallhdr.sh b/arch/sparc/kernel/syscalls/syscallhdr.sh
new file mode 100644 (file)
index 0000000..626b574
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=_UAPI_ASM_SPARC_`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 compat ; 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 */" "${fileguard}"
+) > "$out"
diff --git a/arch/sparc/kernel/syscalls/syscalltbl.sh b/arch/sparc/kernel/syscalls/syscalltbl.sh
new file mode 100644 (file)
index 0000000..77cf014
--- /dev/null
@@ -0,0 +1,36 @@
+#!/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_nis_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" = "c32" ] && [ ! -z "$compat" ]; then
+                       emit $((nxt+offset)) $((nr+offset)) $compat
+               else
+                       emit $((nxt+offset)) $((nr+offset)) $entry
+               fi
+               nxt=$((nr+1))
+       done
+) > "$out"