LKML Archive on lore.kernel.org
 help / Atom feed
* [PATCH 0/3] System call table generation support
@ 2018-09-14  8:38 Firoz Khan
  2018-09-14  8:38 ` [PATCH 1/3] mips: Add __NR_syscalls macro in uapi/asm/unistd.h Firoz Khan
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Firoz Khan @ 2018-09-14  8:38 UTC (permalink / raw)
  To: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, Paul Burton, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, arnd, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

The purpose of this patch series is:
1. We can easily add/modify/delete system call by changing entry 
in syscall.tbl file. No need to manually edit many files.

2. It is easy to unify the system call implementation across all 
the architectures. 

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 manually. 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.

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.

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

I have done the same support for work for alpha, m68k, microblaze, 
ia64, powerpc, parisc, sh, sparc, and xtensa. But I started sending 
the patch for one architecuture for review. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/

Finally, this is the ground work for solving the Y2038 issue. We 
need to add/change two dozen of system calls to solve Y2038 issue. 
So this patch series will help to easily modify from existing 
system call to Y2038 compatible system calls.

I started working system call table generation on 4.17-rc1. I used 
marcin's script - https://github.com/hrw/syscalls-table to generate 
the syscall.tbl file. And this will be the input to the system call 
table generation script. But there are couple system call got add 
in the latest rc release. If run Marcin's script on latest release,
It will generate a new syscall.tbl. But I still use the old file - 
syscall.tbl and once all review got over I'll update syscall.tbl 
alone w.r.to the tip of the kernel. The impact of this thing, few 
of the system call won't work. 

Firoz Khan (3):
  mips: Add __NR_syscalls macro in uapi/asm/unistd.h
  mips: Add system call table generation support
  mips: uapi header and system call table file generation

 arch/mips/Makefile                        |    3 +
 arch/mips/include/asm/Kbuild              |    4 +
 arch/mips/include/uapi/asm/Kbuild         |    3 +
 arch/mips/include/uapi/asm/unistd.h       | 1053 +----------------------------
 arch/mips/kernel/scall32-o32.S            |  385 +----------
 arch/mips/kernel/scall64-64.S             |  334 +--------
 arch/mips/kernel/scall64-n32.S            |  337 +--------
 arch/mips/kernel/scall64-o32.S            |  374 +---------
 arch/mips/kernel/syscall_table_32_o32.S   |    8 +
 arch/mips/kernel/syscall_table_64_64.S    |    9 +
 arch/mips/kernel/syscall_table_64_n32.S   |    8 +
 arch/mips/kernel/syscall_table_64_o32.S   |    9 +
 arch/mips/kernel/syscalls/Makefile        |   62 ++
 arch/mips/kernel/syscalls/README.md       |   16 +
 arch/mips/kernel/syscalls/syscall_32.tbl  |  375 ++++++++++
 arch/mips/kernel/syscalls/syscall_64.tbl  |  335 +++++++++
 arch/mips/kernel/syscalls/syscall_n32.tbl |  339 ++++++++++
 arch/mips/kernel/syscalls/syscallhdr.sh   |   37 +
 arch/mips/kernel/syscalls/syscalltbl.sh   |   44 ++
 19 files changed, 1268 insertions(+), 2467 deletions(-)
 create mode 100644 arch/mips/kernel/syscall_table_32_o32.S
 create mode 100644 arch/mips/kernel/syscall_table_64_64.S
 create mode 100644 arch/mips/kernel/syscall_table_64_n32.S
 create mode 100644 arch/mips/kernel/syscall_table_64_o32.S
 create mode 100644 arch/mips/kernel/syscalls/Makefile
 create mode 100644 arch/mips/kernel/syscalls/README.md
 create mode 100644 arch/mips/kernel/syscalls/syscall_32.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscall_64.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscall_n32.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscallhdr.sh
 create mode 100644 arch/mips/kernel/syscalls/syscalltbl.sh

-- 
1.9.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/3] mips: Add __NR_syscalls macro in uapi/asm/unistd.h
  2018-09-14  8:38 [PATCH 0/3] System call table generation support Firoz Khan
@ 2018-09-14  8:38 ` Firoz Khan
  2018-09-14  8:38 ` [PATCH 2/3] mips: Add system call table generation support Firoz Khan
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: Firoz Khan @ 2018-09-14  8:38 UTC (permalink / raw)
  To: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, Paul Burton, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, arnd, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

NR_syscalls macro holds the number of system call exist in MIPS
architecture. This macro is currently not a part of uapi/asm/unistd.h
file. The purpose of this macro is We have to change the value of
NR_syscalls, if we add or delete a system call.

One of the patch in this patch series has a script which will generate
a uapi header based on syscall.tbl file. The syscall.tbl file contains
the number of system call information. So we have two option to update
NR_syscalls value.

1. Update NR_syscalls in uapi/asm/unistd.h manually by counting the
   no.of system calls. No need to update NR_syscalls until we either
   add a new system call or delete an existing system call.

2. We can keep this feature it above mentioned script, that'll
   count the number of syscalls and keep it in a generated file.
   In this case we don't need to explicitly update NR_syscalls
   in asm/unistd.h file.

The 2nd option will be the recommended one. While __NR_syscalls
isn't strictly part of the uapi, having it as part of the generated
header to simplifies the implementation.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
---
 arch/mips/include/uapi/asm/unistd.h | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h
index f25dd1d..f8bab34 100644
--- a/arch/mips/include/uapi/asm/unistd.h
+++ b/arch/mips/include/uapi/asm/unistd.h
@@ -390,17 +390,17 @@
 #define __NR_statx			(__NR_Linux + 366)
 #define __NR_rseq			(__NR_Linux + 367)
 #define __NR_io_pgetevents		(__NR_Linux + 368)
-
+#define __NR_syscalls                   368
 
 /*
  * Offset of the last Linux o32 flavoured syscall
  */
-#define __NR_Linux_syscalls		368
+#define __NR_Linux_syscalls             __NR_syscalls
 
 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
 
 #define __NR_O32_Linux			4000
-#define __NR_O32_Linux_syscalls		368
+#define __NR_O32_Linux_syscalls         __NR_syscalls
 
 #if _MIPS_SIM == _MIPS_SIM_ABI64
 
@@ -737,16 +737,17 @@
 #define __NR_statx			(__NR_Linux + 326)
 #define __NR_rseq			(__NR_Linux + 327)
 #define __NR_io_pgetevents		(__NR_Linux + 328)
+#define __NR_syscalls                   328
 
 /*
  * Offset of the last Linux 64-bit flavoured syscall
  */
-#define __NR_Linux_syscalls		328
+#define __NR_Linux_syscalls		__NR_syscalls
 
 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
 
 #define __NR_64_Linux			5000
-#define __NR_64_Linux_syscalls		328
+#define __NR_64_Linux_syscalls		__NR_syscalls
 
 #if _MIPS_SIM == _MIPS_SIM_NABI32
 
@@ -1087,15 +1088,16 @@
 #define __NR_statx			(__NR_Linux + 330)
 #define __NR_rseq			(__NR_Linux + 331)
 #define __NR_io_pgetevents		(__NR_Linux + 332)
+#define __NR_syscalls                   332
 
 /*
  * Offset of the last N32 flavoured syscall
  */
-#define __NR_Linux_syscalls		332
+#define __NR_Linux_syscalls		__NR_syscalls
 
 #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
 
 #define __NR_N32_Linux			6000
-#define __NR_N32_Linux_syscalls		332
+#define __NR_N32_Linux_syscalls		__NR_syscalls
 
 #endif /* _UAPI_ASM_UNISTD_H */
-- 
1.9.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/3] mips: Add system call table generation support
  2018-09-14  8:38 [PATCH 0/3] System call table generation support Firoz Khan
  2018-09-14  8:38 ` [PATCH 1/3] mips: Add __NR_syscalls macro in uapi/asm/unistd.h Firoz Khan
@ 2018-09-14  8:38 ` Firoz Khan
  2018-09-14  9:58   ` Arnd Bergmann
  2018-09-14  8:38 ` [PATCH 3/3] mips: uapi header and system call table file generation Firoz Khan
  2018-09-17 17:17 ` [PATCH 0/3] System call table generation support Paul Burton
  3 siblings, 1 reply; 13+ messages in thread
From: Firoz Khan @ 2018-09-14  8:38 UTC (permalink / raw)
  To: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, Paul Burton, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, arnd, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

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_32/64.tbl file which'll be the input for the
scripts.

syscall_32/64/n32.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_32/64/n32.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_*.h files respectively.
File syscall_table_*.h is included by syscall_table_*.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@linaro.org>
---
 arch/mips/kernel/syscalls/Makefile        |  62 +++++
 arch/mips/kernel/syscalls/README.md       |  16 ++
 arch/mips/kernel/syscalls/syscall_32.tbl  | 375 ++++++++++++++++++++++++++++++
 arch/mips/kernel/syscalls/syscall_64.tbl  | 335 ++++++++++++++++++++++++++
 arch/mips/kernel/syscalls/syscall_n32.tbl | 339 +++++++++++++++++++++++++++
 arch/mips/kernel/syscalls/syscallhdr.sh   |  37 +++
 arch/mips/kernel/syscalls/syscalltbl.sh   |  44 ++++
 7 files changed, 1208 insertions(+)
 create mode 100644 arch/mips/kernel/syscalls/Makefile
 create mode 100644 arch/mips/kernel/syscalls/README.md
 create mode 100644 arch/mips/kernel/syscalls/syscall_32.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscall_64.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscall_n32.tbl
 create mode 100644 arch/mips/kernel/syscalls/syscallhdr.sh
 create mode 100644 arch/mips/kernel/syscalls/syscalltbl.sh

diff --git a/arch/mips/kernel/syscalls/Makefile b/arch/mips/kernel/syscalls/Makefile
new file mode 100644
index 0000000..5044724
--- /dev/null
+++ b/arch/mips/kernel/syscalls/Makefile
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: GPL-2.0
+out := arch/$(SRCARCH)/include/generated/asm
+uapi := arch/$(SRCARCH)/include/generated/uapi/asm
+
+_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
+	  $(shell [ -d '$(out)' ] || mkdir -p '$(out)')
+
+syscall32 := $(srctree)/$(src)/syscall_32.tbl
+syscall64 := $(srctree)/$(src)/syscall_64.tbl
+syscalln32 := $(srctree)/$(src)/syscall_n32.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))'
+
+syshdr_offset_unistd_32 := __NR_Linux
+$(uapi)/unistd_32.h: $(syscall32) $(syshdr)
+	$(call if_changed,syshdr)
+
+syshdr_offset_unistd_64 := __NR_Linux
+$(uapi)/unistd_64.h: $(syscall64) $(syshdr)
+	$(call if_changed,syshdr)
+
+syshdr_offset_unistd_n32 := __NR_Linux
+$(uapi)/unistd_n32.h: $(syscalln32) $(syshdr)
+	$(call if_changed,syshdr)
+
+systbl_abi_syscall_table_32_o32 := 32-o32
+$(out)/syscall_table_32_o32.h: $(syscall32) $(systbl)
+	$(call if_changed,systbl)
+
+systbl_abi_syscall_table_64_o32 := 64-o32
+$(out)/syscall_table_64_o32.h: $(syscall32) $(systbl)
+	$(call if_changed,systbl)
+
+systbl_abi_syscall_table_64_64 := 64-64
+$(out)/syscall_table_64_64.h: $(syscall64) $(systbl)
+	$(call if_changed,systbl)
+
+systbl_abi_syscall_table_64_n32 := 64-n32
+$(out)/syscall_table_64_n32.h: $(syscalln32) $(systbl)
+	$(call if_changed,systbl)
+
+uapisyshdr-y			+= unistd_32.h unistd_64.h unistd_n32.h
+syshdr-y			+= syscall_table_32_o32.h syscall_table_64_o32.h \
+                                   syscall_table_64_64.h syscall_table_64_n32.h
+
+targets	+= $(uapisyshdr-y) $(syshdr-y)
+
+PHONY += all
+all: $(addprefix $(uapi)/,$(uapisyshdr-y))
+all: $(addprefix $(out)/,$(syshdr-y))
+	@:
diff --git a/arch/mips/kernel/syscalls/README.md b/arch/mips/kernel/syscalls/README.md
new file mode 100644
index 0000000..1f51ad1
--- /dev/null
+++ b/arch/mips/kernel/syscalls/README.md
@@ -0,0 +1,16 @@
+# mips: system_call_table_generator
+
+- This architecture does have more than one ABI.
+  syscall.tbl contains the information like 
+    - system call number
+    - name 
+    - entry_64
+    - entry_32
+    - compat
+    - comments
+
+- The scripts syscallhdr.sh will generate uapi header- 
+  arch/powerpc/include/uapi/asm/unistd.h. 
+
+- The script syscalltbl.sh will generate syscalls.h 
+  which will be included by syscall_64/32/n32/o32.S file
diff --git a/arch/mips/kernel/syscalls/syscall_32.tbl b/arch/mips/kernel/syscalls/syscall_32.tbl
new file mode 100644
index 0000000..5db6827
--- /dev/null
+++ b/arch/mips/kernel/syscalls/syscall_32.tbl
@@ -0,0 +1,375 @@
+#
+# 32-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point> <compat entry point>
+#
+# The abi is always "common" for this file.
+#
+0       32      syscall                         sys_syscall                     sys32_syscall
+1       32      exit                            sys_exit                        
+2       32      fork                            __sys_fork                      
+3       32      read                            sys_read                        
+4       32      write                           sys_write                       
+5       32      open                            sys_open                        compat_sys_open
+6       32      close                           sys_close                       
+7       32      waitpid                         sys_waitpid                     
+8       32      creat                           sys_creat                       
+9       32      link                            sys_link                        
+10      32      unlink                          sys_unlink                      
+11      32      execve                          sys_execve                      compat_sys_execve
+12      32      chdir                           sys_chdir                       
+13      32      time                            sys_time                        compat_sys_time
+14      32      mknod                           sys_mknod                       
+15      32      chmod                           sys_chmod                       
+16      32      lchown                          sys_lchown                      
+17      32      break                           sys_ni_syscall                  
+18      32      unused18                        sys_ni_syscall                  
+19      32      lseek                           sys_lseek                       
+20      32      getpid                          sys_getpid                      
+21      32      mount                           sys_mount                       compat_sys_mount
+22      32      umount                          sys_oldumount                   
+23      32      setuid                          sys_setuid                      
+24      32      getuid                          sys_getuid                      
+25      32      stime                           sys_stime                       compat_sys_stime
+26      32      ptrace                          sys_ptrace                      compat_sys_ptrace
+27      32      alarm                           sys_alarm                       
+28      32      unused28                        sys_ni_syscall                  
+29      32      pause                           sys_pause                       
+30      32      utime                           sys_utime                       compat_sys_utime
+31      32      stty                            sys_ni_syscall                  
+32      32      gtty                            sys_ni_syscall                  
+33      32      access                          sys_access                      
+34      32      nice                            sys_nice                        
+35      32      ftime                           sys_ni_syscall                  
+36      32      sync                            sys_sync                        
+37      32      kill                            sys_kill                        
+38      32      rename                          sys_rename                      
+39      32      mkdir                           sys_mkdir                       
+40      32      rmdir                           sys_rmdir                       
+41      32      dup                             sys_dup                         
+42      32      pipe                            sysm_pipe                       
+43      32      times                           sys_times                       compat_sys_times
+44      32      prof                            sys_ni_syscall                  
+45      32      brk                             sys_brk                         
+46      32      setgid                          sys_setgid                      
+47      32      getgid                          sys_getgid                      
+48      32      signal                          sys_ni_syscall                  
+49      32      geteuid                         sys_geteuid                     
+50      32      getegid                         sys_getegid                     
+51      32      acct                            sys_acct                        
+52      32      umount2                         sys_umount                      
+53      32      lock                            sys_ni_syscall                  
+54      32      ioctl                           sys_ioctl                       compat_sys_ioctl
+55      32      fcntl                           sys_fcntl                       compat_sys_fcntl
+56      32      mpx                             sys_ni_syscall                  
+57      32      setpgid                         sys_setpgid                     
+58      32      ulimit                          sys_ni_syscall                  
+59      32      unused59                        sys_olduname                    
+60      32      umask                           sys_umask                       
+61      32      chroot                          sys_chroot                      
+62      32      ustat                           sys_ustat                       compat_sys_ustat
+63      32      dup2                            sys_dup2                        
+64      32      getppid                         sys_getppid                     
+65      32      getpgrp                         sys_getpgrp                     
+66      32      setsid                          sys_setsid                      
+67      32      sigaction                       sys_sigaction                   sys_32_sigaction
+68      32      sgetmask                        sys_sgetmask                    
+69      32      ssetmask                        sys_ssetmask                    
+70      32      setreuid                        sys_setreuid                    
+71      32      setregid                        sys_setregid                    
+72      32      sigsuspend                      sys_sigsuspend                  sys32_sigsuspend
+73      32      sigpending                      sys_sigpending                  compat_sys_sigpending
+74      32      sethostname                     sys_sethostname                 
+75      32      setrlimit                       sys_setrlimit                   compat_sys_setrlimit
+76      32      getrlimit                       sys_getrlimit                   compat_sys_getrlimit
+77      32      getrusage                       sys_getrusage                   compat_sys_getrusage
+78      32      gettimeofday                    sys_gettimeofday                compat_sys_gettimeofday
+79      32      settimeofday                    sys_settimeofday                compat_sys_settimeofday
+80      32      getgroups                       sys_getgroups                   
+81      32      setgroups                       sys_setgroups                   
+82      32      reserved82                      sys_ni_syscall                  
+83      32      symlink                         sys_symlink                     
+84      32      unused84                        sys_ni_syscall                  
+85      32      readlink                        sys_readlink                    
+86      32      uselib                          sys_uselib                      
+87      32      swapon                          sys_swapon                      
+88      32      reboot                          sys_reboot                      
+89      32      readdir                         sys_old_readdir                 compat_sys_old_readdir
+90      32      mmap                            sys_mips_mmap                   
+91      32      munmap                          sys_munmap                      
+92      32      truncate                        sys_truncate                    compat_sys_truncate
+93      32      ftruncate                       sys_ftruncate                   compat_sys_ftruncate
+94      32      fchmod                          sys_fchmod                      
+95      32      fchown                          sys_fchown                      
+96      32      getpriority                     sys_getpriority                 
+97      32      setpriority                     sys_setpriority                 
+98      32      profil                          sys_ni_syscall                  
+99      32      statfs                          sys_statfs                      compat_sys_statfs
+100     32      fstatfs                         sys_fstatfs                     compat_sys_fstatfs
+101     32      ioperm                          sys_ni_syscall                  
+102     32      socketcall                      sys_socketcall                  compat_sys_socketcall
+103     32      syslog                          sys_syslog                      
+104     32      setitimer                       sys_setitimer                   compat_sys_setitimer
+105     32      getitimer                       sys_getitimer                   compat_sys_getitimer
+106     32      stat                            sys_newstat                     compat_sys_newstat
+107     32      lstat                           sys_newlstat                    compat_sys_newlstat
+108     32      fstat                           sys_newfstat                    compat_sys_newfstat
+109     32      unused109                       sys_uname                       
+110     32      iopl                            sys_ni_syscall                  
+111     32      vhangup                         sys_vhangup                     
+112     32      idle                            sys_ni_syscall                  
+113     32      vm86                            sys_ni_syscall                  
+114     32      wait4                           sys_wait4                       compat_sys_wait4
+115     32      swapoff                         sys_swapoff                     
+116     32      sysinfo                         sys_sysinfo                     compat_sys_sysinfo
+117     32      ipc                             sys_ipc                         compat_sys_ipc
+118     32      fsync                           sys_fsync                       
+119     32      sigreturn                       sys_sigreturn                   sys32_sigreturn
+120     32      clone                           __sys_clone                     
+121     32      setdomainname                   sys_setdomainname               
+122     32      uname                           sys_newuname                    
+123     32      modify_ldt                      sys_ni_syscall                  
+124     32      adjtimex                        sys_adjtimex                    compat_sys_adjtimex
+125     32      mprotect                        sys_mprotect                    
+126     32      sigprocmask                     sys_sigprocmask                 compat_sys_sigprocmask
+127     32      create_module                   sys_ni_syscall                  
+128     32      init_module                     sys_init_module                 
+129     32      delete_module                   sys_delete_module               
+130     32      get_kernel_syms                 sys_ni_syscall                  
+131     32      quotactl                        sys_quotactl                    
+132     32      getpgid                         sys_getpgid                     
+133     32      fchdir                          sys_fchdir                      
+134     32      bdflush                         sys_bdflush                     
+135     32      sysfs                           sys_sysfs                       
+136     32      personality                     sys_personality                 sys_32_personality
+137     32      afs_syscall                     sys_ni_syscall                  
+138     32      setfsuid                        sys_setfsuid                    
+139     32      setfsgid                        sys_setfsgid                    
+140     32      _llseek                         sys_llseek                      sys_32_llseek
+141     32      getdents                        sys_getdents                    compat_sys_getdents
+142     32      _newselect                      sys_select                      compat_sys_select
+143     32      flock                           sys_flock                       
+144     32      msync                           sys_msync                       
+145     32      readv                           sys_readv                       compat_sys_readv
+146     32      writev                          sys_writev                      compat_sys_writev
+147     32      cacheflush                      sys_cacheflush                  
+148     32      cachectl                        sys_cachectl                    
+149     32      sysmips                         __sys_sysmips                   
+150     32      unused150                       sys_ni_syscall                  
+151     32      getsid                          sys_getsid                      
+152     32      fdatasync                       sys_fdatasync                   
+153     32      _sysctl                         sys_sysctl                      compat_sys_sysctl
+154     32      mlock                           sys_mlock                       
+155     32      munlock                         sys_munlock                     
+156     32      mlockall                        sys_mlockall                    
+157     32      munlockall                      sys_munlockall                  
+158     32      sched_setparam                  sys_sched_setparam              
+159     32      sched_getparam                  sys_sched_getparam              
+160     32      sched_setscheduler              sys_sched_setscheduler          
+161     32      sched_getscheduler              sys_sched_getscheduler          
+162     32      sched_yield                     sys_sched_yield                 
+163     32      sched_get_priority_max          sys_sched_get_priority_max      
+164     32      sched_get_priority_min          sys_sched_get_priority_min      
+165     32      sched_rr_get_interval           sys_sched_rr_get_interval       compat_sys_sched_rr_get_interval
+166     32      nanosleep                       sys_nanosleep                   compat_sys_nanosleep
+167     32      mremap                          sys_mremap                      
+168     32      accept                          sys_accept                      
+169     32      bind                            sys_bind                        
+170     32      connect                         sys_connect                     
+171     32      getpeername                     sys_getpeername                 
+172     32      getsockname                     sys_getsockname                 
+173     32      getsockopt                      sys_getsockopt                  compat_sys_getsockopt
+174     32      listen                          sys_listen                      
+175     32      recv                            sys_recv                        compat_sys_recv
+176     32      recvfrom                        sys_recvfrom                    compat_sys_recvfrom
+177     32      recvmsg                         sys_recvmsg                     compat_sys_recvmsg
+178     32      send                            sys_send                        
+179     32      sendmsg                         sys_sendmsg                     compat_sys_sendmsg
+180     32      sendto                          sys_sendto                      
+181     32      setsockopt                      sys_setsockopt                  compat_sys_setsockopt
+182     32      shutdown                        sys_shutdown                    
+183     32      socket                          sys_socket                      
+184     32      socketpair                      sys_socketpair                  
+185     32      setresuid                       sys_setresuid                   
+186     32      getresuid                       sys_getresuid                   
+187     32      query_module                    sys_ni_syscall                  
+188     32      poll                            sys_poll                        
+189     32      nfsservctl                      sys_ni_syscall                  
+190     32      setresgid                       sys_setresgid                   
+191     32      getresgid                       sys_getresgid                   
+192     32      prctl                           sys_prctl                       
+193     32      rt_sigreturn                    sys_rt_sigreturn                sys32_rt_sigreturn
+194     32      rt_sigaction                    sys_rt_sigaction                compat_sys_rt_sigaction
+195     32      rt_sigprocmask                  sys_rt_sigprocmask              compat_sys_rt_sigprocmask
+196     32      rt_sigpending                   sys_rt_sigpending               compat_sys_rt_sigpending
+197     32      rt_sigtimedwait                 sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait
+198     32      rt_sigqueueinfo                 sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
+199     32      rt_sigsuspend                   sys_rt_sigsuspend               compat_sys_rt_sigsuspend
+200     32      pread64                         sys_pread64                     sys_32_pread
+201     32      pwrite64                        sys_pwrite64                    sys_32_pwrite
+202     32      chown                           sys_chown                       
+203     32      getcwd                          sys_getcwd                      
+204     32      capget                          sys_capget                      
+205     32      capset                          sys_capset                      
+206     32      sigaltstack                     sys_sigaltstack                 compat_sys_sigaltstack
+207     32      sendfile                        sys_sendfile                    compat_sys_sendfile
+208     32      getpmsg                         sys_ni_syscall                  
+209     32      putpmsg                         sys_ni_syscall                  
+210     32      mmap2                           sys_mips_mmap2                  
+211     32      truncate64                      sys_truncate64                  sys_32_truncate64
+212     32      ftruncate64                     sys_ftruncate64                 sys_32_ftruncate64
+213     32      stat64                          sys_stat64                      sys_newstat
+214     32      lstat64                         sys_lstat64                     sys_newlstat
+215     32      fstat64                         sys_fstat64                     sys_newfstat
+216     32      pivot_root                      sys_pivot_root                  
+217     32      mincore                         sys_mincore                     
+218     32      madvise                         sys_madvise                     
+219     32      getdents64                      sys_getdents64                  
+220     32      fcntl64                         sys_fcntl64                     compat_sys_fcntl64
+221     32      reserved221                     sys_ni_syscall                  
+222     32      gettid                          sys_gettid                      
+223     32      readahead                       sys_readahead                   sys32_readahead
+224     32      setxattr                        sys_setxattr                    
+225     32      lsetxattr                       sys_lsetxattr                   
+226     32      fsetxattr                       sys_fsetxattr                   
+227     32      getxattr                        sys_getxattr                    
+228     32      lgetxattr                       sys_lgetxattr                   
+229     32      fgetxattr                       sys_fgetxattr                   
+230     32      listxattr                       sys_listxattr                   
+231     32      llistxattr                      sys_llistxattr                  
+232     32      flistxattr                      sys_flistxattr                  
+233     32      removexattr                     sys_removexattr                 
+234     32      lremovexattr                    sys_lremovexattr                
+235     32      fremovexattr                    sys_fremovexattr                
+236     32      tkill                           sys_tkill                       
+237     32      sendfile64                      sys_sendfile64                  
+238     32      futex                           sys_futex                       compat_sys_futex
+239     32      sched_setaffinity               mipsmt_sys_sched_setaffinity    compat_sys_sched_setaffinity
+240     32      sched_getaffinity               mipsmt_sys_sched_getaffinity    compat_sys_sched_getaffinity
+241     32      io_setup                        sys_io_setup                    compat_sys_io_setup
+242     32      io_destroy                      sys_io_destroy                  
+243     32      io_getevents                    sys_io_getevents                compat_sys_io_getevents
+244     32      io_submit                       sys_io_submit                   compat_sys_io_submit
+245     32      io_cancel                       sys_io_cancel                   
+246     32      exit_group                      sys_exit_group                  
+247     32      lookup_dcookie                  sys_lookup_dcookie              compat_sys_lookup_dcookie
+248     32      epoll_create                    sys_epoll_create                
+249     32      epoll_ctl                       sys_epoll_ctl                   
+250     32      epoll_wait                      sys_epoll_wait                  
+251     32      remap_file_pages                sys_remap_file_pages            
+252     32      set_tid_address                 sys_set_tid_address             
+253     32      restart_syscall                 sys_restart_syscall             
+254     32      fadvise64                       sys_fadvise64_64                sys32_fadvise64_64
+255     32      statfs64                        sys_statfs64                    compat_sys_statfs64
+256     32      fstatfs64                       sys_fstatfs64                   compat_sys_fstatfs64
+257     32      timer_create                    sys_timer_create                compat_sys_timer_create
+258     32      timer_settime                   sys_timer_settime               compat_sys_timer_settime
+259     32      timer_gettime                   sys_timer_gettime               compat_sys_timer_gettime
+260     32      timer_getoverrun                sys_timer_getoverrun            
+261     32      timer_delete                    sys_timer_delete                
+262     32      clock_settime                   sys_clock_settime               compat_sys_clock_settime
+263     32      clock_gettime                   sys_clock_gettime               compat_sys_clock_gettime
+264     32      clock_getres                    sys_clock_getres                compat_sys_clock_getres
+265     32      clock_nanosleep                 sys_clock_nanosleep             compat_sys_clock_nanosleep
+266     32      tgkill                          sys_tgkill                      
+267     32      utimes                          sys_utimes                      compat_sys_utimes
+268     32      mbind                           sys_mbind                       compat_sys_mbind
+269     32      get_mempolicy                   sys_get_mempolicy               compat_sys_get_mempolicy
+270     32      set_mempolicy                   sys_set_mempolicy               compat_sys_set_mempolicy
+271     32      mq_open                         sys_mq_open                     compat_sys_mq_open
+272     32      mq_unlink                       sys_mq_unlink                   
+273     32      mq_timedsend                    sys_mq_timedsend                compat_sys_mq_timedsend
+274     32      mq_timedreceive                 sys_mq_timedreceive             compat_sys_mq_timedreceive
+275     32      mq_notify                       sys_mq_notify                   compat_sys_mq_notify
+276     32      mq_getsetattr                   sys_mq_getsetattr               compat_sys_mq_getsetattr
+277     32      vserver                         sys_ni_syscall                  
+278     32      waitid                          sys_waitid                      compat_sys_waitid
+279     32      sys_setaltroot                  sys_ni_syscall                  
+280     32      add_key                         sys_add_key                     
+281     32      request_key                     sys_request_key                 
+282     32      keyctl                          sys_keyctl                      compat_sys_keyctl
+283     32      set_thread_area                 sys_set_thread_area             
+284     32      inotify_init                    sys_inotify_init                
+285     32      inotify_add_watch               sys_inotify_add_watch           
+286     32      inotify_rm_watch                sys_inotify_rm_watch            
+287     32      migrate_pages                   sys_migrate_pages               compat_sys_migrate_pages
+288     32      openat                          sys_openat                      compat_sys_openat
+289     32      mkdirat                         sys_mkdirat                     
+290     32      mknodat                         sys_mknodat                     
+291     32      fchownat                        sys_fchownat                    
+292     32      futimesat                       sys_futimesat                   compat_sys_futimesat
+293     32      fstatat64                       sys_fstatat64                   sys_newfstatat
+294     32      unlinkat                        sys_unlinkat                    
+295     32      renameat                        sys_renameat                    
+296     32      linkat                          sys_linkat                      
+297     32      symlinkat                       sys_symlinkat                   
+298     32      readlinkat                      sys_readlinkat                  
+299     32      fchmodat                        sys_fchmodat                    
+300     32      faccessat                       sys_faccessat                   
+301     32      pselect6                        sys_pselect6                    compat_sys_pselect6
+302     32      ppoll                           sys_ppoll                       compat_sys_ppoll
+303     32      unshare                         sys_unshare                     
+304     32      splice                          sys_splice                      
+305     32      sync_file_range                 sys_sync_file_range             sys32_sync_file_range
+306     32      tee                             sys_tee                         
+307     32      vmsplice                        sys_vmsplice                    compat_sys_vmsplice
+308     32      move_pages                      sys_move_pages                  compat_sys_move_pages
+309     32      set_robust_list                 sys_set_robust_list             compat_sys_set_robust_list
+310     32      get_robust_list                 sys_get_robust_list             compat_sys_get_robust_list
+311     32      kexec_load                      sys_kexec_load                  compat_sys_kexec_load
+312     32      getcpu                          sys_getcpu                      
+313     32      epoll_pwait                     sys_epoll_pwait                 compat_sys_epoll_pwait
+314     32      ioprio_set                      sys_ioprio_set                  
+315     32      ioprio_get                      sys_ioprio_get                  
+316     32      utimensat                       sys_utimensat                   compat_sys_utimensat
+317     32      signalfd                        sys_signalfd                    compat_sys_signalfd
+318     32      timerfd                         sys_ni_syscall                  
+319     32      eventfd                         sys_eventfd                     
+320     32      fallocate                       sys_fallocate                   sys32_fallocate
+321     32      timerfd_create                  sys_timerfd_create              
+322     32      timerfd_gettime                 sys_timerfd_gettime             compat_sys_timerfd_gettime
+323     32      timerfd_settime                 sys_timerfd_settime             compat_sys_timerfd_settime
+324     32      signalfd4                       sys_signalfd4                   compat_sys_signalfd4
+325     32      eventfd2                        sys_eventfd2                    
+326     32      epoll_create1                   sys_epoll_create1               
+327     32      dup3                            sys_dup3                        
+328     32      pipe2                           sys_pipe2                       
+329     32      inotify_init1                   sys_inotify_init1               
+330     32      preadv                          sys_preadv                      compat_sys_preadv
+331     32      pwritev                         sys_pwritev                     compat_sys_pwritev
+332     32      rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo           compat_sys_rt_tgsigqueueinfo
+333     32      perf_event_open                 sys_perf_event_open             
+334     32      accept4                         sys_accept4                     
+335     32      recvmmsg                        sys_recvmmsg                    compat_sys_recvmmsg
+336     32      fanotify_init                   sys_fanotify_init               
+337     32      fanotify_mark                   sys_fanotify_mark               compat_sys_fanotify_mark
+338     32      prlimit64                       sys_prlimit64                   
+339     32      name_to_handle_at               sys_name_to_handle_at           
+340     32      open_by_handle_at               sys_open_by_handle_at           compat_sys_open_by_handle_at
+341     32      clock_adjtime                   sys_clock_adjtime               compat_sys_clock_adjtime
+342     32      syncfs                          sys_syncfs                      
+343     32      sendmmsg                        sys_sendmmsg                    compat_sys_sendmmsg
+344     32      setns                           sys_setns                       
+345     32      process_vm_readv                sys_process_vm_readv            compat_sys_process_vm_readv
+346     32      process_vm_writev               sys_process_vm_writev           compat_sys_process_vm_writev
+347     32      kcmp                            sys_kcmp                        
+348     32      finit_module                    sys_finit_module                
+349     32      sched_setattr                   sys_sched_setattr               
+350     32      sched_getattr                   sys_sched_getattr               
+351     32      renameat2                       sys_renameat2                   
+352     32      seccomp                         sys_seccomp                     
+353     32      getrandom                       sys_getrandom                   
+354     32      memfd_create                    sys_memfd_create                
+355     32      bpf                             sys_bpf                         
+356     32      execveat                        sys_execveat                    compat_sys_execveat
+357     32      userfaultfd                     sys_userfaultfd                 
+358     32      membarrier                      sys_membarrier                  
+359     32      mlock2                          sys_mlock2                      
+360     32      copy_file_range                 sys_copy_file_range             
+361     32      preadv2                         sys_preadv2                     compat_sys_preadv2
+362     32      pwritev2                        sys_pwritev2                    compat_sys_pwritev2
+363     32      pkey_mprotect                   sys_pkey_mprotect               
+364     32      pkey_alloc                      sys_pkey_alloc                  
+365     32      pkey_free                       sys_pkey_free                   
+366     32      statx                           sys_statx                       
diff --git a/arch/mips/kernel/syscalls/syscall_64.tbl b/arch/mips/kernel/syscalls/syscall_64.tbl
new file mode 100644
index 0000000..9c4b3a0
--- /dev/null
+++ b/arch/mips/kernel/syscalls/syscall_64.tbl
@@ -0,0 +1,335 @@
+#
+# 64-bit system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The abi is "common" for this file.
+#
+0       64      read                            sys_read                        
+1       64      write                           sys_write                       
+2       64      open                            sys_open                        
+3       64      close                           sys_close                       
+4       64      stat                            sys_newstat                     
+5       64      fstat                           sys_newfstat                    
+6       64      lstat                           sys_newlstat                    
+7       64      poll                            sys_poll                        
+8       64      lseek                           sys_lseek                       
+9       64      mmap                            sys_mips_mmap                   
+10      64      mprotect                        sys_mprotect                    
+11      64      munmap                          sys_munmap                      
+12      64      brk                             sys_brk                         
+13      64      rt_sigaction                    sys_rt_sigaction                
+14      64      rt_sigprocmask                  sys_rt_sigprocmask              
+15      64      ioctl                           sys_ioctl                       
+16      64      pread64                         sys_pread64                     
+17      64      pwrite64                        sys_pwrite64                    
+18      64      readv                           sys_readv                       
+19      64      writev                          sys_writev                      
+20      64      access                          sys_access                      
+21      64      pipe                            sysm_pipe                       
+22      64      _newselect                      sys_select                      
+23      64      sched_yield                     sys_sched_yield                 
+24      64      mremap                          sys_mremap                      
+25      64      msync                           sys_msync                       
+26      64      mincore                         sys_mincore                     
+27      64      madvise                         sys_madvise                     
+28      64      shmget                          sys_shmget                      
+29      64      shmat                           sys_shmat                       
+30      64      shmctl                          sys_shmctl                      
+31      64      dup                             sys_dup                         
+32      64      dup2                            sys_dup2                        
+33      64      pause                           sys_pause                       
+34      64      nanosleep                       sys_nanosleep                   
+35      64      getitimer                       sys_getitimer                   
+36      64      setitimer                       sys_setitimer                   
+37      64      alarm                           sys_alarm                       
+38      64      getpid                          sys_getpid                      
+39      64      sendfile                        sys_sendfile64                  
+40      64      socket                          sys_socket                      
+41      64      connect                         sys_connect                     
+42      64      accept                          sys_accept                      
+43      64      sendto                          sys_sendto                      
+44      64      recvfrom                        sys_recvfrom                    
+45      64      sendmsg                         sys_sendmsg                     
+46      64      recvmsg                         sys_recvmsg                     
+47      64      shutdown                        sys_shutdown                    
+48      64      bind                            sys_bind                        
+49      64      listen                          sys_listen                      
+50      64      getsockname                     sys_getsockname                 
+51      64      getpeername                     sys_getpeername                 
+52      64      socketpair                      sys_socketpair                  
+53      64      setsockopt                      sys_setsockopt                  
+54      64      getsockopt                      sys_getsockopt                  
+55      64      clone                           __sys_clone                     
+56      64      fork                            __sys_fork                      
+57      64      execve                          sys_execve                      
+58      64      exit                            sys_exit                        
+59      64      wait4                           sys_wait4                       
+60      64      kill                            sys_kill                        
+61      64      uname                           sys_newuname                    
+62      64      semget                          sys_semget                      
+63      64      semop                           sys_semop                       
+64      64      semctl                          sys_semctl                      
+65      64      shmdt                           sys_shmdt                       
+66      64      msgget                          sys_msgget                      
+67      64      msgsnd                          sys_msgsnd                      
+68      64      msgrcv                          sys_msgrcv                      
+69      64      msgctl                          sys_msgctl                      
+70      64      fcntl                           sys_fcntl                       
+71      64      flock                           sys_flock                       
+72      64      fsync                           sys_fsync                       
+73      64      fdatasync                       sys_fdatasync                   
+74      64      truncate                        sys_truncate                    
+75      64      ftruncate                       sys_ftruncate                   
+76      64      getdents                        sys_getdents                    
+77      64      getcwd                          sys_getcwd                      
+78      64      chdir                           sys_chdir                       
+79      64      fchdir                          sys_fchdir                      
+80      64      rename                          sys_rename                      
+81      64      mkdir                           sys_mkdir                       
+82      64      rmdir                           sys_rmdir                       
+83      64      creat                           sys_creat                       
+84      64      link                            sys_link                        
+85      64      unlink                          sys_unlink                      
+86      64      symlink                         sys_symlink                     
+87      64      readlink                        sys_readlink                    
+88      64      chmod                           sys_chmod                       
+89      64      fchmod                          sys_fchmod                      
+90      64      chown                           sys_chown                       
+91      64      fchown                          sys_fchown                      
+92      64      lchown                          sys_lchown                      
+93      64      umask                           sys_umask                       
+94      64      gettimeofday                    sys_gettimeofday                
+95      64      getrlimit                       sys_getrlimit                   
+96      64      getrusage                       sys_getrusage                   
+97      64      sysinfo                         sys_sysinfo                     
+98      64      times                           sys_times                       
+99      64      ptrace                          sys_ptrace                      
+100     64      getuid                          sys_getuid                      
+101     64      syslog                          sys_syslog                      
+102     64      getgid                          sys_getgid                      
+103     64      setuid                          sys_setuid                      
+104     64      setgid                          sys_setgid                      
+105     64      geteuid                         sys_geteuid                     
+106     64      getegid                         sys_getegid                     
+107     64      setpgid                         sys_setpgid                     
+108     64      getppid                         sys_getppid                     
+109     64      getpgrp                         sys_getpgrp                     
+110     64      setsid                          sys_setsid                      
+111     64      setreuid                        sys_setreuid                    
+112     64      setregid                        sys_setregid                    
+113     64      getgroups                       sys_getgroups                   
+114     64      setgroups                       sys_setgroups                   
+115     64      setresuid                       sys_setresuid                   
+116     64      getresuid                       sys_getresuid                   
+117     64      setresgid                       sys_setresgid                   
+118     64      getresgid                       sys_getresgid                   
+119     64      getpgid                         sys_getpgid                     
+120     64      setfsuid                        sys_setfsuid                    
+121     64      setfsgid                        sys_setfsgid                    
+122     64      getsid                          sys_getsid                      
+123     64      capget                          sys_capget                      
+124     64      capset                          sys_capset                      
+125     64      rt_sigpending                   sys_rt_sigpending               
+126     64      rt_sigtimedwait                 sys_rt_sigtimedwait             
+127     64      rt_sigqueueinfo                 sys_rt_sigqueueinfo             
+128     64      rt_sigsuspend                   sys_rt_sigsuspend               
+129     64      sigaltstack                     sys_sigaltstack                 
+130     64      utime                           sys_utime                       
+131     64      mknod                           sys_mknod                       
+132     64      personality                     sys_personality                 
+133     64      ustat                           sys_ustat                       
+134     64      statfs                          sys_statfs                      
+135     64      fstatfs                         sys_fstatfs                     
+136     64      sysfs                           sys_sysfs                       
+137     64      getpriority                     sys_getpriority                 
+138     64      setpriority                     sys_setpriority                 
+139     64      sched_setparam                  sys_sched_setparam              
+140     64      sched_getparam                  sys_sched_getparam              
+141     64      sched_setscheduler              sys_sched_setscheduler          
+142     64      sched_getscheduler              sys_sched_getscheduler          
+143     64      sched_get_priority_max          sys_sched_get_priority_max      
+144     64      sched_get_priority_min          sys_sched_get_priority_min      
+145     64      sched_rr_get_interval           sys_sched_rr_get_interval       
+146     64      mlock                           sys_mlock                       
+147     64      munlock                         sys_munlock                     
+148     64      mlockall                        sys_mlockall                    
+149     64      munlockall                      sys_munlockall                  
+150     64      vhangup                         sys_vhangup                     
+151     64      pivot_root                      sys_pivot_root                  
+152     64      _sysctl                         sys_sysctl                      
+153     64      prctl                           sys_prctl                       
+154     64      adjtimex                        sys_adjtimex                    
+155     64      setrlimit                       sys_setrlimit                   
+156     64      chroot                          sys_chroot                      
+157     64      sync                            sys_sync                        
+158     64      acct                            sys_acct                        
+159     64      settimeofday                    sys_settimeofday                
+160     64      mount                           sys_mount                       
+161     64      umount2                         sys_umount                      
+162     64      swapon                          sys_swapon                      
+163     64      swapoff                         sys_swapoff                     
+164     64      reboot                          sys_reboot                      
+165     64      sethostname                     sys_sethostname                 
+166     64      setdomainname                   sys_setdomainname               
+167     64      create_module                   sys_ni_syscall                  
+168     64      init_module                     sys_init_module                 
+169     64      delete_module                   sys_delete_module               
+170     64      get_kernel_syms                 sys_ni_syscall                  
+171     64      query_module                    sys_ni_syscall                  
+172     64      quotactl                        sys_quotactl                    
+173     64      nfsservctl                      sys_ni_syscall                  
+174     64      getpmsg                         sys_ni_syscall                  
+175     64      putpmsg                         sys_ni_syscall                  
+176     64      afs_syscall                     sys_ni_syscall                  
+177     64      reserved177                     sys_ni_syscall                  
+178     64      gettid                          sys_gettid                      
+179     64      readahead                       sys_readahead                   
+180     64      setxattr                        sys_setxattr                    
+181     64      lsetxattr                       sys_lsetxattr                   
+182     64      fsetxattr                       sys_fsetxattr                   
+183     64      getxattr                        sys_getxattr                    
+184     64      lgetxattr                       sys_lgetxattr                   
+185     64      fgetxattr                       sys_fgetxattr                   
+186     64      listxattr                       sys_listxattr                   
+187     64      llistxattr                      sys_llistxattr                  
+188     64      flistxattr                      sys_flistxattr                  
+189     64      removexattr                     sys_removexattr                 
+190     64      lremovexattr                    sys_lremovexattr                
+191     64      fremovexattr                    sys_fremovexattr                
+192     64      tkill                           sys_tkill                       
+193     64      reserved193                     sys_ni_syscall                  
+194     64      futex                           sys_futex                       
+195     64      sched_setaffinity               sys_sched_setaffinity           
+196     64      sched_getaffinity               sys_sched_getaffinity           
+197     64      cacheflush                      sys_cacheflush                  
+198     64      cachectl                        sys_cachectl                    
+199     64      sysmips                         __sys_sysmips                   
+200     64      io_setup                        sys_io_setup                    
+201     64      io_destroy                      sys_io_destroy                  
+202     64      io_getevents                    sys_io_getevents                
+203     64      io_submit                       sys_io_submit                   
+204     64      io_cancel                       sys_io_cancel                   
+205     64      exit_group                      sys_exit_group                  
+206     64      lookup_dcookie                  sys_lookup_dcookie              
+207     64      epoll_create                    sys_epoll_create                
+208     64      epoll_ctl                       sys_epoll_ctl                   
+209     64      epoll_wait                      sys_epoll_wait                  
+210     64      remap_file_pages                sys_remap_file_pages            
+211     64      rt_sigreturn                    sys_rt_sigreturn                
+212     64      set_tid_address                 sys_set_tid_address             
+213     64      restart_syscall                 sys_restart_syscall             
+214     64      semtimedop                      sys_semtimedop                  
+215     64      fadvise64                       sys_fadvise64_64                
+216     64      timer_create                    sys_timer_create                
+217     64      timer_settime                   sys_timer_settime               
+218     64      timer_gettime                   sys_timer_gettime               
+219     64      timer_getoverrun                sys_timer_getoverrun            
+220     64      timer_delete                    sys_timer_delete                
+221     64      clock_settime                   sys_clock_settime               
+222     64      clock_gettime                   sys_clock_gettime               
+223     64      clock_getres                    sys_clock_getres                
+224     64      clock_nanosleep                 sys_clock_nanosleep             
+225     64      tgkill                          sys_tgkill                      
+226     64      utimes                          sys_utimes                      
+227     64      mbind                           sys_mbind                       
+228     64      get_mempolicy                   sys_get_mempolicy               
+229     64      set_mempolicy                   sys_set_mempolicy               
+230     64      mq_open                         sys_mq_open                     
+231     64      mq_unlink                       sys_mq_unlink                   
+232     64      mq_timedsend                    sys_mq_timedsend                
+233     64      mq_timedreceive                 sys_mq_timedreceive             
+234     64      mq_notify                       sys_mq_notify                   
+235     64      mq_getsetattr                   sys_mq_getsetattr               
+236     64      vserver                         sys_ni_syscall                  
+237     64      waitid                          sys_waitid                      
+238     64      sys_setaltroot                  sys_ni_syscall                  
+239     64      add_key                         sys_add_key                     
+240     64      request_key                     sys_request_key                 
+241     64      keyctl                          sys_keyctl                      
+242     64      set_thread_area                 sys_set_thread_area             
+243     64      inotify_init                    sys_inotify_init                
+244     64      inotify_add_watch               sys_inotify_add_watch           
+245     64      inotify_rm_watch                sys_inotify_rm_watch            
+246     64      migrate_pages                   sys_migrate_pages               
+247     64      openat                          sys_openat                      
+248     64      mkdirat                         sys_mkdirat                     
+249     64      mknodat                         sys_mknodat                     
+250     64      fchownat                        sys_fchownat                    
+251     64      futimesat                       sys_futimesat                   
+252     64      newfstatat                      sys_newfstatat                  
+253     64      unlinkat                        sys_unlinkat                    
+254     64      renameat                        sys_renameat                    
+255     64      linkat                          sys_linkat                      
+256     64      symlinkat                       sys_symlinkat                   
+257     64      readlinkat                      sys_readlinkat                  
+258     64      fchmodat                        sys_fchmodat                    
+259     64      faccessat                       sys_faccessat                   
+260     64      pselect6                        sys_pselect6                    
+261     64      ppoll                           sys_ppoll                       
+262     64      unshare                         sys_unshare                     
+263     64      splice                          sys_splice                      
+264     64      sync_file_range                 sys_sync_file_range             
+265     64      tee                             sys_tee                         
+266     64      vmsplice                        sys_vmsplice                    
+267     64      move_pages                      sys_move_pages                  
+268     64      set_robust_list                 sys_set_robust_list             
+269     64      get_robust_list                 sys_get_robust_list             
+270     64      kexec_load                      sys_kexec_load                  
+271     64      getcpu                          sys_getcpu                      
+272     64      epoll_pwait                     sys_epoll_pwait                 
+273     64      ioprio_set                      sys_ioprio_set                  
+274     64      ioprio_get                      sys_ioprio_get                  
+275     64      utimensat                       sys_utimensat                   
+276     64      signalfd                        sys_signalfd                    
+277     64      timerfd                         sys_ni_syscall                  
+278     64      eventfd                         sys_eventfd                     
+279     64      fallocate                       sys_fallocate                   
+280     64      timerfd_create                  sys_timerfd_create              
+281     64      timerfd_gettime                 sys_timerfd_gettime             
+282     64      timerfd_settime                 sys_timerfd_settime             
+283     64      signalfd4                       sys_signalfd4                   
+284     64      eventfd2                        sys_eventfd2                    
+285     64      epoll_create1                   sys_epoll_create1               
+286     64      dup3                            sys_dup3                        
+287     64      pipe2                           sys_pipe2                       
+288     64      inotify_init1                   sys_inotify_init1               
+289     64      preadv                          sys_preadv                      
+290     64      pwritev                         sys_pwritev                     
+291     64      rt_tgsigqueueinfo               sys_rt_tgsigqueueinfo           
+292     64      perf_event_open                 sys_perf_event_open             
+293     64      accept4                         sys_accept4                     
+294     64      recvmmsg                        sys_recvmmsg                    
+295     64      fanotify_init                   sys_fanotify_init               
+296     64      fanotify_mark                   sys_fanotify_mark               
+297     64      prlimit64                       sys_prlimit64                   
+298     64      name_to_handle_at               sys_name_to_handle_at           
+299     64      open_by_handle_at               sys_open_by_handle_at           
+300     64      clock_adjtime                   sys_clock_adjtime               
+301     64      syncfs                          sys_syncfs                      
+302     64      sendmmsg                        sys_sendmmsg                    
+303     64      setns                           sys_setns                       
+304     64      process_vm_readv                sys_process_vm_readv            
+305     64      process_vm_writev               sys_process_vm_writev           
+306     64      kcmp                            sys_kcmp                        
+307     64      finit_module                    sys_finit_module                
+308     64      getdents64                      sys_getdents64                  
+309     64      sched_setattr                   sys_sched_setattr               
+310     64      sched_getattr                   sys_sched_getattr               
+311     64      renameat2                       sys_renameat2                   
+312     64      seccomp                         sys_seccomp                     
+313     64      getrandom                       sys_getrandom                   
+314     64      memfd_create                    sys_memfd_create                
+315     64      bpf                             sys_bpf                         
+316     64      execveat                        sys_execveat                    
+317     64      userfaultfd                     sys_userfaultfd                 
+318     64      membarrier                      sys_membarrier                  
+319     64      mlock2                          sys_mlock2                      
+320     64      copy_file_range                 sys_copy_file_range             
+321     64      preadv2                         sys_preadv2                     
+322     64      pwritev2                        sys_pwritev2                    
+323     64      pkey_mprotect                   sys_pkey_mprotect               
+324     64      pkey_alloc                      sys_pkey_alloc                  
+325     64      pkey_free                       sys_pkey_free                   
+326     64      statx                           sys_statx                       
diff --git a/arch/mips/kernel/syscalls/syscall_n32.tbl b/arch/mips/kernel/syscalls/syscall_n32.tbl
new file mode 100644
index 0000000..69d2205
--- /dev/null
+++ b/arch/mips/kernel/syscalls/syscall_n32.tbl
@@ -0,0 +1,339 @@
+#
+# 32-bit native system call numbers and entry vectors
+#
+# The format is:
+# <number> <abi> <name> <entry point>
+#
+# The abi is always "common" for this file.
+#
+0       n32     read                            sys_read                        
+1       n32     write                           sys_write                       
+2       n32     open                            sys_open                        
+3       n32     close                           sys_close                       
+4       n32     stat                            sys_newstat                     
+5       n32     fstat                           sys_newfstat                    
+6       n32     lstat                           sys_newlstat                    
+7       n32     poll                            sys_poll                        
+8       n32     lseek                           sys_lseek                       
+9       n32     mmap                            sys_mips_mmap                   
+10      n32     mprotect                        sys_mprotect                    
+11      n32     munmap                          sys_munmap                      
+12      n32     brk                             sys_brk                         
+13      n32     rt_sigaction                    compat_sys_rt_sigaction         
+14      n32     rt_sigprocmask                  compat_sys_rt_sigprocmask       
+15      n32     ioctl                           compat_sys_ioctl                
+16      n32     pread64                         sys_pread64                     
+17      n32     pwrite64                        sys_pwrite64                    
+18      n32     readv                           compat_sys_readv                
+19      n32     writev                          compat_sys_writev               
+20      n32     access                          sys_access                      
+21      n32     pipe                            sysm_pipe                       
+22      n32     _newselect                      compat_sys_select               
+23      n32     sched_yield                     sys_sched_yield                 
+24      n32     mremap                          sys_mremap                      
+25      n32     msync                           sys_msync                       
+26      n32     mincore                         sys_mincore                     
+27      n32     madvise                         sys_madvise                     
+28      n32     shmget                          sys_shmget                      
+29      n32     shmat                           sys_shmat                       
+30      n32     shmctl                          compat_sys_shmctl               
+31      n32     dup                             sys_dup                         
+32      n32     dup2                            sys_dup2                        
+33      n32     pause                           sys_pause                       
+34      n32     nanosleep                       compat_sys_nanosleep            
+35      n32     getitimer                       compat_sys_getitimer            
+36      n32     setitimer                       compat_sys_setitimer            
+37      n32     alarm                           sys_alarm                       
+38      n32     getpid                          sys_getpid                      
+39      n32     sendfile                        compat_sys_sendfile             
+40      n32     socket                          sys_socket                      
+41      n32     connect                         sys_connect                     
+42      n32     accept                          sys_accept                      
+43      n32     sendto                          sys_sendto                      
+44      n32     recvfrom                        compat_sys_recvfrom             
+45      n32     sendmsg                         compat_sys_sendmsg              
+46      n32     recvmsg                         compat_sys_recvmsg              
+47      n32     shutdown                        sys_shutdown                    
+48      n32     bind                            sys_bind                        
+49      n32     listen                          sys_listen                      
+50      n32     getsockname                     sys_getsockname                 
+51      n32     getpeername                     sys_getpeername                 
+52      n32     socketpair                      sys_socketpair                  
+53      n32     setsockopt                      compat_sys_setsockopt           
+54      n32     getsockopt                      compat_sys_getsockopt           
+55      n32     clone                           __sys_clone                     
+56      n32     fork                            __sys_fork                      
+57      n32     execve                          compat_sys_execve               
+58      n32     exit                            sys_exit                        
+59      n32     wait4                           compat_sys_wait4                
+60      n32     kill                            sys_kill                        
+61      n32     uname                           sys_newuname                    
+62      n32     semget                          sys_semget                      
+63      n32     semop                           sys_semop                       
+64      n32     semctl                          compat_sys_semctl               
+65      n32     shmdt                           sys_shmdt                       
+66      n32     msgget                          sys_msgget                      
+67      n32     msgsnd                          compat_sys_msgsnd               
+68      n32     msgrcv                          compat_sys_msgrcv               
+69      n32     msgctl                          compat_sys_msgctl               
+70      n32     fcntl                           compat_sys_fcntl                
+71      n32     flock                           sys_flock                       
+72      n32     fsync                           sys_fsync                       
+73      n32     fdatasync                       sys_fdatasync                   
+74      n32     truncate                        sys_truncate                    
+75      n32     ftruncate                       sys_ftruncate                   
+76      n32     getdents                        compat_sys_getdents             
+77      n32     getcwd                          sys_getcwd                      
+78      n32     chdir                           sys_chdir                       
+79      n32     fchdir                          sys_fchdir                      
+80      n32     rename                          sys_rename                      
+81      n32     mkdir                           sys_mkdir                       
+82      n32     rmdir                           sys_rmdir                       
+83      n32     creat                           sys_creat                       
+84      n32     link                            sys_link                        
+85      n32     unlink                          sys_unlink                      
+86      n32     symlink                         sys_symlink                     
+87      n32     readlink                        sys_readlink                    
+88      n32     chmod                           sys_chmod                       
+89      n32     fchmod                          sys_fchmod                      
+90      n32     chown                           sys_chown                       
+91      n32     fchown                          sys_fchown                      
+92      n32     lchown                          sys_lchown                      
+93      n32     umask                           sys_umask                       
+94      n32     gettimeofday                    compat_sys_gettimeofday         
+95      n32     getrlimit                       compat_sys_getrlimit            
+96      n32     getrusage                       compat_sys_getrusage            
+97      n32     sysinfo                         compat_sys_sysinfo              
+98      n32     times                           compat_sys_times                
+99      n32     ptrace                          compat_sys_ptrace               
+100     n32     getuid                          sys_getuid                      
+101     n32     syslog                          sys_syslog                      
+102     n32     getgid                          sys_getgid                      
+103     n32     setuid                          sys_setuid                      
+104     n32     setgid                          sys_setgid                      
+105     n32     geteuid                         sys_geteuid                     
+106     n32     getegid                         sys_getegid                     
+107     n32     setpgid                         sys_setpgid                     
+108     n32     getppid                         sys_getppid                     
+109     n32     getpgrp                         sys_getpgrp                     
+110     n32     setsid                          sys_setsid                      
+111     n32     setreuid                        sys_setreuid                    
+112     n32     setregid                        sys_setregid                    
+113     n32     getgroups                       sys_getgroups                   
+114     n32     setgroups                       sys_setgroups                   
+115     n32     setresuid                       sys_setresuid                   
+116     n32     getresuid                       sys_getresuid                   
+117     n32     setresgid                       sys_setresgid                   
+118     n32     getresgid                       sys_getresgid                   
+119     n32     getpgid                         sys_getpgid                     
+120     n32     setfsuid                        sys_setfsuid                    
+121     n32     setfsgid                        sys_setfsgid                    
+122     n32     getsid                          sys_getsid                      
+123     n32     capget                          sys_capget                      
+124     n32     capset                          sys_capset                      
+125     n32     rt_sigpending                   compat_sys_rt_sigpending        
+126     n32     rt_sigtimedwait                 compat_sys_rt_sigtimedwait      
+127     n32     rt_sigqueueinfo                 compat_sys_rt_sigqueueinfo      
+128     n32     rt_sigsuspend                   compat_sys_rt_sigsuspend        
+129     n32     sigaltstack                     compat_sys_sigaltstack          
+130     n32     utime                           compat_sys_utime                
+131     n32     mknod                           sys_mknod                       
+132     n32     personality                     sys_32_personality              
+133     n32     ustat                           compat_sys_ustat                
+134     n32     statfs                          compat_sys_statfs               
+135     n32     fstatfs                         compat_sys_fstatfs              
+136     n32     sysfs                           sys_sysfs                       
+137     n32     getpriority                     sys_getpriority                 
+138     n32     setpriority                     sys_setpriority                 
+139     n32     sched_setparam                  sys_sched_setparam              
+140     n32     sched_getparam                  sys_sched_getparam              
+141     n32     sched_setscheduler              sys_sched_setscheduler          
+142     n32     sched_getscheduler              sys_sched_getscheduler          
+143     n32     sched_get_priority_max          sys_sched_get_priority_max      
+144     n32     sched_get_priority_min          sys_sched_get_priority_min      
+145     n32     sched_rr_get_interval           compat_sys_sched_rr_get_interval
+146     n32     mlock                           sys_mlock                       
+147     n32     munlock                         sys_munlock                     
+148     n32     mlockall                        sys_mlockall                    
+149     n32     munlockall                      sys_munlockall                  
+150     n32     vhangup                         sys_vhangup                     
+151     n32     pivot_root                      sys_pivot_root                  
+152     n32     _sysctl                         compat_sys_sysctl               
+153     n32     prctl                           sys_prctl                       
+154     n32     adjtimex                        compat_sys_adjtimex             
+155     n32     setrlimit                       compat_sys_setrlimit            
+156     n32     chroot                          sys_chroot                      
+157     n32     sync                            sys_sync                        
+158     n32     acct                            sys_acct                        
+159     n32     settimeofday                    compat_sys_settimeofday         
+160     n32     mount                           compat_sys_mount                
+161     n32     umount2                         sys_umount                      
+162     n32     swapon                          sys_swapon                      
+163     n32     swapoff                         sys_swapoff                     
+164     n32     reboot                          sys_reboot                      
+165     n32     sethostname                     sys_sethostname                 
+166     n32     setdomainname                   sys_setdomainname               
+167     n32     create_module                   sys_ni_syscall                  
+168     n32     init_module                     sys_init_module                 
+169     n32     delete_module                   sys_delete_module               
+170     n32     get_kernel_syms                 sys_ni_syscall                  
+171     n32     query_module                    sys_ni_syscall                  
+172     n32     quotactl                        sys_quotactl                    
+173     n32     nfsservctl                      sys_ni_syscall                  
+174     n32     getpmsg                         sys_ni_syscall                  
+175     n32     putpmsg                         sys_ni_syscall                  
+176     n32     afs_syscall                     sys_ni_syscall                  
+177     n32     reserved177                     sys_ni_syscall                  
+178     n32     gettid                          sys_gettid                      
+179     n32     readahead                       sys_readahead                   
+180     n32     setxattr                        sys_setxattr                    
+181     n32     lsetxattr                       sys_lsetxattr                   
+182     n32     fsetxattr                       sys_fsetxattr                   
+183     n32     getxattr                        sys_getxattr                    
+184     n32     lgetxattr                       sys_lgetxattr                   
+185     n32     fgetxattr                       sys_fgetxattr                   
+186     n32     listxattr                       sys_listxattr                   
+187     n32     llistxattr                      sys_llistxattr                  
+188     n32     flistxattr                      sys_flistxattr                  
+189     n32     removexattr                     sys_removexattr                 
+190     n32     lremovexattr                    sys_lremovexattr                
+191     n32     fremovexattr                    sys_fremovexattr                
+192     n32     tkill                           sys_tkill                       
+193     n32     reserved193                     sys_ni_syscall                  
+194     n32     futex                           compat_sys_futex                
+195     n32     sched_setaffinity               compat_sys_sched_setaffinity    
+196     n32     sched_getaffinity               compat_sys_sched_getaffinity    
+197     n32     cacheflush                      sys_cacheflush                  
+198     n32     cachectl                        sys_cachectl                    
+199     n32     sysmips                         __sys_sysmips                   
+200     n32     io_setup                        compat_sys_io_setup             
+201     n32     io_destroy                      sys_io_destroy                  
+202     n32     io_getevents                    compat_sys_io_getevents         
+203     n32     io_submit                       compat_sys_io_submit            
+204     n32     io_cancel                       sys_io_cancel                   
+205     n32     exit_group                      sys_exit_group                  
+206     n32     lookup_dcookie                  sys_lookup_dcookie              
+207     n32     epoll_create                    sys_epoll_create                
+208     n32     epoll_ctl                       sys_epoll_ctl                   
+209     n32     epoll_wait                      sys_epoll_wait                  
+210     n32     remap_file_pages                sys_remap_file_pages            
+211     n32     rt_sigreturn                    sysn32_rt_sigreturn             
+212     n32     fcntl64                         compat_sys_fcntl64              
+213     n32     set_tid_address                 sys_set_tid_address             
+214     n32     restart_syscall                 sys_restart_syscall             
+215     n32     semtimedop                      compat_sys_semtimedop           
+216     n32     fadvise64                       sys_fadvise64_64                
+217     n32     statfs64                        compat_sys_statfs64             
+218     n32     fstatfs64                       compat_sys_fstatfs64            
+219     n32     sendfile64                      sys_sendfile64                  
+220     n32     timer_create                    compat_sys_timer_create         
+221     n32     timer_settime                   compat_sys_timer_settime        
+222     n32     timer_gettime                   compat_sys_timer_gettime        
+223     n32     timer_getoverrun                sys_timer_getoverrun            
+224     n32     timer_delete                    sys_timer_delete                
+225     n32     clock_settime                   compat_sys_clock_settime        
+226     n32     clock_gettime                   compat_sys_clock_gettime        
+227     n32     clock_getres                    compat_sys_clock_getres         
+228     n32     clock_nanosleep                 compat_sys_clock_nanosleep      
+229     n32     tgkill                          sys_tgkill                      
+230     n32     utimes                          compat_sys_utimes               
+231     n32     mbind                           compat_sys_mbind                
+232     n32     get_mempolicy                   compat_sys_get_mempolicy        
+233     n32     set_mempolicy                   compat_sys_set_mempolicy        
+234     n32     mq_open                         compat_sys_mq_open              
+235     n32     mq_unlink                       sys_mq_unlink                   
+236     n32     mq_timedsend                    compat_sys_mq_timedsend         
+237     n32     mq_timedreceive                 compat_sys_mq_timedreceive      
+238     n32     mq_notify                       compat_sys_mq_notify            
+239     n32     mq_getsetattr                   compat_sys_mq_getsetattr        
+240     n32     vserver                         sys_ni_syscall                  
+241     n32     waitid                          compat_sys_waitid               
+242     n32     sys_setaltroot                  sys_ni_syscall                  
+243     n32     add_key                         sys_add_key                     
+244     n32     request_key                     sys_request_key                 
+245     n32     keyctl                          compat_sys_keyctl               
+246     n32     set_thread_area                 sys_set_thread_area             
+247     n32     inotify_init                    sys_inotify_init                
+248     n32     inotify_add_watch               sys_inotify_add_watch           
+249     n32     inotify_rm_watch                sys_inotify_rm_watch            
+250     n32     migrate_pages                   compat_sys_migrate_pages        
+251     n32     openat                          sys_openat                      
+252     n32     mkdirat                         sys_mkdirat                     
+253     n32     mknodat                         sys_mknodat                     
+254     n32     fchownat                        sys_fchownat                    
+255     n32     futimesat                       compat_sys_futimesat            
+256     n32     newfstatat                      sys_newfstatat                  
+257     n32     unlinkat                        sys_unlinkat                    
+258     n32     renameat                        sys_renameat                    
+259     n32     linkat                          sys_linkat                      
+260     n32     symlinkat                       sys_symlinkat                   
+261     n32     readlinkat                      sys_readlinkat                  
+262     n32     fchmodat                        sys_fchmodat                    
+263     n32     faccessat                       sys_faccessat                   
+264     n32     pselect6                        compat_sys_pselect6             
+265     n32     ppoll                           compat_sys_ppoll                
+266     n32     unshare                         sys_unshare                     
+267     n32     splice                          sys_splice                      
+268     n32     sync_file_range                 sys_sync_file_range             
+269     n32     tee                             sys_tee                         
+270     n32     vmsplice                        compat_sys_vmsplice             
+271     n32     move_pages                      compat_sys_move_pages           
+272     n32     set_robust_list                 compat_sys_set_robust_list      
+273     n32     get_robust_list                 compat_sys_get_robust_list      
+274     n32     kexec_load                      compat_sys_kexec_load           
+275     n32     getcpu                          sys_getcpu                      
+276     n32     epoll_pwait                     compat_sys_epoll_pwait          
+277     n32     ioprio_set                      sys_ioprio_set                  
+278     n32     ioprio_get                      sys_ioprio_get                  
+279     n32     utimensat                       compat_sys_utimensat            
+280     n32     signalfd                        compat_sys_signalfd             
+281     n32     timerfd                         sys_ni_syscall                  
+282     n32     eventfd                         sys_eventfd                     
+283     n32     fallocate                       sys_fallocate                   
+284     n32     timerfd_create                  sys_timerfd_create              
+285     n32     timerfd_gettime                 compat_sys_timerfd_gettime      
+286     n32     timerfd_settime                 compat_sys_timerfd_settime      
+287     n32     signalfd4                       compat_sys_signalfd4            
+288     n32     eventfd2                        sys_eventfd2                    
+289     n32     epoll_create1                   sys_epoll_create1               
+290     n32     dup3                            sys_dup3                        
+291     n32     pipe2                           sys_pipe2                       
+292     n32     inotify_init1                   sys_inotify_init1               
+293     n32     preadv                          compat_sys_preadv               
+294     n32     pwritev                         compat_sys_pwritev              
+295     n32     rt_tgsigqueueinfo               compat_sys_rt_tgsigqueueinfo    
+296     n32     perf_event_open                 sys_perf_event_open             
+297     n32     accept4                         sys_accept4                     
+298     n32     recvmmsg                        compat_sys_recvmmsg             
+299     n32     getdents64                      sys_getdents64                  
+300     n32     fanotify_init                   sys_fanotify_init               
+301     n32     fanotify_mark                   sys_fanotify_mark               
+302     n32     prlimit64                       sys_prlimit64                   
+303     n32     name_to_handle_at               sys_name_to_handle_at           
+304     n32     open_by_handle_at               sys_open_by_handle_at           
+305     n32     clock_adjtime                   compat_sys_clock_adjtime        
+306     n32     syncfs                          sys_syncfs                      
+307     n32     sendmmsg                        compat_sys_sendmmsg             
+308     n32     setns                           sys_setns                       
+309     n32     process_vm_readv                compat_sys_process_vm_readv     
+310     n32     process_vm_writev               compat_sys_process_vm_writev    
+311     n32     kcmp                            sys_kcmp                        
+312     n32     finit_module                    sys_finit_module                
+313     n32     sched_setattr                   sys_sched_setattr               
+314     n32     sched_getattr                   sys_sched_getattr               
+315     n32     renameat2                       sys_renameat2                   
+316     n32     seccomp                         sys_seccomp                     
+317     n32     getrandom                       sys_getrandom                   
+318     n32     memfd_create                    sys_memfd_create                
+319     n32     bpf                             sys_bpf                         
+320     n32     execveat                        compat_sys_execveat             
+321     n32     userfaultfd                     sys_userfaultfd                 
+322     n32     membarrier                      sys_membarrier                  
+323     n32     mlock2                          sys_mlock2                      
+324     n32     copy_file_range                 sys_copy_file_range             
+325     n32     preadv2                         compat_sys_preadv2              
+326     n32     pwritev2                        compat_sys_pwritev2             
+327     n32     pkey_mprotect                   sys_pkey_mprotect               
+328     n32     pkey_alloc                      sys_pkey_alloc                  
+329     n32     pkey_free                       sys_pkey_free                   
+330     n32     statx                           sys_statx                       
diff --git a/arch/mips/kernel/syscalls/syscallhdr.sh b/arch/mips/kernel/syscalls/syscallhdr.sh
new file mode 100644
index 0000000..54ace2e
--- /dev/null
+++ b/arch/mips/kernel/syscalls/syscallhdr.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abis=`echo "($3)" | tr ',' '|'`
+prefix="$4"
+offset="$5"
+
+fileguard=_UAPI_ASM_MIPS_`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 ""
+    if [ -z "$offset" ]; then
+        echo -e "#define __NR_syscalls\t$nxt"
+    else
+        echo -e "#define __NR_syscalls\t($offset + $nxt)"
+    fi
+    echo ""
+    echo "#endif /* ${fileguard} */"
+) > "$out"
diff --git a/arch/mips/kernel/syscalls/syscalltbl.sh b/arch/mips/kernel/syscalls/syscalltbl.sh
new file mode 100644
index 0000000..2d92857
--- /dev/null
+++ b/arch/mips/kernel/syscalls/syscalltbl.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+in="$1"
+out="$2"
+my_abi="$3"
+
+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 '^[0-9]' "$in" | sort -n | (
+    nxt=4000
+    while read nr abi name entry compat ; do
+	if [ "$my_abi" = "32-o32" ]; then 
+	    let t_nxt=$nxt+0
+            emit $t_nxt $nr $entry
+	elif [ "$my_abi" = "64-o32" ]; then
+	    let t_nxt=$nxt+0
+	    if [ -z "$compat" ]; then
+		emit $t_nxt $nr $entry
+	    else
+		emit $t_nxt $nr $compat
+	    fi
+	elif [ "$my_abi" = "64-64" ]; then
+	    let t_nxt=$nxt+1000
+            emit $t_nxt $nr $entry
+	elif [ "$my_abi" = "64-n32" ]; then
+	    let t_nxt=$nxt+2000
+            emit $t_nxt $nr $entry
+	fi
+	nxt=$nr
+        let nxt=nxt+1
+    done
+) > "$out"
-- 
1.9.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 3/3] mips: uapi header and system call table file generation
  2018-09-14  8:38 [PATCH 0/3] System call table generation support Firoz Khan
  2018-09-14  8:38 ` [PATCH 1/3] mips: Add __NR_syscalls macro in uapi/asm/unistd.h Firoz Khan
  2018-09-14  8:38 ` [PATCH 2/3] mips: Add system call table generation support Firoz Khan
@ 2018-09-14  8:38 ` Firoz Khan
  2018-09-14 12:55   ` kbuild test robot
  2018-09-17 17:17 ` [PATCH 0/3] System call table generation support Paul Burton
  3 siblings, 1 reply; 13+ messages in thread
From: Firoz Khan @ 2018-09-14  8:38 UTC (permalink / raw)
  To: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, Paul Burton, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart
  Cc: y2038, linux-kernel, linux-arch, arnd, deepa.kernel,
	marcin.juszkiewicz, firoz.khan

System call table generation script must be run to generate
unistd_*.h and syscall_table_*.h files. This patch will have
changes which will invokes the script.

This patch will generate unistd_*.h and syscall_table_*.h files
by the syscall table generation script invoked by arch/sparc/
Makefile and the generated files against the removed files will
be identical.

The generated uapi header file will be included in uapi/asm/
unistd_*.h and generated system call table support file will
be included by arch/mips/kernel/syscall_table_*.S file.

Signed-off-by: Firoz Khan <firoz.khan@linaro.org>
---
 arch/mips/Makefile                      |    3 +
 arch/mips/include/asm/Kbuild            |    4 +
 arch/mips/include/uapi/asm/Kbuild       |    3 +
 arch/mips/include/uapi/asm/unistd.h     | 1049 +------------------------------
 arch/mips/kernel/scall32-o32.S          |  385 +-----------
 arch/mips/kernel/scall64-64.S           |  334 +---------
 arch/mips/kernel/scall64-n32.S          |  337 +---------
 arch/mips/kernel/scall64-o32.S          |  374 +----------
 arch/mips/kernel/syscall_table_32_o32.S |    8 +
 arch/mips/kernel/syscall_table_64_64.S  |    9 +
 arch/mips/kernel/syscall_table_64_n32.S |    8 +
 arch/mips/kernel/syscall_table_64_o32.S |    9 +
 12 files changed, 57 insertions(+), 2466 deletions(-)
 create mode 100644 arch/mips/kernel/syscall_table_32_o32.S
 create mode 100644 arch/mips/kernel/syscall_table_64_64.S
 create mode 100644 arch/mips/kernel/syscall_table_64_n32.S
 create mode 100644 arch/mips/kernel/syscall_table_64_o32.S

diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index d74b374..d3d15cc 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -444,6 +444,9 @@ archclean:
 	$(Q)$(MAKE) $(clean)=arch/mips/boot/tools
 	$(Q)$(MAKE) $(clean)=arch/mips/lasat
 
+archheaders:
+	$(Q)$(MAKE) $(build)=arch/mips/kernel/syscalls all
+
 define archhelp
 	echo '  install              - install kernel into $(INSTALL_PATH)'
 	echo '  vmlinux.ecoff        - ECOFF boot image'
diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild
index 58351e4..100bba2 100644
--- a/arch/mips/include/asm/Kbuild
+++ b/arch/mips/include/asm/Kbuild
@@ -21,3 +21,7 @@ generic-y += unaligned.h
 generic-y += user.h
 generic-y += word-at-a-time.h
 generic-y += xor.h
+generated-y += syscall_table_32_o32.h
+generated-y += syscall_table_64_o32.h
+generated-y += syscall_table_64_64.h
+generated-y += syscall_table_64_n32.h
\ No newline at end of file
diff --git a/arch/mips/include/uapi/asm/Kbuild b/arch/mips/include/uapi/asm/Kbuild
index 7a4becd..4efe053 100644
--- a/arch/mips/include/uapi/asm/Kbuild
+++ b/arch/mips/include/uapi/asm/Kbuild
@@ -3,3 +3,6 @@ include include/uapi/asm-generic/Kbuild.asm
 
 generic-y += bpf_perf_event.h
 generic-y += ipcbuf.h
+generated-y += unistd_32.h
+generated-y += unistd_64.h
+generated-y += unistd_n32.h
\ No newline at end of file
diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h
index f8bab34..57c06f0 100644
--- a/arch/mips/include/uapi/asm/unistd.h
+++ b/arch/mips/include/uapi/asm/unistd.h
@@ -20,377 +20,8 @@
 /*
  * Linux o32 style syscalls are in the range from 4000 to 4999.
  */
-#define __NR_Linux			4000
-#define __NR_syscall			(__NR_Linux +	0)
-#define __NR_exit			(__NR_Linux +	1)
-#define __NR_fork			(__NR_Linux +	2)
-#define __NR_read			(__NR_Linux +	3)
-#define __NR_write			(__NR_Linux +	4)
-#define __NR_open			(__NR_Linux +	5)
-#define __NR_close			(__NR_Linux +	6)
-#define __NR_waitpid			(__NR_Linux +	7)
-#define __NR_creat			(__NR_Linux +	8)
-#define __NR_link			(__NR_Linux +	9)
-#define __NR_unlink			(__NR_Linux +  10)
-#define __NR_execve			(__NR_Linux +  11)
-#define __NR_chdir			(__NR_Linux +  12)
-#define __NR_time			(__NR_Linux +  13)
-#define __NR_mknod			(__NR_Linux +  14)
-#define __NR_chmod			(__NR_Linux +  15)
-#define __NR_lchown			(__NR_Linux +  16)
-#define __NR_break			(__NR_Linux +  17)
-#define __NR_unused18			(__NR_Linux +  18)
-#define __NR_lseek			(__NR_Linux +  19)
-#define __NR_getpid			(__NR_Linux +  20)
-#define __NR_mount			(__NR_Linux +  21)
-#define __NR_umount			(__NR_Linux +  22)
-#define __NR_setuid			(__NR_Linux +  23)
-#define __NR_getuid			(__NR_Linux +  24)
-#define __NR_stime			(__NR_Linux +  25)
-#define __NR_ptrace			(__NR_Linux +  26)
-#define __NR_alarm			(__NR_Linux +  27)
-#define __NR_unused28			(__NR_Linux +  28)
-#define __NR_pause			(__NR_Linux +  29)
-#define __NR_utime			(__NR_Linux +  30)
-#define __NR_stty			(__NR_Linux +  31)
-#define __NR_gtty			(__NR_Linux +  32)
-#define __NR_access			(__NR_Linux +  33)
-#define __NR_nice			(__NR_Linux +  34)
-#define __NR_ftime			(__NR_Linux +  35)
-#define __NR_sync			(__NR_Linux +  36)
-#define __NR_kill			(__NR_Linux +  37)
-#define __NR_rename			(__NR_Linux +  38)
-#define __NR_mkdir			(__NR_Linux +  39)
-#define __NR_rmdir			(__NR_Linux +  40)
-#define __NR_dup			(__NR_Linux +  41)
-#define __NR_pipe			(__NR_Linux +  42)
-#define __NR_times			(__NR_Linux +  43)
-#define __NR_prof			(__NR_Linux +  44)
-#define __NR_brk			(__NR_Linux +  45)
-#define __NR_setgid			(__NR_Linux +  46)
-#define __NR_getgid			(__NR_Linux +  47)
-#define __NR_signal			(__NR_Linux +  48)
-#define __NR_geteuid			(__NR_Linux +  49)
-#define __NR_getegid			(__NR_Linux +  50)
-#define __NR_acct			(__NR_Linux +  51)
-#define __NR_umount2			(__NR_Linux +  52)
-#define __NR_lock			(__NR_Linux +  53)
-#define __NR_ioctl			(__NR_Linux +  54)
-#define __NR_fcntl			(__NR_Linux +  55)
-#define __NR_mpx			(__NR_Linux +  56)
-#define __NR_setpgid			(__NR_Linux +  57)
-#define __NR_ulimit			(__NR_Linux +  58)
-#define __NR_unused59			(__NR_Linux +  59)
-#define __NR_umask			(__NR_Linux +  60)
-#define __NR_chroot			(__NR_Linux +  61)
-#define __NR_ustat			(__NR_Linux +  62)
-#define __NR_dup2			(__NR_Linux +  63)
-#define __NR_getppid			(__NR_Linux +  64)
-#define __NR_getpgrp			(__NR_Linux +  65)
-#define __NR_setsid			(__NR_Linux +  66)
-#define __NR_sigaction			(__NR_Linux +  67)
-#define __NR_sgetmask			(__NR_Linux +  68)
-#define __NR_ssetmask			(__NR_Linux +  69)
-#define __NR_setreuid			(__NR_Linux +  70)
-#define __NR_setregid			(__NR_Linux +  71)
-#define __NR_sigsuspend			(__NR_Linux +  72)
-#define __NR_sigpending			(__NR_Linux +  73)
-#define __NR_sethostname		(__NR_Linux +  74)
-#define __NR_setrlimit			(__NR_Linux +  75)
-#define __NR_getrlimit			(__NR_Linux +  76)
-#define __NR_getrusage			(__NR_Linux +  77)
-#define __NR_gettimeofday		(__NR_Linux +  78)
-#define __NR_settimeofday		(__NR_Linux +  79)
-#define __NR_getgroups			(__NR_Linux +  80)
-#define __NR_setgroups			(__NR_Linux +  81)
-#define __NR_reserved82			(__NR_Linux +  82)
-#define __NR_symlink			(__NR_Linux +  83)
-#define __NR_unused84			(__NR_Linux +  84)
-#define __NR_readlink			(__NR_Linux +  85)
-#define __NR_uselib			(__NR_Linux +  86)
-#define __NR_swapon			(__NR_Linux +  87)
-#define __NR_reboot			(__NR_Linux +  88)
-#define __NR_readdir			(__NR_Linux +  89)
-#define __NR_mmap			(__NR_Linux +  90)
-#define __NR_munmap			(__NR_Linux +  91)
-#define __NR_truncate			(__NR_Linux +  92)
-#define __NR_ftruncate			(__NR_Linux +  93)
-#define __NR_fchmod			(__NR_Linux +  94)
-#define __NR_fchown			(__NR_Linux +  95)
-#define __NR_getpriority		(__NR_Linux +  96)
-#define __NR_setpriority		(__NR_Linux +  97)
-#define __NR_profil			(__NR_Linux +  98)
-#define __NR_statfs			(__NR_Linux +  99)
-#define __NR_fstatfs			(__NR_Linux + 100)
-#define __NR_ioperm			(__NR_Linux + 101)
-#define __NR_socketcall			(__NR_Linux + 102)
-#define __NR_syslog			(__NR_Linux + 103)
-#define __NR_setitimer			(__NR_Linux + 104)
-#define __NR_getitimer			(__NR_Linux + 105)
-#define __NR_stat			(__NR_Linux + 106)
-#define __NR_lstat			(__NR_Linux + 107)
-#define __NR_fstat			(__NR_Linux + 108)
-#define __NR_unused109			(__NR_Linux + 109)
-#define __NR_iopl			(__NR_Linux + 110)
-#define __NR_vhangup			(__NR_Linux + 111)
-#define __NR_idle			(__NR_Linux + 112)
-#define __NR_vm86			(__NR_Linux + 113)
-#define __NR_wait4			(__NR_Linux + 114)
-#define __NR_swapoff			(__NR_Linux + 115)
-#define __NR_sysinfo			(__NR_Linux + 116)
-#define __NR_ipc			(__NR_Linux + 117)
-#define __NR_fsync			(__NR_Linux + 118)
-#define __NR_sigreturn			(__NR_Linux + 119)
-#define __NR_clone			(__NR_Linux + 120)
-#define __NR_setdomainname		(__NR_Linux + 121)
-#define __NR_uname			(__NR_Linux + 122)
-#define __NR_modify_ldt			(__NR_Linux + 123)
-#define __NR_adjtimex			(__NR_Linux + 124)
-#define __NR_mprotect			(__NR_Linux + 125)
-#define __NR_sigprocmask		(__NR_Linux + 126)
-#define __NR_create_module		(__NR_Linux + 127)
-#define __NR_init_module		(__NR_Linux + 128)
-#define __NR_delete_module		(__NR_Linux + 129)
-#define __NR_get_kernel_syms		(__NR_Linux + 130)
-#define __NR_quotactl			(__NR_Linux + 131)
-#define __NR_getpgid			(__NR_Linux + 132)
-#define __NR_fchdir			(__NR_Linux + 133)
-#define __NR_bdflush			(__NR_Linux + 134)
-#define __NR_sysfs			(__NR_Linux + 135)
-#define __NR_personality		(__NR_Linux + 136)
-#define __NR_afs_syscall		(__NR_Linux + 137) /* Syscall for Andrew File System */
-#define __NR_setfsuid			(__NR_Linux + 138)
-#define __NR_setfsgid			(__NR_Linux + 139)
-#define __NR__llseek			(__NR_Linux + 140)
-#define __NR_getdents			(__NR_Linux + 141)
-#define __NR__newselect			(__NR_Linux + 142)
-#define __NR_flock			(__NR_Linux + 143)
-#define __NR_msync			(__NR_Linux + 144)
-#define __NR_readv			(__NR_Linux + 145)
-#define __NR_writev			(__NR_Linux + 146)
-#define __NR_cacheflush			(__NR_Linux + 147)
-#define __NR_cachectl			(__NR_Linux + 148)
-#define __NR_sysmips			(__NR_Linux + 149)
-#define __NR_unused150			(__NR_Linux + 150)
-#define __NR_getsid			(__NR_Linux + 151)
-#define __NR_fdatasync			(__NR_Linux + 152)
-#define __NR__sysctl			(__NR_Linux + 153)
-#define __NR_mlock			(__NR_Linux + 154)
-#define __NR_munlock			(__NR_Linux + 155)
-#define __NR_mlockall			(__NR_Linux + 156)
-#define __NR_munlockall			(__NR_Linux + 157)
-#define __NR_sched_setparam		(__NR_Linux + 158)
-#define __NR_sched_getparam		(__NR_Linux + 159)
-#define __NR_sched_setscheduler		(__NR_Linux + 160)
-#define __NR_sched_getscheduler		(__NR_Linux + 161)
-#define __NR_sched_yield		(__NR_Linux + 162)
-#define __NR_sched_get_priority_max	(__NR_Linux + 163)
-#define __NR_sched_get_priority_min	(__NR_Linux + 164)
-#define __NR_sched_rr_get_interval	(__NR_Linux + 165)
-#define __NR_nanosleep			(__NR_Linux + 166)
-#define __NR_mremap			(__NR_Linux + 167)
-#define __NR_accept			(__NR_Linux + 168)
-#define __NR_bind			(__NR_Linux + 169)
-#define __NR_connect			(__NR_Linux + 170)
-#define __NR_getpeername		(__NR_Linux + 171)
-#define __NR_getsockname		(__NR_Linux + 172)
-#define __NR_getsockopt			(__NR_Linux + 173)
-#define __NR_listen			(__NR_Linux + 174)
-#define __NR_recv			(__NR_Linux + 175)
-#define __NR_recvfrom			(__NR_Linux + 176)
-#define __NR_recvmsg			(__NR_Linux + 177)
-#define __NR_send			(__NR_Linux + 178)
-#define __NR_sendmsg			(__NR_Linux + 179)
-#define __NR_sendto			(__NR_Linux + 180)
-#define __NR_setsockopt			(__NR_Linux + 181)
-#define __NR_shutdown			(__NR_Linux + 182)
-#define __NR_socket			(__NR_Linux + 183)
-#define __NR_socketpair			(__NR_Linux + 184)
-#define __NR_setresuid			(__NR_Linux + 185)
-#define __NR_getresuid			(__NR_Linux + 186)
-#define __NR_query_module		(__NR_Linux + 187)
-#define __NR_poll			(__NR_Linux + 188)
-#define __NR_nfsservctl			(__NR_Linux + 189)
-#define __NR_setresgid			(__NR_Linux + 190)
-#define __NR_getresgid			(__NR_Linux + 191)
-#define __NR_prctl			(__NR_Linux + 192)
-#define __NR_rt_sigreturn		(__NR_Linux + 193)
-#define __NR_rt_sigaction		(__NR_Linux + 194)
-#define __NR_rt_sigprocmask		(__NR_Linux + 195)
-#define __NR_rt_sigpending		(__NR_Linux + 196)
-#define __NR_rt_sigtimedwait		(__NR_Linux + 197)
-#define __NR_rt_sigqueueinfo		(__NR_Linux + 198)
-#define __NR_rt_sigsuspend		(__NR_Linux + 199)
-#define __NR_pread64			(__NR_Linux + 200)
-#define __NR_pwrite64			(__NR_Linux + 201)
-#define __NR_chown			(__NR_Linux + 202)
-#define __NR_getcwd			(__NR_Linux + 203)
-#define __NR_capget			(__NR_Linux + 204)
-#define __NR_capset			(__NR_Linux + 205)
-#define __NR_sigaltstack		(__NR_Linux + 206)
-#define __NR_sendfile			(__NR_Linux + 207)
-#define __NR_getpmsg			(__NR_Linux + 208)
-#define __NR_putpmsg			(__NR_Linux + 209)
-#define __NR_mmap2			(__NR_Linux + 210)
-#define __NR_truncate64			(__NR_Linux + 211)
-#define __NR_ftruncate64		(__NR_Linux + 212)
-#define __NR_stat64			(__NR_Linux + 213)
-#define __NR_lstat64			(__NR_Linux + 214)
-#define __NR_fstat64			(__NR_Linux + 215)
-#define __NR_pivot_root			(__NR_Linux + 216)
-#define __NR_mincore			(__NR_Linux + 217)
-#define __NR_madvise			(__NR_Linux + 218)
-#define __NR_getdents64			(__NR_Linux + 219)
-#define __NR_fcntl64			(__NR_Linux + 220)
-#define __NR_reserved221		(__NR_Linux + 221)
-#define __NR_gettid			(__NR_Linux + 222)
-#define __NR_readahead			(__NR_Linux + 223)
-#define __NR_setxattr			(__NR_Linux + 224)
-#define __NR_lsetxattr			(__NR_Linux + 225)
-#define __NR_fsetxattr			(__NR_Linux + 226)
-#define __NR_getxattr			(__NR_Linux + 227)
-#define __NR_lgetxattr			(__NR_Linux + 228)
-#define __NR_fgetxattr			(__NR_Linux + 229)
-#define __NR_listxattr			(__NR_Linux + 230)
-#define __NR_llistxattr			(__NR_Linux + 231)
-#define __NR_flistxattr			(__NR_Linux + 232)
-#define __NR_removexattr		(__NR_Linux + 233)
-#define __NR_lremovexattr		(__NR_Linux + 234)
-#define __NR_fremovexattr		(__NR_Linux + 235)
-#define __NR_tkill			(__NR_Linux + 236)
-#define __NR_sendfile64			(__NR_Linux + 237)
-#define __NR_futex			(__NR_Linux + 238)
-#define __NR_sched_setaffinity		(__NR_Linux + 239)
-#define __NR_sched_getaffinity		(__NR_Linux + 240)
-#define __NR_io_setup			(__NR_Linux + 241)
-#define __NR_io_destroy			(__NR_Linux + 242)
-#define __NR_io_getevents		(__NR_Linux + 243)
-#define __NR_io_submit			(__NR_Linux + 244)
-#define __NR_io_cancel			(__NR_Linux + 245)
-#define __NR_exit_group			(__NR_Linux + 246)
-#define __NR_lookup_dcookie		(__NR_Linux + 247)
-#define __NR_epoll_create		(__NR_Linux + 248)
-#define __NR_epoll_ctl			(__NR_Linux + 249)
-#define __NR_epoll_wait			(__NR_Linux + 250)
-#define __NR_remap_file_pages		(__NR_Linux + 251)
-#define __NR_set_tid_address		(__NR_Linux + 252)
-#define __NR_restart_syscall		(__NR_Linux + 253)
-#define __NR_fadvise64			(__NR_Linux + 254)
-#define __NR_statfs64			(__NR_Linux + 255)
-#define __NR_fstatfs64			(__NR_Linux + 256)
-#define __NR_timer_create		(__NR_Linux + 257)
-#define __NR_timer_settime		(__NR_Linux + 258)
-#define __NR_timer_gettime		(__NR_Linux + 259)
-#define __NR_timer_getoverrun		(__NR_Linux + 260)
-#define __NR_timer_delete		(__NR_Linux + 261)
-#define __NR_clock_settime		(__NR_Linux + 262)
-#define __NR_clock_gettime		(__NR_Linux + 263)
-#define __NR_clock_getres		(__NR_Linux + 264)
-#define __NR_clock_nanosleep		(__NR_Linux + 265)
-#define __NR_tgkill			(__NR_Linux + 266)
-#define __NR_utimes			(__NR_Linux + 267)
-#define __NR_mbind			(__NR_Linux + 268)
-#define __NR_get_mempolicy		(__NR_Linux + 269)
-#define __NR_set_mempolicy		(__NR_Linux + 270)
-#define __NR_mq_open			(__NR_Linux + 271)
-#define __NR_mq_unlink			(__NR_Linux + 272)
-#define __NR_mq_timedsend		(__NR_Linux + 273)
-#define __NR_mq_timedreceive		(__NR_Linux + 274)
-#define __NR_mq_notify			(__NR_Linux + 275)
-#define __NR_mq_getsetattr		(__NR_Linux + 276)
-#define __NR_vserver			(__NR_Linux + 277)
-#define __NR_waitid			(__NR_Linux + 278)
-/* #define __NR_sys_setaltroot		(__NR_Linux + 279) */
-#define __NR_add_key			(__NR_Linux + 280)
-#define __NR_request_key		(__NR_Linux + 281)
-#define __NR_keyctl			(__NR_Linux + 282)
-#define __NR_set_thread_area		(__NR_Linux + 283)
-#define __NR_inotify_init		(__NR_Linux + 284)
-#define __NR_inotify_add_watch		(__NR_Linux + 285)
-#define __NR_inotify_rm_watch		(__NR_Linux + 286)
-#define __NR_migrate_pages		(__NR_Linux + 287)
-#define __NR_openat			(__NR_Linux + 288)
-#define __NR_mkdirat			(__NR_Linux + 289)
-#define __NR_mknodat			(__NR_Linux + 290)
-#define __NR_fchownat			(__NR_Linux + 291)
-#define __NR_futimesat			(__NR_Linux + 292)
-#define __NR_fstatat64			(__NR_Linux + 293)
-#define __NR_unlinkat			(__NR_Linux + 294)
-#define __NR_renameat			(__NR_Linux + 295)
-#define __NR_linkat			(__NR_Linux + 296)
-#define __NR_symlinkat			(__NR_Linux + 297)
-#define __NR_readlinkat			(__NR_Linux + 298)
-#define __NR_fchmodat			(__NR_Linux + 299)
-#define __NR_faccessat			(__NR_Linux + 300)
-#define __NR_pselect6			(__NR_Linux + 301)
-#define __NR_ppoll			(__NR_Linux + 302)
-#define __NR_unshare			(__NR_Linux + 303)
-#define __NR_splice			(__NR_Linux + 304)
-#define __NR_sync_file_range		(__NR_Linux + 305)
-#define __NR_tee			(__NR_Linux + 306)
-#define __NR_vmsplice			(__NR_Linux + 307)
-#define __NR_move_pages			(__NR_Linux + 308)
-#define __NR_set_robust_list		(__NR_Linux + 309)
-#define __NR_get_robust_list		(__NR_Linux + 310)
-#define __NR_kexec_load			(__NR_Linux + 311)
-#define __NR_getcpu			(__NR_Linux + 312)
-#define __NR_epoll_pwait		(__NR_Linux + 313)
-#define __NR_ioprio_set			(__NR_Linux + 314)
-#define __NR_ioprio_get			(__NR_Linux + 315)
-#define __NR_utimensat			(__NR_Linux + 316)
-#define __NR_signalfd			(__NR_Linux + 317)
-#define __NR_timerfd			(__NR_Linux + 318)
-#define __NR_eventfd			(__NR_Linux + 319)
-#define __NR_fallocate			(__NR_Linux + 320)
-#define __NR_timerfd_create		(__NR_Linux + 321)
-#define __NR_timerfd_gettime		(__NR_Linux + 322)
-#define __NR_timerfd_settime		(__NR_Linux + 323)
-#define __NR_signalfd4			(__NR_Linux + 324)
-#define __NR_eventfd2			(__NR_Linux + 325)
-#define __NR_epoll_create1		(__NR_Linux + 326)
-#define __NR_dup3			(__NR_Linux + 327)
-#define __NR_pipe2			(__NR_Linux + 328)
-#define __NR_inotify_init1		(__NR_Linux + 329)
-#define __NR_preadv			(__NR_Linux + 330)
-#define __NR_pwritev			(__NR_Linux + 331)
-#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 332)
-#define __NR_perf_event_open		(__NR_Linux + 333)
-#define __NR_accept4			(__NR_Linux + 334)
-#define __NR_recvmmsg			(__NR_Linux + 335)
-#define __NR_fanotify_init		(__NR_Linux + 336)
-#define __NR_fanotify_mark		(__NR_Linux + 337)
-#define __NR_prlimit64			(__NR_Linux + 338)
-#define __NR_name_to_handle_at		(__NR_Linux + 339)
-#define __NR_open_by_handle_at		(__NR_Linux + 340)
-#define __NR_clock_adjtime		(__NR_Linux + 341)
-#define __NR_syncfs			(__NR_Linux + 342)
-#define __NR_sendmmsg			(__NR_Linux + 343)
-#define __NR_setns			(__NR_Linux + 344)
-#define __NR_process_vm_readv		(__NR_Linux + 345)
-#define __NR_process_vm_writev		(__NR_Linux + 346)
-#define __NR_kcmp			(__NR_Linux + 347)
-#define __NR_finit_module		(__NR_Linux + 348)
-#define __NR_sched_setattr		(__NR_Linux + 349)
-#define __NR_sched_getattr		(__NR_Linux + 350)
-#define __NR_renameat2			(__NR_Linux + 351)
-#define __NR_seccomp			(__NR_Linux + 352)
-#define __NR_getrandom			(__NR_Linux + 353)
-#define __NR_memfd_create		(__NR_Linux + 354)
-#define __NR_bpf			(__NR_Linux + 355)
-#define __NR_execveat			(__NR_Linux + 356)
-#define __NR_userfaultfd		(__NR_Linux + 357)
-#define __NR_membarrier			(__NR_Linux + 358)
-#define __NR_mlock2			(__NR_Linux + 359)
-#define __NR_copy_file_range		(__NR_Linux + 360)
-#define __NR_preadv2			(__NR_Linux + 361)
-#define __NR_pwritev2			(__NR_Linux + 362)
-#define __NR_pkey_mprotect		(__NR_Linux + 363)
-#define __NR_pkey_alloc			(__NR_Linux + 364)
-#define __NR_pkey_free			(__NR_Linux + 365)
-#define __NR_statx			(__NR_Linux + 366)
-#define __NR_rseq			(__NR_Linux + 367)
-#define __NR_io_pgetevents		(__NR_Linux + 368)
-#define __NR_syscalls                   368
+#define __NR_Linux 4000
+#include <asm/unistd_32.h>
 
 /*
  * Offset of the last Linux o32 flavoured syscall
@@ -400,349 +31,20 @@
 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
 
 #define __NR_O32_Linux			4000
-#define __NR_O32_Linux_syscalls         __NR_syscalls
+#define __NR_O32_Linux_syscalls		__NR_syscalls
 
 #if _MIPS_SIM == _MIPS_SIM_ABI64
 
 /*
  * Linux 64-bit syscalls are in the range from 5000 to 5999.
  */
-#define __NR_Linux			5000
-#define __NR_read			(__NR_Linux +	0)
-#define __NR_write			(__NR_Linux +	1)
-#define __NR_open			(__NR_Linux +	2)
-#define __NR_close			(__NR_Linux +	3)
-#define __NR_stat			(__NR_Linux +	4)
-#define __NR_fstat			(__NR_Linux +	5)
-#define __NR_lstat			(__NR_Linux +	6)
-#define __NR_poll			(__NR_Linux +	7)
-#define __NR_lseek			(__NR_Linux +	8)
-#define __NR_mmap			(__NR_Linux +	9)
-#define __NR_mprotect			(__NR_Linux +  10)
-#define __NR_munmap			(__NR_Linux +  11)
-#define __NR_brk			(__NR_Linux +  12)
-#define __NR_rt_sigaction		(__NR_Linux +  13)
-#define __NR_rt_sigprocmask		(__NR_Linux +  14)
-#define __NR_ioctl			(__NR_Linux +  15)
-#define __NR_pread64			(__NR_Linux +  16)
-#define __NR_pwrite64			(__NR_Linux +  17)
-#define __NR_readv			(__NR_Linux +  18)
-#define __NR_writev			(__NR_Linux +  19)
-#define __NR_access			(__NR_Linux +  20)
-#define __NR_pipe			(__NR_Linux +  21)
-#define __NR__newselect			(__NR_Linux +  22)
-#define __NR_sched_yield		(__NR_Linux +  23)
-#define __NR_mremap			(__NR_Linux +  24)
-#define __NR_msync			(__NR_Linux +  25)
-#define __NR_mincore			(__NR_Linux +  26)
-#define __NR_madvise			(__NR_Linux +  27)
-#define __NR_shmget			(__NR_Linux +  28)
-#define __NR_shmat			(__NR_Linux +  29)
-#define __NR_shmctl			(__NR_Linux +  30)
-#define __NR_dup			(__NR_Linux +  31)
-#define __NR_dup2			(__NR_Linux +  32)
-#define __NR_pause			(__NR_Linux +  33)
-#define __NR_nanosleep			(__NR_Linux +  34)
-#define __NR_getitimer			(__NR_Linux +  35)
-#define __NR_setitimer			(__NR_Linux +  36)
-#define __NR_alarm			(__NR_Linux +  37)
-#define __NR_getpid			(__NR_Linux +  38)
-#define __NR_sendfile			(__NR_Linux +  39)
-#define __NR_socket			(__NR_Linux +  40)
-#define __NR_connect			(__NR_Linux +  41)
-#define __NR_accept			(__NR_Linux +  42)
-#define __NR_sendto			(__NR_Linux +  43)
-#define __NR_recvfrom			(__NR_Linux +  44)
-#define __NR_sendmsg			(__NR_Linux +  45)
-#define __NR_recvmsg			(__NR_Linux +  46)
-#define __NR_shutdown			(__NR_Linux +  47)
-#define __NR_bind			(__NR_Linux +  48)
-#define __NR_listen			(__NR_Linux +  49)
-#define __NR_getsockname		(__NR_Linux +  50)
-#define __NR_getpeername		(__NR_Linux +  51)
-#define __NR_socketpair			(__NR_Linux +  52)
-#define __NR_setsockopt			(__NR_Linux +  53)
-#define __NR_getsockopt			(__NR_Linux +  54)
-#define __NR_clone			(__NR_Linux +  55)
-#define __NR_fork			(__NR_Linux +  56)
-#define __NR_execve			(__NR_Linux +  57)
-#define __NR_exit			(__NR_Linux +  58)
-#define __NR_wait4			(__NR_Linux +  59)
-#define __NR_kill			(__NR_Linux +  60)
-#define __NR_uname			(__NR_Linux +  61)
-#define __NR_semget			(__NR_Linux +  62)
-#define __NR_semop			(__NR_Linux +  63)
-#define __NR_semctl			(__NR_Linux +  64)
-#define __NR_shmdt			(__NR_Linux +  65)
-#define __NR_msgget			(__NR_Linux +  66)
-#define __NR_msgsnd			(__NR_Linux +  67)
-#define __NR_msgrcv			(__NR_Linux +  68)
-#define __NR_msgctl			(__NR_Linux +  69)
-#define __NR_fcntl			(__NR_Linux +  70)
-#define __NR_flock			(__NR_Linux +  71)
-#define __NR_fsync			(__NR_Linux +  72)
-#define __NR_fdatasync			(__NR_Linux +  73)
-#define __NR_truncate			(__NR_Linux +  74)
-#define __NR_ftruncate			(__NR_Linux +  75)
-#define __NR_getdents			(__NR_Linux +  76)
-#define __NR_getcwd			(__NR_Linux +  77)
-#define __NR_chdir			(__NR_Linux +  78)
-#define __NR_fchdir			(__NR_Linux +  79)
-#define __NR_rename			(__NR_Linux +  80)
-#define __NR_mkdir			(__NR_Linux +  81)
-#define __NR_rmdir			(__NR_Linux +  82)
-#define __NR_creat			(__NR_Linux +  83)
-#define __NR_link			(__NR_Linux +  84)
-#define __NR_unlink			(__NR_Linux +  85)
-#define __NR_symlink			(__NR_Linux +  86)
-#define __NR_readlink			(__NR_Linux +  87)
-#define __NR_chmod			(__NR_Linux +  88)
-#define __NR_fchmod			(__NR_Linux +  89)
-#define __NR_chown			(__NR_Linux +  90)
-#define __NR_fchown			(__NR_Linux +  91)
-#define __NR_lchown			(__NR_Linux +  92)
-#define __NR_umask			(__NR_Linux +  93)
-#define __NR_gettimeofday		(__NR_Linux +  94)
-#define __NR_getrlimit			(__NR_Linux +  95)
-#define __NR_getrusage			(__NR_Linux +  96)
-#define __NR_sysinfo			(__NR_Linux +  97)
-#define __NR_times			(__NR_Linux +  98)
-#define __NR_ptrace			(__NR_Linux +  99)
-#define __NR_getuid			(__NR_Linux + 100)
-#define __NR_syslog			(__NR_Linux + 101)
-#define __NR_getgid			(__NR_Linux + 102)
-#define __NR_setuid			(__NR_Linux + 103)
-#define __NR_setgid			(__NR_Linux + 104)
-#define __NR_geteuid			(__NR_Linux + 105)
-#define __NR_getegid			(__NR_Linux + 106)
-#define __NR_setpgid			(__NR_Linux + 107)
-#define __NR_getppid			(__NR_Linux + 108)
-#define __NR_getpgrp			(__NR_Linux + 109)
-#define __NR_setsid			(__NR_Linux + 110)
-#define __NR_setreuid			(__NR_Linux + 111)
-#define __NR_setregid			(__NR_Linux + 112)
-#define __NR_getgroups			(__NR_Linux + 113)
-#define __NR_setgroups			(__NR_Linux + 114)
-#define __NR_setresuid			(__NR_Linux + 115)
-#define __NR_getresuid			(__NR_Linux + 116)
-#define __NR_setresgid			(__NR_Linux + 117)
-#define __NR_getresgid			(__NR_Linux + 118)
-#define __NR_getpgid			(__NR_Linux + 119)
-#define __NR_setfsuid			(__NR_Linux + 120)
-#define __NR_setfsgid			(__NR_Linux + 121)
-#define __NR_getsid			(__NR_Linux + 122)
-#define __NR_capget			(__NR_Linux + 123)
-#define __NR_capset			(__NR_Linux + 124)
-#define __NR_rt_sigpending		(__NR_Linux + 125)
-#define __NR_rt_sigtimedwait		(__NR_Linux + 126)
-#define __NR_rt_sigqueueinfo		(__NR_Linux + 127)
-#define __NR_rt_sigsuspend		(__NR_Linux + 128)
-#define __NR_sigaltstack		(__NR_Linux + 129)
-#define __NR_utime			(__NR_Linux + 130)
-#define __NR_mknod			(__NR_Linux + 131)
-#define __NR_personality		(__NR_Linux + 132)
-#define __NR_ustat			(__NR_Linux + 133)
-#define __NR_statfs			(__NR_Linux + 134)
-#define __NR_fstatfs			(__NR_Linux + 135)
-#define __NR_sysfs			(__NR_Linux + 136)
-#define __NR_getpriority		(__NR_Linux + 137)
-#define __NR_setpriority		(__NR_Linux + 138)
-#define __NR_sched_setparam		(__NR_Linux + 139)
-#define __NR_sched_getparam		(__NR_Linux + 140)
-#define __NR_sched_setscheduler		(__NR_Linux + 141)
-#define __NR_sched_getscheduler		(__NR_Linux + 142)
-#define __NR_sched_get_priority_max	(__NR_Linux + 143)
-#define __NR_sched_get_priority_min	(__NR_Linux + 144)
-#define __NR_sched_rr_get_interval	(__NR_Linux + 145)
-#define __NR_mlock			(__NR_Linux + 146)
-#define __NR_munlock			(__NR_Linux + 147)
-#define __NR_mlockall			(__NR_Linux + 148)
-#define __NR_munlockall			(__NR_Linux + 149)
-#define __NR_vhangup			(__NR_Linux + 150)
-#define __NR_pivot_root			(__NR_Linux + 151)
-#define __NR__sysctl			(__NR_Linux + 152)
-#define __NR_prctl			(__NR_Linux + 153)
-#define __NR_adjtimex			(__NR_Linux + 154)
-#define __NR_setrlimit			(__NR_Linux + 155)
-#define __NR_chroot			(__NR_Linux + 156)
-#define __NR_sync			(__NR_Linux + 157)
-#define __NR_acct			(__NR_Linux + 158)
-#define __NR_settimeofday		(__NR_Linux + 159)
-#define __NR_mount			(__NR_Linux + 160)
-#define __NR_umount2			(__NR_Linux + 161)
-#define __NR_swapon			(__NR_Linux + 162)
-#define __NR_swapoff			(__NR_Linux + 163)
-#define __NR_reboot			(__NR_Linux + 164)
-#define __NR_sethostname		(__NR_Linux + 165)
-#define __NR_setdomainname		(__NR_Linux + 166)
-#define __NR_create_module		(__NR_Linux + 167)
-#define __NR_init_module		(__NR_Linux + 168)
-#define __NR_delete_module		(__NR_Linux + 169)
-#define __NR_get_kernel_syms		(__NR_Linux + 170)
-#define __NR_query_module		(__NR_Linux + 171)
-#define __NR_quotactl			(__NR_Linux + 172)
-#define __NR_nfsservctl			(__NR_Linux + 173)
-#define __NR_getpmsg			(__NR_Linux + 174)
-#define __NR_putpmsg			(__NR_Linux + 175)
-#define __NR_afs_syscall		(__NR_Linux + 176)
-#define __NR_reserved177		(__NR_Linux + 177)
-#define __NR_gettid			(__NR_Linux + 178)
-#define __NR_readahead			(__NR_Linux + 179)
-#define __NR_setxattr			(__NR_Linux + 180)
-#define __NR_lsetxattr			(__NR_Linux + 181)
-#define __NR_fsetxattr			(__NR_Linux + 182)
-#define __NR_getxattr			(__NR_Linux + 183)
-#define __NR_lgetxattr			(__NR_Linux + 184)
-#define __NR_fgetxattr			(__NR_Linux + 185)
-#define __NR_listxattr			(__NR_Linux + 186)
-#define __NR_llistxattr			(__NR_Linux + 187)
-#define __NR_flistxattr			(__NR_Linux + 188)
-#define __NR_removexattr		(__NR_Linux + 189)
-#define __NR_lremovexattr		(__NR_Linux + 190)
-#define __NR_fremovexattr		(__NR_Linux + 191)
-#define __NR_tkill			(__NR_Linux + 192)
-#define __NR_reserved193		(__NR_Linux + 193)
-#define __NR_futex			(__NR_Linux + 194)
-#define __NR_sched_setaffinity		(__NR_Linux + 195)
-#define __NR_sched_getaffinity		(__NR_Linux + 196)
-#define __NR_cacheflush			(__NR_Linux + 197)
-#define __NR_cachectl			(__NR_Linux + 198)
-#define __NR_sysmips			(__NR_Linux + 199)
-#define __NR_io_setup			(__NR_Linux + 200)
-#define __NR_io_destroy			(__NR_Linux + 201)
-#define __NR_io_getevents		(__NR_Linux + 202)
-#define __NR_io_submit			(__NR_Linux + 203)
-#define __NR_io_cancel			(__NR_Linux + 204)
-#define __NR_exit_group			(__NR_Linux + 205)
-#define __NR_lookup_dcookie		(__NR_Linux + 206)
-#define __NR_epoll_create		(__NR_Linux + 207)
-#define __NR_epoll_ctl			(__NR_Linux + 208)
-#define __NR_epoll_wait			(__NR_Linux + 209)
-#define __NR_remap_file_pages		(__NR_Linux + 210)
-#define __NR_rt_sigreturn		(__NR_Linux + 211)
-#define __NR_set_tid_address		(__NR_Linux + 212)
-#define __NR_restart_syscall		(__NR_Linux + 213)
-#define __NR_semtimedop			(__NR_Linux + 214)
-#define __NR_fadvise64			(__NR_Linux + 215)
-#define __NR_timer_create		(__NR_Linux + 216)
-#define __NR_timer_settime		(__NR_Linux + 217)
-#define __NR_timer_gettime		(__NR_Linux + 218)
-#define __NR_timer_getoverrun		(__NR_Linux + 219)
-#define __NR_timer_delete		(__NR_Linux + 220)
-#define __NR_clock_settime		(__NR_Linux + 221)
-#define __NR_clock_gettime		(__NR_Linux + 222)
-#define __NR_clock_getres		(__NR_Linux + 223)
-#define __NR_clock_nanosleep		(__NR_Linux + 224)
-#define __NR_tgkill			(__NR_Linux + 225)
-#define __NR_utimes			(__NR_Linux + 226)
-#define __NR_mbind			(__NR_Linux + 227)
-#define __NR_get_mempolicy		(__NR_Linux + 228)
-#define __NR_set_mempolicy		(__NR_Linux + 229)
-#define __NR_mq_open			(__NR_Linux + 230)
-#define __NR_mq_unlink			(__NR_Linux + 231)
-#define __NR_mq_timedsend		(__NR_Linux + 232)
-#define __NR_mq_timedreceive		(__NR_Linux + 233)
-#define __NR_mq_notify			(__NR_Linux + 234)
-#define __NR_mq_getsetattr		(__NR_Linux + 235)
-#define __NR_vserver			(__NR_Linux + 236)
-#define __NR_waitid			(__NR_Linux + 237)
-/* #define __NR_sys_setaltroot		(__NR_Linux + 238) */
-#define __NR_add_key			(__NR_Linux + 239)
-#define __NR_request_key		(__NR_Linux + 240)
-#define __NR_keyctl			(__NR_Linux + 241)
-#define __NR_set_thread_area		(__NR_Linux + 242)
-#define __NR_inotify_init		(__NR_Linux + 243)
-#define __NR_inotify_add_watch		(__NR_Linux + 244)
-#define __NR_inotify_rm_watch		(__NR_Linux + 245)
-#define __NR_migrate_pages		(__NR_Linux + 246)
-#define __NR_openat			(__NR_Linux + 247)
-#define __NR_mkdirat			(__NR_Linux + 248)
-#define __NR_mknodat			(__NR_Linux + 249)
-#define __NR_fchownat			(__NR_Linux + 250)
-#define __NR_futimesat			(__NR_Linux + 251)
-#define __NR_newfstatat			(__NR_Linux + 252)
-#define __NR_unlinkat			(__NR_Linux + 253)
-#define __NR_renameat			(__NR_Linux + 254)
-#define __NR_linkat			(__NR_Linux + 255)
-#define __NR_symlinkat			(__NR_Linux + 256)
-#define __NR_readlinkat			(__NR_Linux + 257)
-#define __NR_fchmodat			(__NR_Linux + 258)
-#define __NR_faccessat			(__NR_Linux + 259)
-#define __NR_pselect6			(__NR_Linux + 260)
-#define __NR_ppoll			(__NR_Linux + 261)
-#define __NR_unshare			(__NR_Linux + 262)
-#define __NR_splice			(__NR_Linux + 263)
-#define __NR_sync_file_range		(__NR_Linux + 264)
-#define __NR_tee			(__NR_Linux + 265)
-#define __NR_vmsplice			(__NR_Linux + 266)
-#define __NR_move_pages			(__NR_Linux + 267)
-#define __NR_set_robust_list		(__NR_Linux + 268)
-#define __NR_get_robust_list		(__NR_Linux + 269)
-#define __NR_kexec_load			(__NR_Linux + 270)
-#define __NR_getcpu			(__NR_Linux + 271)
-#define __NR_epoll_pwait		(__NR_Linux + 272)
-#define __NR_ioprio_set			(__NR_Linux + 273)
-#define __NR_ioprio_get			(__NR_Linux + 274)
-#define __NR_utimensat			(__NR_Linux + 275)
-#define __NR_signalfd			(__NR_Linux + 276)
-#define __NR_timerfd			(__NR_Linux + 277)
-#define __NR_eventfd			(__NR_Linux + 278)
-#define __NR_fallocate			(__NR_Linux + 279)
-#define __NR_timerfd_create		(__NR_Linux + 280)
-#define __NR_timerfd_gettime		(__NR_Linux + 281)
-#define __NR_timerfd_settime		(__NR_Linux + 282)
-#define __NR_signalfd4			(__NR_Linux + 283)
-#define __NR_eventfd2			(__NR_Linux + 284)
-#define __NR_epoll_create1		(__NR_Linux + 285)
-#define __NR_dup3			(__NR_Linux + 286)
-#define __NR_pipe2			(__NR_Linux + 287)
-#define __NR_inotify_init1		(__NR_Linux + 288)
-#define __NR_preadv			(__NR_Linux + 289)
-#define __NR_pwritev			(__NR_Linux + 290)
-#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 291)
-#define __NR_perf_event_open		(__NR_Linux + 292)
-#define __NR_accept4			(__NR_Linux + 293)
-#define __NR_recvmmsg			(__NR_Linux + 294)
-#define __NR_fanotify_init		(__NR_Linux + 295)
-#define __NR_fanotify_mark		(__NR_Linux + 296)
-#define __NR_prlimit64			(__NR_Linux + 297)
-#define __NR_name_to_handle_at		(__NR_Linux + 298)
-#define __NR_open_by_handle_at		(__NR_Linux + 299)
-#define __NR_clock_adjtime		(__NR_Linux + 300)
-#define __NR_syncfs			(__NR_Linux + 301)
-#define __NR_sendmmsg			(__NR_Linux + 302)
-#define __NR_setns			(__NR_Linux + 303)
-#define __NR_process_vm_readv		(__NR_Linux + 304)
-#define __NR_process_vm_writev		(__NR_Linux + 305)
-#define __NR_kcmp			(__NR_Linux + 306)
-#define __NR_finit_module		(__NR_Linux + 307)
-#define __NR_getdents64			(__NR_Linux + 308)
-#define __NR_sched_setattr		(__NR_Linux + 309)
-#define __NR_sched_getattr		(__NR_Linux + 310)
-#define __NR_renameat2			(__NR_Linux + 311)
-#define __NR_seccomp			(__NR_Linux + 312)
-#define __NR_getrandom			(__NR_Linux + 313)
-#define __NR_memfd_create		(__NR_Linux + 314)
-#define __NR_bpf			(__NR_Linux + 315)
-#define __NR_execveat			(__NR_Linux + 316)
-#define __NR_userfaultfd		(__NR_Linux + 317)
-#define __NR_membarrier			(__NR_Linux + 318)
-#define __NR_mlock2			(__NR_Linux + 319)
-#define __NR_copy_file_range		(__NR_Linux + 320)
-#define __NR_preadv2			(__NR_Linux + 321)
-#define __NR_pwritev2			(__NR_Linux + 322)
-#define __NR_pkey_mprotect		(__NR_Linux + 323)
-#define __NR_pkey_alloc			(__NR_Linux + 324)
-#define __NR_pkey_free			(__NR_Linux + 325)
-#define __NR_statx			(__NR_Linux + 326)
-#define __NR_rseq			(__NR_Linux + 327)
-#define __NR_io_pgetevents		(__NR_Linux + 328)
-#define __NR_syscalls                   328
+#define __NR_Linux 5000
+#include <asm/unistd_64.h>
 
 /*
  * Offset of the last Linux 64-bit flavoured syscall
  */
-#define __NR_Linux_syscalls		__NR_syscalls
+#define __NR_Linux_syscalls             __NR_syscalls
 
 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
 
@@ -754,346 +56,13 @@
 /*
  * Linux N32 syscalls are in the range from 6000 to 6999.
  */
-#define __NR_Linux			6000
-#define __NR_read			(__NR_Linux +	0)
-#define __NR_write			(__NR_Linux +	1)
-#define __NR_open			(__NR_Linux +	2)
-#define __NR_close			(__NR_Linux +	3)
-#define __NR_stat			(__NR_Linux +	4)
-#define __NR_fstat			(__NR_Linux +	5)
-#define __NR_lstat			(__NR_Linux +	6)
-#define __NR_poll			(__NR_Linux +	7)
-#define __NR_lseek			(__NR_Linux +	8)
-#define __NR_mmap			(__NR_Linux +	9)
-#define __NR_mprotect			(__NR_Linux +  10)
-#define __NR_munmap			(__NR_Linux +  11)
-#define __NR_brk			(__NR_Linux +  12)
-#define __NR_rt_sigaction		(__NR_Linux +  13)
-#define __NR_rt_sigprocmask		(__NR_Linux +  14)
-#define __NR_ioctl			(__NR_Linux +  15)
-#define __NR_pread64			(__NR_Linux +  16)
-#define __NR_pwrite64			(__NR_Linux +  17)
-#define __NR_readv			(__NR_Linux +  18)
-#define __NR_writev			(__NR_Linux +  19)
-#define __NR_access			(__NR_Linux +  20)
-#define __NR_pipe			(__NR_Linux +  21)
-#define __NR__newselect			(__NR_Linux +  22)
-#define __NR_sched_yield		(__NR_Linux +  23)
-#define __NR_mremap			(__NR_Linux +  24)
-#define __NR_msync			(__NR_Linux +  25)
-#define __NR_mincore			(__NR_Linux +  26)
-#define __NR_madvise			(__NR_Linux +  27)
-#define __NR_shmget			(__NR_Linux +  28)
-#define __NR_shmat			(__NR_Linux +  29)
-#define __NR_shmctl			(__NR_Linux +  30)
-#define __NR_dup			(__NR_Linux +  31)
-#define __NR_dup2			(__NR_Linux +  32)
-#define __NR_pause			(__NR_Linux +  33)
-#define __NR_nanosleep			(__NR_Linux +  34)
-#define __NR_getitimer			(__NR_Linux +  35)
-#define __NR_setitimer			(__NR_Linux +  36)
-#define __NR_alarm			(__NR_Linux +  37)
-#define __NR_getpid			(__NR_Linux +  38)
-#define __NR_sendfile			(__NR_Linux +  39)
-#define __NR_socket			(__NR_Linux +  40)
-#define __NR_connect			(__NR_Linux +  41)
-#define __NR_accept			(__NR_Linux +  42)
-#define __NR_sendto			(__NR_Linux +  43)
-#define __NR_recvfrom			(__NR_Linux +  44)
-#define __NR_sendmsg			(__NR_Linux +  45)
-#define __NR_recvmsg			(__NR_Linux +  46)
-#define __NR_shutdown			(__NR_Linux +  47)
-#define __NR_bind			(__NR_Linux +  48)
-#define __NR_listen			(__NR_Linux +  49)
-#define __NR_getsockname		(__NR_Linux +  50)
-#define __NR_getpeername		(__NR_Linux +  51)
-#define __NR_socketpair			(__NR_Linux +  52)
-#define __NR_setsockopt			(__NR_Linux +  53)
-#define __NR_getsockopt			(__NR_Linux +  54)
-#define __NR_clone			(__NR_Linux +  55)
-#define __NR_fork			(__NR_Linux +  56)
-#define __NR_execve			(__NR_Linux +  57)
-#define __NR_exit			(__NR_Linux +  58)
-#define __NR_wait4			(__NR_Linux +  59)
-#define __NR_kill			(__NR_Linux +  60)
-#define __NR_uname			(__NR_Linux +  61)
-#define __NR_semget			(__NR_Linux +  62)
-#define __NR_semop			(__NR_Linux +  63)
-#define __NR_semctl			(__NR_Linux +  64)
-#define __NR_shmdt			(__NR_Linux +  65)
-#define __NR_msgget			(__NR_Linux +  66)
-#define __NR_msgsnd			(__NR_Linux +  67)
-#define __NR_msgrcv			(__NR_Linux +  68)
-#define __NR_msgctl			(__NR_Linux +  69)
-#define __NR_fcntl			(__NR_Linux +  70)
-#define __NR_flock			(__NR_Linux +  71)
-#define __NR_fsync			(__NR_Linux +  72)
-#define __NR_fdatasync			(__NR_Linux +  73)
-#define __NR_truncate			(__NR_Linux +  74)
-#define __NR_ftruncate			(__NR_Linux +  75)
-#define __NR_getdents			(__NR_Linux +  76)
-#define __NR_getcwd			(__NR_Linux +  77)
-#define __NR_chdir			(__NR_Linux +  78)
-#define __NR_fchdir			(__NR_Linux +  79)
-#define __NR_rename			(__NR_Linux +  80)
-#define __NR_mkdir			(__NR_Linux +  81)
-#define __NR_rmdir			(__NR_Linux +  82)
-#define __NR_creat			(__NR_Linux +  83)
-#define __NR_link			(__NR_Linux +  84)
-#define __NR_unlink			(__NR_Linux +  85)
-#define __NR_symlink			(__NR_Linux +  86)
-#define __NR_readlink			(__NR_Linux +  87)
-#define __NR_chmod			(__NR_Linux +  88)
-#define __NR_fchmod			(__NR_Linux +  89)
-#define __NR_chown			(__NR_Linux +  90)
-#define __NR_fchown			(__NR_Linux +  91)
-#define __NR_lchown			(__NR_Linux +  92)
-#define __NR_umask			(__NR_Linux +  93)
-#define __NR_gettimeofday		(__NR_Linux +  94)
-#define __NR_getrlimit			(__NR_Linux +  95)
-#define __NR_getrusage			(__NR_Linux +  96)
-#define __NR_sysinfo			(__NR_Linux +  97)
-#define __NR_times			(__NR_Linux +  98)
-#define __NR_ptrace			(__NR_Linux +  99)
-#define __NR_getuid			(__NR_Linux + 100)
-#define __NR_syslog			(__NR_Linux + 101)
-#define __NR_getgid			(__NR_Linux + 102)
-#define __NR_setuid			(__NR_Linux + 103)
-#define __NR_setgid			(__NR_Linux + 104)
-#define __NR_geteuid			(__NR_Linux + 105)
-#define __NR_getegid			(__NR_Linux + 106)
-#define __NR_setpgid			(__NR_Linux + 107)
-#define __NR_getppid			(__NR_Linux + 108)
-#define __NR_getpgrp			(__NR_Linux + 109)
-#define __NR_setsid			(__NR_Linux + 110)
-#define __NR_setreuid			(__NR_Linux + 111)
-#define __NR_setregid			(__NR_Linux + 112)
-#define __NR_getgroups			(__NR_Linux + 113)
-#define __NR_setgroups			(__NR_Linux + 114)
-#define __NR_setresuid			(__NR_Linux + 115)
-#define __NR_getresuid			(__NR_Linux + 116)
-#define __NR_setresgid			(__NR_Linux + 117)
-#define __NR_getresgid			(__NR_Linux + 118)
-#define __NR_getpgid			(__NR_Linux + 119)
-#define __NR_setfsuid			(__NR_Linux + 120)
-#define __NR_setfsgid			(__NR_Linux + 121)
-#define __NR_getsid			(__NR_Linux + 122)
-#define __NR_capget			(__NR_Linux + 123)
-#define __NR_capset			(__NR_Linux + 124)
-#define __NR_rt_sigpending		(__NR_Linux + 125)
-#define __NR_rt_sigtimedwait		(__NR_Linux + 126)
-#define __NR_rt_sigqueueinfo		(__NR_Linux + 127)
-#define __NR_rt_sigsuspend		(__NR_Linux + 128)
-#define __NR_sigaltstack		(__NR_Linux + 129)
-#define __NR_utime			(__NR_Linux + 130)
-#define __NR_mknod			(__NR_Linux + 131)
-#define __NR_personality		(__NR_Linux + 132)
-#define __NR_ustat			(__NR_Linux + 133)
-#define __NR_statfs			(__NR_Linux + 134)
-#define __NR_fstatfs			(__NR_Linux + 135)
-#define __NR_sysfs			(__NR_Linux + 136)
-#define __NR_getpriority		(__NR_Linux + 137)
-#define __NR_setpriority		(__NR_Linux + 138)
-#define __NR_sched_setparam		(__NR_Linux + 139)
-#define __NR_sched_getparam		(__NR_Linux + 140)
-#define __NR_sched_setscheduler		(__NR_Linux + 141)
-#define __NR_sched_getscheduler		(__NR_Linux + 142)
-#define __NR_sched_get_priority_max	(__NR_Linux + 143)
-#define __NR_sched_get_priority_min	(__NR_Linux + 144)
-#define __NR_sched_rr_get_interval	(__NR_Linux + 145)
-#define __NR_mlock			(__NR_Linux + 146)
-#define __NR_munlock			(__NR_Linux + 147)
-#define __NR_mlockall			(__NR_Linux + 148)
-#define __NR_munlockall			(__NR_Linux + 149)
-#define __NR_vhangup			(__NR_Linux + 150)
-#define __NR_pivot_root			(__NR_Linux + 151)
-#define __NR__sysctl			(__NR_Linux + 152)
-#define __NR_prctl			(__NR_Linux + 153)
-#define __NR_adjtimex			(__NR_Linux + 154)
-#define __NR_setrlimit			(__NR_Linux + 155)
-#define __NR_chroot			(__NR_Linux + 156)
-#define __NR_sync			(__NR_Linux + 157)
-#define __NR_acct			(__NR_Linux + 158)
-#define __NR_settimeofday		(__NR_Linux + 159)
-#define __NR_mount			(__NR_Linux + 160)
-#define __NR_umount2			(__NR_Linux + 161)
-#define __NR_swapon			(__NR_Linux + 162)
-#define __NR_swapoff			(__NR_Linux + 163)
-#define __NR_reboot			(__NR_Linux + 164)
-#define __NR_sethostname		(__NR_Linux + 165)
-#define __NR_setdomainname		(__NR_Linux + 166)
-#define __NR_create_module		(__NR_Linux + 167)
-#define __NR_init_module		(__NR_Linux + 168)
-#define __NR_delete_module		(__NR_Linux + 169)
-#define __NR_get_kernel_syms		(__NR_Linux + 170)
-#define __NR_query_module		(__NR_Linux + 171)
-#define __NR_quotactl			(__NR_Linux + 172)
-#define __NR_nfsservctl			(__NR_Linux + 173)
-#define __NR_getpmsg			(__NR_Linux + 174)
-#define __NR_putpmsg			(__NR_Linux + 175)
-#define __NR_afs_syscall		(__NR_Linux + 176)
-#define __NR_reserved177		(__NR_Linux + 177)
-#define __NR_gettid			(__NR_Linux + 178)
-#define __NR_readahead			(__NR_Linux + 179)
-#define __NR_setxattr			(__NR_Linux + 180)
-#define __NR_lsetxattr			(__NR_Linux + 181)
-#define __NR_fsetxattr			(__NR_Linux + 182)
-#define __NR_getxattr			(__NR_Linux + 183)
-#define __NR_lgetxattr			(__NR_Linux + 184)
-#define __NR_fgetxattr			(__NR_Linux + 185)
-#define __NR_listxattr			(__NR_Linux + 186)
-#define __NR_llistxattr			(__NR_Linux + 187)
-#define __NR_flistxattr			(__NR_Linux + 188)
-#define __NR_removexattr		(__NR_Linux + 189)
-#define __NR_lremovexattr		(__NR_Linux + 190)
-#define __NR_fremovexattr		(__NR_Linux + 191)
-#define __NR_tkill			(__NR_Linux + 192)
-#define __NR_reserved193		(__NR_Linux + 193)
-#define __NR_futex			(__NR_Linux + 194)
-#define __NR_sched_setaffinity		(__NR_Linux + 195)
-#define __NR_sched_getaffinity		(__NR_Linux + 196)
-#define __NR_cacheflush			(__NR_Linux + 197)
-#define __NR_cachectl			(__NR_Linux + 198)
-#define __NR_sysmips			(__NR_Linux + 199)
-#define __NR_io_setup			(__NR_Linux + 200)
-#define __NR_io_destroy			(__NR_Linux + 201)
-#define __NR_io_getevents		(__NR_Linux + 202)
-#define __NR_io_submit			(__NR_Linux + 203)
-#define __NR_io_cancel			(__NR_Linux + 204)
-#define __NR_exit_group			(__NR_Linux + 205)
-#define __NR_lookup_dcookie		(__NR_Linux + 206)
-#define __NR_epoll_create		(__NR_Linux + 207)
-#define __NR_epoll_ctl			(__NR_Linux + 208)
-#define __NR_epoll_wait			(__NR_Linux + 209)
-#define __NR_remap_file_pages		(__NR_Linux + 210)
-#define __NR_rt_sigreturn		(__NR_Linux + 211)
-#define __NR_fcntl64			(__NR_Linux + 212)
-#define __NR_set_tid_address		(__NR_Linux + 213)
-#define __NR_restart_syscall		(__NR_Linux + 214)
-#define __NR_semtimedop			(__NR_Linux + 215)
-#define __NR_fadvise64			(__NR_Linux + 216)
-#define __NR_statfs64			(__NR_Linux + 217)
-#define __NR_fstatfs64			(__NR_Linux + 218)
-#define __NR_sendfile64			(__NR_Linux + 219)
-#define __NR_timer_create		(__NR_Linux + 220)
-#define __NR_timer_settime		(__NR_Linux + 221)
-#define __NR_timer_gettime		(__NR_Linux + 222)
-#define __NR_timer_getoverrun		(__NR_Linux + 223)
-#define __NR_timer_delete		(__NR_Linux + 224)
-#define __NR_clock_settime		(__NR_Linux + 225)
-#define __NR_clock_gettime		(__NR_Linux + 226)
-#define __NR_clock_getres		(__NR_Linux + 227)
-#define __NR_clock_nanosleep		(__NR_Linux + 228)
-#define __NR_tgkill			(__NR_Linux + 229)
-#define __NR_utimes			(__NR_Linux + 230)
-#define __NR_mbind			(__NR_Linux + 231)
-#define __NR_get_mempolicy		(__NR_Linux + 232)
-#define __NR_set_mempolicy		(__NR_Linux + 233)
-#define __NR_mq_open			(__NR_Linux + 234)
-#define __NR_mq_unlink			(__NR_Linux + 235)
-#define __NR_mq_timedsend		(__NR_Linux + 236)
-#define __NR_mq_timedreceive		(__NR_Linux + 237)
-#define __NR_mq_notify			(__NR_Linux + 238)
-#define __NR_mq_getsetattr		(__NR_Linux + 239)
-#define __NR_vserver			(__NR_Linux + 240)
-#define __NR_waitid			(__NR_Linux + 241)
-/* #define __NR_sys_setaltroot		(__NR_Linux + 242) */
-#define __NR_add_key			(__NR_Linux + 243)
-#define __NR_request_key		(__NR_Linux + 244)
-#define __NR_keyctl			(__NR_Linux + 245)
-#define __NR_set_thread_area		(__NR_Linux + 246)
-#define __NR_inotify_init		(__NR_Linux + 247)
-#define __NR_inotify_add_watch		(__NR_Linux + 248)
-#define __NR_inotify_rm_watch		(__NR_Linux + 249)
-#define __NR_migrate_pages		(__NR_Linux + 250)
-#define __NR_openat			(__NR_Linux + 251)
-#define __NR_mkdirat			(__NR_Linux + 252)
-#define __NR_mknodat			(__NR_Linux + 253)
-#define __NR_fchownat			(__NR_Linux + 254)
-#define __NR_futimesat			(__NR_Linux + 255)
-#define __NR_newfstatat			(__NR_Linux + 256)
-#define __NR_unlinkat			(__NR_Linux + 257)
-#define __NR_renameat			(__NR_Linux + 258)
-#define __NR_linkat			(__NR_Linux + 259)
-#define __NR_symlinkat			(__NR_Linux + 260)
-#define __NR_readlinkat			(__NR_Linux + 261)
-#define __NR_fchmodat			(__NR_Linux + 262)
-#define __NR_faccessat			(__NR_Linux + 263)
-#define __NR_pselect6			(__NR_Linux + 264)
-#define __NR_ppoll			(__NR_Linux + 265)
-#define __NR_unshare			(__NR_Linux + 266)
-#define __NR_splice			(__NR_Linux + 267)
-#define __NR_sync_file_range		(__NR_Linux + 268)
-#define __NR_tee			(__NR_Linux + 269)
-#define __NR_vmsplice			(__NR_Linux + 270)
-#define __NR_move_pages			(__NR_Linux + 271)
-#define __NR_set_robust_list		(__NR_Linux + 272)
-#define __NR_get_robust_list		(__NR_Linux + 273)
-#define __NR_kexec_load			(__NR_Linux + 274)
-#define __NR_getcpu			(__NR_Linux + 275)
-#define __NR_epoll_pwait		(__NR_Linux + 276)
-#define __NR_ioprio_set			(__NR_Linux + 277)
-#define __NR_ioprio_get			(__NR_Linux + 278)
-#define __NR_utimensat			(__NR_Linux + 279)
-#define __NR_signalfd			(__NR_Linux + 280)
-#define __NR_timerfd			(__NR_Linux + 281)
-#define __NR_eventfd			(__NR_Linux + 282)
-#define __NR_fallocate			(__NR_Linux + 283)
-#define __NR_timerfd_create		(__NR_Linux + 284)
-#define __NR_timerfd_gettime		(__NR_Linux + 285)
-#define __NR_timerfd_settime		(__NR_Linux + 286)
-#define __NR_signalfd4			(__NR_Linux + 287)
-#define __NR_eventfd2			(__NR_Linux + 288)
-#define __NR_epoll_create1		(__NR_Linux + 289)
-#define __NR_dup3			(__NR_Linux + 290)
-#define __NR_pipe2			(__NR_Linux + 291)
-#define __NR_inotify_init1		(__NR_Linux + 292)
-#define __NR_preadv			(__NR_Linux + 293)
-#define __NR_pwritev			(__NR_Linux + 294)
-#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 295)
-#define __NR_perf_event_open		(__NR_Linux + 296)
-#define __NR_accept4			(__NR_Linux + 297)
-#define __NR_recvmmsg			(__NR_Linux + 298)
-#define __NR_getdents64			(__NR_Linux + 299)
-#define __NR_fanotify_init		(__NR_Linux + 300)
-#define __NR_fanotify_mark		(__NR_Linux + 301)
-#define __NR_prlimit64			(__NR_Linux + 302)
-#define __NR_name_to_handle_at		(__NR_Linux + 303)
-#define __NR_open_by_handle_at		(__NR_Linux + 304)
-#define __NR_clock_adjtime		(__NR_Linux + 305)
-#define __NR_syncfs			(__NR_Linux + 306)
-#define __NR_sendmmsg			(__NR_Linux + 307)
-#define __NR_setns			(__NR_Linux + 308)
-#define __NR_process_vm_readv		(__NR_Linux + 309)
-#define __NR_process_vm_writev		(__NR_Linux + 310)
-#define __NR_kcmp			(__NR_Linux + 311)
-#define __NR_finit_module		(__NR_Linux + 312)
-#define __NR_sched_setattr		(__NR_Linux + 313)
-#define __NR_sched_getattr		(__NR_Linux + 314)
-#define __NR_renameat2			(__NR_Linux + 315)
-#define __NR_seccomp			(__NR_Linux + 316)
-#define __NR_getrandom			(__NR_Linux + 317)
-#define __NR_memfd_create		(__NR_Linux + 318)
-#define __NR_bpf			(__NR_Linux + 319)
-#define __NR_execveat			(__NR_Linux + 320)
-#define __NR_userfaultfd		(__NR_Linux + 321)
-#define __NR_membarrier			(__NR_Linux + 322)
-#define __NR_mlock2			(__NR_Linux + 323)
-#define __NR_copy_file_range		(__NR_Linux + 324)
-#define __NR_preadv2			(__NR_Linux + 325)
-#define __NR_pwritev2			(__NR_Linux + 326)
-#define __NR_pkey_mprotect		(__NR_Linux + 327)
-#define __NR_pkey_alloc			(__NR_Linux + 328)
-#define __NR_pkey_free			(__NR_Linux + 329)
-#define __NR_statx			(__NR_Linux + 330)
-#define __NR_rseq			(__NR_Linux + 331)
-#define __NR_io_pgetevents		(__NR_Linux + 332)
-#define __NR_syscalls                   332
+#define __NR_Linux 6000
+#include <asm/unistd_n32.h>
 
 /*
  * Offset of the last N32 flavoured syscall
  */
-#define __NR_Linux_syscalls		__NR_syscalls
+#define __NR_Linux_syscalls             __NR_syscalls
 
 #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
 
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
index 91d3c8c..6cefc4d 100644
--- a/arch/mips/kernel/scall32-o32.S
+++ b/arch/mips/kernel/scall32-o32.S
@@ -208,387 +208,4 @@ einval: li	v0, -ENOSYS
 	jr	ra
 	END(sys_syscall)
 
-	.align	2
-	.type	sys_call_table, @object
-EXPORT(sys_call_table)
-	PTR	sys_syscall			/* 4000 */
-	PTR	sys_exit
-	PTR	__sys_fork
-	PTR	sys_read
-	PTR	sys_write
-	PTR	sys_open			/* 4005 */
-	PTR	sys_close
-	PTR	sys_waitpid
-	PTR	sys_creat
-	PTR	sys_link
-	PTR	sys_unlink			/* 4010 */
-	PTR	sys_execve
-	PTR	sys_chdir
-	PTR	sys_time
-	PTR	sys_mknod
-	PTR	sys_chmod			/* 4015 */
-	PTR	sys_lchown
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall			/* was sys_stat */
-	PTR	sys_lseek
-	PTR	sys_getpid			/* 4020 */
-	PTR	sys_mount
-	PTR	sys_oldumount
-	PTR	sys_setuid
-	PTR	sys_getuid
-	PTR	sys_stime			/* 4025 */
-	PTR	sys_ptrace
-	PTR	sys_alarm
-	PTR	sys_ni_syscall			/* was sys_fstat */
-	PTR	sys_pause
-	PTR	sys_utime			/* 4030 */
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall
-	PTR	sys_access
-	PTR	sys_nice
-	PTR	sys_ni_syscall			/* 4035 */
-	PTR	sys_sync
-	PTR	sys_kill
-	PTR	sys_rename
-	PTR	sys_mkdir
-	PTR	sys_rmdir			/* 4040 */
-	PTR	sys_dup
-	PTR	sysm_pipe
-	PTR	sys_times
-	PTR	sys_ni_syscall
-	PTR	sys_brk				/* 4045 */
-	PTR	sys_setgid
-	PTR	sys_getgid
-	PTR	sys_ni_syscall			/* was signal(2) */
-	PTR	sys_geteuid
-	PTR	sys_getegid			/* 4050 */
-	PTR	sys_acct
-	PTR	sys_umount
-	PTR	sys_ni_syscall
-	PTR	sys_ioctl
-	PTR	sys_fcntl			/* 4055 */
-	PTR	sys_ni_syscall
-	PTR	sys_setpgid
-	PTR	sys_ni_syscall
-	PTR	sys_olduname
-	PTR	sys_umask			/* 4060 */
-	PTR	sys_chroot
-	PTR	sys_ustat
-	PTR	sys_dup2
-	PTR	sys_getppid
-	PTR	sys_getpgrp			/* 4065 */
-	PTR	sys_setsid
-	PTR	sys_sigaction
-	PTR	sys_sgetmask
-	PTR	sys_ssetmask
-	PTR	sys_setreuid			/* 4070 */
-	PTR	sys_setregid
-	PTR	sys_sigsuspend
-	PTR	sys_sigpending
-	PTR	sys_sethostname
-	PTR	sys_setrlimit			/* 4075 */
-	PTR	sys_getrlimit
-	PTR	sys_getrusage
-	PTR	sys_gettimeofday
-	PTR	sys_settimeofday
-	PTR	sys_getgroups			/* 4080 */
-	PTR	sys_setgroups
-	PTR	sys_ni_syscall			/* old_select */
-	PTR	sys_symlink
-	PTR	sys_ni_syscall			/* was sys_lstat */
-	PTR	sys_readlink			/* 4085 */
-	PTR	sys_uselib
-	PTR	sys_swapon
-	PTR	sys_reboot
-	PTR	sys_old_readdir
-	PTR	sys_mips_mmap			/* 4090 */
-	PTR	sys_munmap
-	PTR	sys_truncate
-	PTR	sys_ftruncate
-	PTR	sys_fchmod
-	PTR	sys_fchown			/* 4095 */
-	PTR	sys_getpriority
-	PTR	sys_setpriority
-	PTR	sys_ni_syscall
-	PTR	sys_statfs
-	PTR	sys_fstatfs			/* 4100 */
-	PTR	sys_ni_syscall			/* was ioperm(2) */
-	PTR	sys_socketcall
-	PTR	sys_syslog
-	PTR	sys_setitimer
-	PTR	sys_getitimer			/* 4105 */
-	PTR	sys_newstat
-	PTR	sys_newlstat
-	PTR	sys_newfstat
-	PTR	sys_uname
-	PTR	sys_ni_syscall			/* 4110 was iopl(2) */
-	PTR	sys_vhangup
-	PTR	sys_ni_syscall			/* was sys_idle() */
-	PTR	sys_ni_syscall			/* was sys_vm86 */
-	PTR	sys_wait4
-	PTR	sys_swapoff			/* 4115 */
-	PTR	sys_sysinfo
-	PTR	sys_ipc
-	PTR	sys_fsync
-	PTR	sys_sigreturn
-	PTR	__sys_clone			/* 4120 */
-	PTR	sys_setdomainname
-	PTR	sys_newuname
-	PTR	sys_ni_syscall			/* sys_modify_ldt */
-	PTR	sys_adjtimex
-	PTR	sys_mprotect			/* 4125 */
-	PTR	sys_sigprocmask
-	PTR	sys_ni_syscall			/* was create_module */
-	PTR	sys_init_module
-	PTR	sys_delete_module
-	PTR	sys_ni_syscall			/* 4130 was get_kernel_syms */
-	PTR	sys_quotactl
-	PTR	sys_getpgid
-	PTR	sys_fchdir
-	PTR	sys_bdflush
-	PTR	sys_sysfs			/* 4135 */
-	PTR	sys_personality
-	PTR	sys_ni_syscall			/* for afs_syscall */
-	PTR	sys_setfsuid
-	PTR	sys_setfsgid
-	PTR	sys_llseek			/* 4140 */
-	PTR	sys_getdents
-	PTR	sys_select
-	PTR	sys_flock
-	PTR	sys_msync
-	PTR	sys_readv			/* 4145 */
-	PTR	sys_writev
-	PTR	sys_cacheflush
-	PTR	sys_cachectl
-	PTR	__sys_sysmips
-	PTR	sys_ni_syscall			/* 4150 */
-	PTR	sys_getsid
-	PTR	sys_fdatasync
-	PTR	sys_sysctl
-	PTR	sys_mlock
-	PTR	sys_munlock			/* 4155 */
-	PTR	sys_mlockall
-	PTR	sys_munlockall
-	PTR	sys_sched_setparam
-	PTR	sys_sched_getparam
-	PTR	sys_sched_setscheduler		/* 4160 */
-	PTR	sys_sched_getscheduler
-	PTR	sys_sched_yield
-	PTR	sys_sched_get_priority_max
-	PTR	sys_sched_get_priority_min
-	PTR	sys_sched_rr_get_interval	/* 4165 */
-	PTR	sys_nanosleep
-	PTR	sys_mremap
-	PTR	sys_accept
-	PTR	sys_bind
-	PTR	sys_connect			/* 4170 */
-	PTR	sys_getpeername
-	PTR	sys_getsockname
-	PTR	sys_getsockopt
-	PTR	sys_listen
-	PTR	sys_recv			/* 4175 */
-	PTR	sys_recvfrom
-	PTR	sys_recvmsg
-	PTR	sys_send
-	PTR	sys_sendmsg
-	PTR	sys_sendto			/* 4180 */
-	PTR	sys_setsockopt
-	PTR	sys_shutdown
-	PTR	sys_socket
-	PTR	sys_socketpair
-	PTR	sys_setresuid			/* 4185 */
-	PTR	sys_getresuid
-	PTR	sys_ni_syscall			/* was sys_query_module */
-	PTR	sys_poll
-	PTR	sys_ni_syscall			/* was nfsservctl */
-	PTR	sys_setresgid			/* 4190 */
-	PTR	sys_getresgid
-	PTR	sys_prctl
-	PTR	sys_rt_sigreturn
-	PTR	sys_rt_sigaction
-	PTR	sys_rt_sigprocmask		/* 4195 */
-	PTR	sys_rt_sigpending
-	PTR	sys_rt_sigtimedwait
-	PTR	sys_rt_sigqueueinfo
-	PTR	sys_rt_sigsuspend
-	PTR	sys_pread64			/* 4200 */
-	PTR	sys_pwrite64
-	PTR	sys_chown
-	PTR	sys_getcwd
-	PTR	sys_capget
-	PTR	sys_capset			/* 4205 */
-	PTR	sys_sigaltstack
-	PTR	sys_sendfile
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall
-	PTR	sys_mips_mmap2			/* 4210 */
-	PTR	sys_truncate64
-	PTR	sys_ftruncate64
-	PTR	sys_stat64
-	PTR	sys_lstat64
-	PTR	sys_fstat64			/* 4215 */
-	PTR	sys_pivot_root
-	PTR	sys_mincore
-	PTR	sys_madvise
-	PTR	sys_getdents64
-	PTR	sys_fcntl64			/* 4220 */
-	PTR	sys_ni_syscall
-	PTR	sys_gettid
-	PTR	sys_readahead
-	PTR	sys_setxattr
-	PTR	sys_lsetxattr			/* 4225 */
-	PTR	sys_fsetxattr
-	PTR	sys_getxattr
-	PTR	sys_lgetxattr
-	PTR	sys_fgetxattr
-	PTR	sys_listxattr			/* 4230 */
-	PTR	sys_llistxattr
-	PTR	sys_flistxattr
-	PTR	sys_removexattr
-	PTR	sys_lremovexattr
-	PTR	sys_fremovexattr		/* 4235 */
-	PTR	sys_tkill
-	PTR	sys_sendfile64
-	PTR	sys_futex
-#ifdef CONFIG_MIPS_MT_FPAFF
-	/*
-	 * For FPU affinity scheduling on MIPS MT processors, we need to
-	 * intercept sys_sched_xxxaffinity() calls until we get a proper hook
-	 * in kernel/sched/core.c.  Considered only temporary we only support
-	 * these hooks for the 32-bit kernel - there is no MIPS64 MT processor
-	 * atm.
-	 */
-	PTR	mipsmt_sys_sched_setaffinity
-	PTR	mipsmt_sys_sched_getaffinity
-#else
-	PTR	sys_sched_setaffinity
-	PTR	sys_sched_getaffinity		/* 4240 */
-#endif /* CONFIG_MIPS_MT_FPAFF */
-	PTR	sys_io_setup
-	PTR	sys_io_destroy
-	PTR	sys_io_getevents
-	PTR	sys_io_submit
-	PTR	sys_io_cancel			/* 4245 */
-	PTR	sys_exit_group
-	PTR	sys_lookup_dcookie
-	PTR	sys_epoll_create
-	PTR	sys_epoll_ctl
-	PTR	sys_epoll_wait			/* 4250 */
-	PTR	sys_remap_file_pages
-	PTR	sys_set_tid_address
-	PTR	sys_restart_syscall
-	PTR	sys_fadvise64_64
-	PTR	sys_statfs64			/* 4255 */
-	PTR	sys_fstatfs64
-	PTR	sys_timer_create
-	PTR	sys_timer_settime
-	PTR	sys_timer_gettime
-	PTR	sys_timer_getoverrun		/* 4260 */
-	PTR	sys_timer_delete
-	PTR	sys_clock_settime
-	PTR	sys_clock_gettime
-	PTR	sys_clock_getres
-	PTR	sys_clock_nanosleep		/* 4265 */
-	PTR	sys_tgkill
-	PTR	sys_utimes
-	PTR	sys_mbind
-	PTR	sys_get_mempolicy
-	PTR	sys_set_mempolicy		/* 4270 */
-	PTR	sys_mq_open
-	PTR	sys_mq_unlink
-	PTR	sys_mq_timedsend
-	PTR	sys_mq_timedreceive
-	PTR	sys_mq_notify			/* 4275 */
-	PTR	sys_mq_getsetattr
-	PTR	sys_ni_syscall			/* sys_vserver */
-	PTR	sys_waitid
-	PTR	sys_ni_syscall			/* available, was setaltroot */
-	PTR	sys_add_key			/* 4280 */
-	PTR	sys_request_key
-	PTR	sys_keyctl
-	PTR	sys_set_thread_area
-	PTR	sys_inotify_init
-	PTR	sys_inotify_add_watch		/* 4285 */
-	PTR	sys_inotify_rm_watch
-	PTR	sys_migrate_pages
-	PTR	sys_openat
-	PTR	sys_mkdirat
-	PTR	sys_mknodat			/* 4290 */
-	PTR	sys_fchownat
-	PTR	sys_futimesat
-	PTR	sys_fstatat64
-	PTR	sys_unlinkat
-	PTR	sys_renameat			/* 4295 */
-	PTR	sys_linkat
-	PTR	sys_symlinkat
-	PTR	sys_readlinkat
-	PTR	sys_fchmodat
-	PTR	sys_faccessat			/* 4300 */
-	PTR	sys_pselect6
-	PTR	sys_ppoll
-	PTR	sys_unshare
-	PTR	sys_splice
-	PTR	sys_sync_file_range		/* 4305 */
-	PTR	sys_tee
-	PTR	sys_vmsplice
-	PTR	sys_move_pages
-	PTR	sys_set_robust_list
-	PTR	sys_get_robust_list		/* 4310 */
-	PTR	sys_kexec_load
-	PTR	sys_getcpu
-	PTR	sys_epoll_pwait
-	PTR	sys_ioprio_set
-	PTR	sys_ioprio_get			/* 4315 */
-	PTR	sys_utimensat
-	PTR	sys_signalfd
-	PTR	sys_ni_syscall			/* was timerfd */
-	PTR	sys_eventfd
-	PTR	sys_fallocate			/* 4320 */
-	PTR	sys_timerfd_create
-	PTR	sys_timerfd_gettime
-	PTR	sys_timerfd_settime
-	PTR	sys_signalfd4
-	PTR	sys_eventfd2			/* 4325 */
-	PTR	sys_epoll_create1
-	PTR	sys_dup3
-	PTR	sys_pipe2
-	PTR	sys_inotify_init1
-	PTR	sys_preadv			/* 4330 */
-	PTR	sys_pwritev
-	PTR	sys_rt_tgsigqueueinfo
-	PTR	sys_perf_event_open
-	PTR	sys_accept4
-	PTR	sys_recvmmsg			/* 4335 */
-	PTR	sys_fanotify_init
-	PTR	sys_fanotify_mark
-	PTR	sys_prlimit64
-	PTR	sys_name_to_handle_at
-	PTR	sys_open_by_handle_at		/* 4340 */
-	PTR	sys_clock_adjtime
-	PTR	sys_syncfs
-	PTR	sys_sendmmsg
-	PTR	sys_setns
-	PTR	sys_process_vm_readv		/* 4345 */
-	PTR	sys_process_vm_writev
-	PTR	sys_kcmp
-	PTR	sys_finit_module
-	PTR	sys_sched_setattr
-	PTR	sys_sched_getattr		/* 4350 */
-	PTR	sys_renameat2
-	PTR	sys_seccomp
-	PTR	sys_getrandom
-	PTR	sys_memfd_create
-	PTR	sys_bpf				/* 4355 */
-	PTR	sys_execveat
-	PTR	sys_userfaultfd
-	PTR	sys_membarrier
-	PTR	sys_mlock2
-	PTR	sys_copy_file_range		/* 4360 */
-	PTR	sys_preadv2
-	PTR	sys_pwritev2
-	PTR	sys_pkey_mprotect
-	PTR	sys_pkey_alloc
-	PTR	sys_pkey_free			/* 4365 */
-	PTR	sys_statx
-	PTR	sys_rseq
-	PTR	sys_io_pgetevents
+#include "syscall_table_32_o32.S"
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
index 358d959..bcc31de 100644
--- a/arch/mips/kernel/scall64-64.S
+++ b/arch/mips/kernel/scall64-64.S
@@ -109,336 +109,4 @@ illegal_syscall:
 	j	n64_syscall_exit
 	END(handle_sys64)
 
-	.align	3
-	.type	sys_call_table, @object
-EXPORT(sys_call_table)
-	PTR	sys_read			/* 5000 */
-	PTR	sys_write
-	PTR	sys_open
-	PTR	sys_close
-	PTR	sys_newstat
-	PTR	sys_newfstat			/* 5005 */
-	PTR	sys_newlstat
-	PTR	sys_poll
-	PTR	sys_lseek
-	PTR	sys_mips_mmap
-	PTR	sys_mprotect			/* 5010 */
-	PTR	sys_munmap
-	PTR	sys_brk
-	PTR	sys_rt_sigaction
-	PTR	sys_rt_sigprocmask
-	PTR	sys_ioctl			/* 5015 */
-	PTR	sys_pread64
-	PTR	sys_pwrite64
-	PTR	sys_readv
-	PTR	sys_writev
-	PTR	sys_access			/* 5020 */
-	PTR	sysm_pipe
-	PTR	sys_select
-	PTR	sys_sched_yield
-	PTR	sys_mremap
-	PTR	sys_msync			/* 5025 */
-	PTR	sys_mincore
-	PTR	sys_madvise
-	PTR	sys_shmget
-	PTR	sys_shmat
-	PTR	sys_shmctl			/* 5030 */
-	PTR	sys_dup
-	PTR	sys_dup2
-	PTR	sys_pause
-	PTR	sys_nanosleep
-	PTR	sys_getitimer			/* 5035 */
-	PTR	sys_setitimer
-	PTR	sys_alarm
-	PTR	sys_getpid
-	PTR	sys_sendfile64
-	PTR	sys_socket			/* 5040 */
-	PTR	sys_connect
-	PTR	sys_accept
-	PTR	sys_sendto
-	PTR	sys_recvfrom
-	PTR	sys_sendmsg			/* 5045 */
-	PTR	sys_recvmsg
-	PTR	sys_shutdown
-	PTR	sys_bind
-	PTR	sys_listen
-	PTR	sys_getsockname			/* 5050 */
-	PTR	sys_getpeername
-	PTR	sys_socketpair
-	PTR	sys_setsockopt
-	PTR	sys_getsockopt
-	PTR	__sys_clone			/* 5055 */
-	PTR	__sys_fork
-	PTR	sys_execve
-	PTR	sys_exit
-	PTR	sys_wait4
-	PTR	sys_kill			/* 5060 */
-	PTR	sys_newuname
-	PTR	sys_semget
-	PTR	sys_semop
-	PTR	sys_semctl
-	PTR	sys_shmdt			/* 5065 */
-	PTR	sys_msgget
-	PTR	sys_msgsnd
-	PTR	sys_msgrcv
-	PTR	sys_msgctl
-	PTR	sys_fcntl			/* 5070 */
-	PTR	sys_flock
-	PTR	sys_fsync
-	PTR	sys_fdatasync
-	PTR	sys_truncate
-	PTR	sys_ftruncate			/* 5075 */
-	PTR	sys_getdents
-	PTR	sys_getcwd
-	PTR	sys_chdir
-	PTR	sys_fchdir
-	PTR	sys_rename			/* 5080 */
-	PTR	sys_mkdir
-	PTR	sys_rmdir
-	PTR	sys_creat
-	PTR	sys_link
-	PTR	sys_unlink			/* 5085 */
-	PTR	sys_symlink
-	PTR	sys_readlink
-	PTR	sys_chmod
-	PTR	sys_fchmod
-	PTR	sys_chown			/* 5090 */
-	PTR	sys_fchown
-	PTR	sys_lchown
-	PTR	sys_umask
-	PTR	sys_gettimeofday
-	PTR	sys_getrlimit			/* 5095 */
-	PTR	sys_getrusage
-	PTR	sys_sysinfo
-	PTR	sys_times
-	PTR	sys_ptrace
-	PTR	sys_getuid			/* 5100 */
-	PTR	sys_syslog
-	PTR	sys_getgid
-	PTR	sys_setuid
-	PTR	sys_setgid
-	PTR	sys_geteuid			/* 5105 */
-	PTR	sys_getegid
-	PTR	sys_setpgid
-	PTR	sys_getppid
-	PTR	sys_getpgrp
-	PTR	sys_setsid			/* 5110 */
-	PTR	sys_setreuid
-	PTR	sys_setregid
-	PTR	sys_getgroups
-	PTR	sys_setgroups
-	PTR	sys_setresuid			/* 5115 */
-	PTR	sys_getresuid
-	PTR	sys_setresgid
-	PTR	sys_getresgid
-	PTR	sys_getpgid
-	PTR	sys_setfsuid			/* 5120 */
-	PTR	sys_setfsgid
-	PTR	sys_getsid
-	PTR	sys_capget
-	PTR	sys_capset
-	PTR	sys_rt_sigpending		/* 5125 */
-	PTR	sys_rt_sigtimedwait
-	PTR	sys_rt_sigqueueinfo
-	PTR	sys_rt_sigsuspend
-	PTR	sys_sigaltstack
-	PTR	sys_utime			/* 5130 */
-	PTR	sys_mknod
-	PTR	sys_personality
-	PTR	sys_ustat
-	PTR	sys_statfs
-	PTR	sys_fstatfs			/* 5135 */
-	PTR	sys_sysfs
-	PTR	sys_getpriority
-	PTR	sys_setpriority
-	PTR	sys_sched_setparam
-	PTR	sys_sched_getparam		/* 5140 */
-	PTR	sys_sched_setscheduler
-	PTR	sys_sched_getscheduler
-	PTR	sys_sched_get_priority_max
-	PTR	sys_sched_get_priority_min
-	PTR	sys_sched_rr_get_interval	/* 5145 */
-	PTR	sys_mlock
-	PTR	sys_munlock
-	PTR	sys_mlockall
-	PTR	sys_munlockall
-	PTR	sys_vhangup			/* 5150 */
-	PTR	sys_pivot_root
-	PTR	sys_sysctl
-	PTR	sys_prctl
-	PTR	sys_adjtimex
-	PTR	sys_setrlimit			/* 5155 */
-	PTR	sys_chroot
-	PTR	sys_sync
-	PTR	sys_acct
-	PTR	sys_settimeofday
-	PTR	sys_mount			/* 5160 */
-	PTR	sys_umount
-	PTR	sys_swapon
-	PTR	sys_swapoff
-	PTR	sys_reboot
-	PTR	sys_sethostname			/* 5165 */
-	PTR	sys_setdomainname
-	PTR	sys_ni_syscall			/* was create_module */
-	PTR	sys_init_module
-	PTR	sys_delete_module
-	PTR	sys_ni_syscall			/* 5170, was get_kernel_syms */
-	PTR	sys_ni_syscall			/* was query_module */
-	PTR	sys_quotactl
-	PTR	sys_ni_syscall			/* was nfsservctl */
-	PTR	sys_ni_syscall			/* res. for getpmsg */
-	PTR	sys_ni_syscall			/* 5175	 for putpmsg */
-	PTR	sys_ni_syscall			/* res. for afs_syscall */
-	PTR	sys_ni_syscall			/* res. for security */
-	PTR	sys_gettid
-	PTR	sys_readahead
-	PTR	sys_setxattr			/* 5180 */
-	PTR	sys_lsetxattr
-	PTR	sys_fsetxattr
-	PTR	sys_getxattr
-	PTR	sys_lgetxattr
-	PTR	sys_fgetxattr			/* 5185 */
-	PTR	sys_listxattr
-	PTR	sys_llistxattr
-	PTR	sys_flistxattr
-	PTR	sys_removexattr
-	PTR	sys_lremovexattr		/* 5190 */
-	PTR	sys_fremovexattr
-	PTR	sys_tkill
-	PTR	sys_ni_syscall
-	PTR	sys_futex
-	PTR	sys_sched_setaffinity		/* 5195 */
-	PTR	sys_sched_getaffinity
-	PTR	sys_cacheflush
-	PTR	sys_cachectl
-	PTR	__sys_sysmips
-	PTR	sys_io_setup			/* 5200 */
-	PTR	sys_io_destroy
-	PTR	sys_io_getevents
-	PTR	sys_io_submit
-	PTR	sys_io_cancel
-	PTR	sys_exit_group			/* 5205 */
-	PTR	sys_lookup_dcookie
-	PTR	sys_epoll_create
-	PTR	sys_epoll_ctl
-	PTR	sys_epoll_wait
-	PTR	sys_remap_file_pages		/* 5210 */
-	PTR	sys_rt_sigreturn
-	PTR	sys_set_tid_address
-	PTR	sys_restart_syscall
-	PTR	sys_semtimedop
-	PTR	sys_fadvise64_64		/* 5215 */
-	PTR	sys_timer_create
-	PTR	sys_timer_settime
-	PTR	sys_timer_gettime
-	PTR	sys_timer_getoverrun
-	PTR	sys_timer_delete		/* 5220 */
-	PTR	sys_clock_settime
-	PTR	sys_clock_gettime
-	PTR	sys_clock_getres
-	PTR	sys_clock_nanosleep
-	PTR	sys_tgkill			/* 5225 */
-	PTR	sys_utimes
-	PTR	sys_mbind
-	PTR	sys_get_mempolicy
-	PTR	sys_set_mempolicy
-	PTR	sys_mq_open			/* 5230 */
-	PTR	sys_mq_unlink
-	PTR	sys_mq_timedsend
-	PTR	sys_mq_timedreceive
-	PTR	sys_mq_notify
-	PTR	sys_mq_getsetattr		/* 5235 */
-	PTR	sys_ni_syscall			/* sys_vserver */
-	PTR	sys_waitid
-	PTR	sys_ni_syscall			/* available, was setaltroot */
-	PTR	sys_add_key
-	PTR	sys_request_key			/* 5240 */
-	PTR	sys_keyctl
-	PTR	sys_set_thread_area
-	PTR	sys_inotify_init
-	PTR	sys_inotify_add_watch
-	PTR	sys_inotify_rm_watch		/* 5245 */
-	PTR	sys_migrate_pages
-	PTR	sys_openat
-	PTR	sys_mkdirat
-	PTR	sys_mknodat
-	PTR	sys_fchownat			/* 5250 */
-	PTR	sys_futimesat
-	PTR	sys_newfstatat
-	PTR	sys_unlinkat
-	PTR	sys_renameat
-	PTR	sys_linkat			/* 5255 */
-	PTR	sys_symlinkat
-	PTR	sys_readlinkat
-	PTR	sys_fchmodat
-	PTR	sys_faccessat
-	PTR	sys_pselect6			/* 5260 */
-	PTR	sys_ppoll
-	PTR	sys_unshare
-	PTR	sys_splice
-	PTR	sys_sync_file_range
-	PTR	sys_tee				/* 5265 */
-	PTR	sys_vmsplice
-	PTR	sys_move_pages
-	PTR	sys_set_robust_list
-	PTR	sys_get_robust_list
-	PTR	sys_kexec_load			/* 5270 */
-	PTR	sys_getcpu
-	PTR	sys_epoll_pwait
-	PTR	sys_ioprio_set
-	PTR	sys_ioprio_get
-	PTR	sys_utimensat			/* 5275 */
-	PTR	sys_signalfd
-	PTR	sys_ni_syscall			/* was timerfd */
-	PTR	sys_eventfd
-	PTR	sys_fallocate
-	PTR	sys_timerfd_create		/* 5280 */
-	PTR	sys_timerfd_gettime
-	PTR	sys_timerfd_settime
-	PTR	sys_signalfd4
-	PTR	sys_eventfd2
-	PTR	sys_epoll_create1		/* 5285 */
-	PTR	sys_dup3
-	PTR	sys_pipe2
-	PTR	sys_inotify_init1
-	PTR	sys_preadv
-	PTR	sys_pwritev			/* 5290 */
-	PTR	sys_rt_tgsigqueueinfo
-	PTR	sys_perf_event_open
-	PTR	sys_accept4
-	PTR	sys_recvmmsg
-	PTR	sys_fanotify_init		/* 5295 */
-	PTR	sys_fanotify_mark
-	PTR	sys_prlimit64
-	PTR	sys_name_to_handle_at
-	PTR	sys_open_by_handle_at
-	PTR	sys_clock_adjtime		/* 5300 */
-	PTR	sys_syncfs
-	PTR	sys_sendmmsg
-	PTR	sys_setns
-	PTR	sys_process_vm_readv
-	PTR	sys_process_vm_writev		/* 5305 */
-	PTR	sys_kcmp
-	PTR	sys_finit_module
-	PTR	sys_getdents64
-	PTR	sys_sched_setattr
-	PTR	sys_sched_getattr		/* 5310 */
-	PTR	sys_renameat2
-	PTR	sys_seccomp
-	PTR	sys_getrandom
-	PTR	sys_memfd_create
-	PTR	sys_bpf				/* 5315 */
-	PTR	sys_execveat
-	PTR	sys_userfaultfd
-	PTR	sys_membarrier
-	PTR	sys_mlock2
-	PTR	sys_copy_file_range		/* 5320 */
-	PTR	sys_preadv2
-	PTR	sys_pwritev2
-	PTR	sys_pkey_mprotect
-	PTR	sys_pkey_alloc
-	PTR	sys_pkey_free			/* 5325 */
-	PTR	sys_statx
-	PTR	sys_rseq
-	PTR	sys_io_pgetevents
-	.size	sys_call_table,.-sys_call_table
+#include "syscall_table_64_64.S"
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index c65eaac..33c0376 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -101,339 +101,4 @@ not_n32_scall:
 
 	END(handle_sysn32)
 
-	.type	sysn32_call_table, @object
-EXPORT(sysn32_call_table)
-	PTR	sys_read			/* 6000 */
-	PTR	sys_write
-	PTR	sys_open
-	PTR	sys_close
-	PTR	sys_newstat
-	PTR	sys_newfstat			/* 6005 */
-	PTR	sys_newlstat
-	PTR	sys_poll
-	PTR	sys_lseek
-	PTR	sys_mips_mmap
-	PTR	sys_mprotect			/* 6010 */
-	PTR	sys_munmap
-	PTR	sys_brk
-	PTR	compat_sys_rt_sigaction
-	PTR	compat_sys_rt_sigprocmask
-	PTR	compat_sys_ioctl		/* 6015 */
-	PTR	sys_pread64
-	PTR	sys_pwrite64
-	PTR	compat_sys_readv
-	PTR	compat_sys_writev
-	PTR	sys_access			/* 6020 */
-	PTR	sysm_pipe
-	PTR	compat_sys_select
-	PTR	sys_sched_yield
-	PTR	sys_mremap
-	PTR	sys_msync			/* 6025 */
-	PTR	sys_mincore
-	PTR	sys_madvise
-	PTR	sys_shmget
-	PTR	sys_shmat
-	PTR	compat_sys_shmctl			/* 6030 */
-	PTR	sys_dup
-	PTR	sys_dup2
-	PTR	sys_pause
-	PTR	compat_sys_nanosleep
-	PTR	compat_sys_getitimer		/* 6035 */
-	PTR	compat_sys_setitimer
-	PTR	sys_alarm
-	PTR	sys_getpid
-	PTR	compat_sys_sendfile
-	PTR	sys_socket			/* 6040 */
-	PTR	sys_connect
-	PTR	sys_accept
-	PTR	sys_sendto
-	PTR	compat_sys_recvfrom
-	PTR	compat_sys_sendmsg		/* 6045 */
-	PTR	compat_sys_recvmsg
-	PTR	sys_shutdown
-	PTR	sys_bind
-	PTR	sys_listen
-	PTR	sys_getsockname			/* 6050 */
-	PTR	sys_getpeername
-	PTR	sys_socketpair
-	PTR	compat_sys_setsockopt
-	PTR	compat_sys_getsockopt
-	PTR	__sys_clone			/* 6055 */
-	PTR	__sys_fork
-	PTR	compat_sys_execve
-	PTR	sys_exit
-	PTR	compat_sys_wait4
-	PTR	sys_kill			/* 6060 */
-	PTR	sys_newuname
-	PTR	sys_semget
-	PTR	sys_semop
-	PTR	compat_sys_semctl
-	PTR	sys_shmdt			/* 6065 */
-	PTR	sys_msgget
-	PTR	compat_sys_msgsnd
-	PTR	compat_sys_msgrcv
-	PTR	compat_sys_msgctl
-	PTR	compat_sys_fcntl		/* 6070 */
-	PTR	sys_flock
-	PTR	sys_fsync
-	PTR	sys_fdatasync
-	PTR	sys_truncate
-	PTR	sys_ftruncate			/* 6075 */
-	PTR	compat_sys_getdents
-	PTR	sys_getcwd
-	PTR	sys_chdir
-	PTR	sys_fchdir
-	PTR	sys_rename			/* 6080 */
-	PTR	sys_mkdir
-	PTR	sys_rmdir
-	PTR	sys_creat
-	PTR	sys_link
-	PTR	sys_unlink			/* 6085 */
-	PTR	sys_symlink
-	PTR	sys_readlink
-	PTR	sys_chmod
-	PTR	sys_fchmod
-	PTR	sys_chown			/* 6090 */
-	PTR	sys_fchown
-	PTR	sys_lchown
-	PTR	sys_umask
-	PTR	compat_sys_gettimeofday
-	PTR	compat_sys_getrlimit		/* 6095 */
-	PTR	compat_sys_getrusage
-	PTR	compat_sys_sysinfo
-	PTR	compat_sys_times
-	PTR	compat_sys_ptrace
-	PTR	sys_getuid			/* 6100 */
-	PTR	sys_syslog
-	PTR	sys_getgid
-	PTR	sys_setuid
-	PTR	sys_setgid
-	PTR	sys_geteuid			/* 6105 */
-	PTR	sys_getegid
-	PTR	sys_setpgid
-	PTR	sys_getppid
-	PTR	sys_getpgrp
-	PTR	sys_setsid			/* 6110 */
-	PTR	sys_setreuid
-	PTR	sys_setregid
-	PTR	sys_getgroups
-	PTR	sys_setgroups
-	PTR	sys_setresuid			/* 6115 */
-	PTR	sys_getresuid
-	PTR	sys_setresgid
-	PTR	sys_getresgid
-	PTR	sys_getpgid
-	PTR	sys_setfsuid			/* 6120 */
-	PTR	sys_setfsgid
-	PTR	sys_getsid
-	PTR	sys_capget
-	PTR	sys_capset
-	PTR	compat_sys_rt_sigpending	/* 6125 */
-	PTR	compat_sys_rt_sigtimedwait
-	PTR	compat_sys_rt_sigqueueinfo
-	PTR	compat_sys_rt_sigsuspend
-	PTR	compat_sys_sigaltstack
-	PTR	compat_sys_utime		/* 6130 */
-	PTR	sys_mknod
-	PTR	sys_32_personality
-	PTR	compat_sys_ustat
-	PTR	compat_sys_statfs
-	PTR	compat_sys_fstatfs		/* 6135 */
-	PTR	sys_sysfs
-	PTR	sys_getpriority
-	PTR	sys_setpriority
-	PTR	sys_sched_setparam
-	PTR	sys_sched_getparam		/* 6140 */
-	PTR	sys_sched_setscheduler
-	PTR	sys_sched_getscheduler
-	PTR	sys_sched_get_priority_max
-	PTR	sys_sched_get_priority_min
-	PTR	compat_sys_sched_rr_get_interval	/* 6145 */
-	PTR	sys_mlock
-	PTR	sys_munlock
-	PTR	sys_mlockall
-	PTR	sys_munlockall
-	PTR	sys_vhangup			/* 6150 */
-	PTR	sys_pivot_root
-	PTR	compat_sys_sysctl
-	PTR	sys_prctl
-	PTR	compat_sys_adjtimex
-	PTR	compat_sys_setrlimit		/* 6155 */
-	PTR	sys_chroot
-	PTR	sys_sync
-	PTR	sys_acct
-	PTR	compat_sys_settimeofday
-	PTR	compat_sys_mount		/* 6160 */
-	PTR	sys_umount
-	PTR	sys_swapon
-	PTR	sys_swapoff
-	PTR	sys_reboot
-	PTR	sys_sethostname			/* 6165 */
-	PTR	sys_setdomainname
-	PTR	sys_ni_syscall			/* was create_module */
-	PTR	sys_init_module
-	PTR	sys_delete_module
-	PTR	sys_ni_syscall			/* 6170, was get_kernel_syms */
-	PTR	sys_ni_syscall			/* was query_module */
-	PTR	sys_quotactl
-	PTR	sys_ni_syscall			/* was nfsservctl */
-	PTR	sys_ni_syscall			/* res. for getpmsg */
-	PTR	sys_ni_syscall			/* 6175	 for putpmsg */
-	PTR	sys_ni_syscall			/* res. for afs_syscall */
-	PTR	sys_ni_syscall			/* res. for security */
-	PTR	sys_gettid
-	PTR	sys_readahead
-	PTR	sys_setxattr			/* 6180 */
-	PTR	sys_lsetxattr
-	PTR	sys_fsetxattr
-	PTR	sys_getxattr
-	PTR	sys_lgetxattr
-	PTR	sys_fgetxattr			/* 6185 */
-	PTR	sys_listxattr
-	PTR	sys_llistxattr
-	PTR	sys_flistxattr
-	PTR	sys_removexattr
-	PTR	sys_lremovexattr		/* 6190 */
-	PTR	sys_fremovexattr
-	PTR	sys_tkill
-	PTR	sys_ni_syscall
-	PTR	compat_sys_futex
-	PTR	compat_sys_sched_setaffinity	/* 6195 */
-	PTR	compat_sys_sched_getaffinity
-	PTR	sys_cacheflush
-	PTR	sys_cachectl
-	PTR	__sys_sysmips
-	PTR	compat_sys_io_setup			/* 6200 */
-	PTR	sys_io_destroy
-	PTR	compat_sys_io_getevents
-	PTR	compat_sys_io_submit
-	PTR	sys_io_cancel
-	PTR	sys_exit_group			/* 6205 */
-	PTR	sys_lookup_dcookie
-	PTR	sys_epoll_create
-	PTR	sys_epoll_ctl
-	PTR	sys_epoll_wait
-	PTR	sys_remap_file_pages		/* 6210 */
-	PTR	sysn32_rt_sigreturn
-	PTR	compat_sys_fcntl64
-	PTR	sys_set_tid_address
-	PTR	sys_restart_syscall
-	PTR	compat_sys_semtimedop			/* 6215 */
-	PTR	sys_fadvise64_64
-	PTR	compat_sys_statfs64
-	PTR	compat_sys_fstatfs64
-	PTR	sys_sendfile64
-	PTR	compat_sys_timer_create		/* 6220 */
-	PTR	compat_sys_timer_settime
-	PTR	compat_sys_timer_gettime
-	PTR	sys_timer_getoverrun
-	PTR	sys_timer_delete
-	PTR	compat_sys_clock_settime		/* 6225 */
-	PTR	compat_sys_clock_gettime
-	PTR	compat_sys_clock_getres
-	PTR	compat_sys_clock_nanosleep
-	PTR	sys_tgkill
-	PTR	compat_sys_utimes		/* 6230 */
-	PTR	compat_sys_mbind
-	PTR	compat_sys_get_mempolicy
-	PTR	compat_sys_set_mempolicy
-	PTR	compat_sys_mq_open
-	PTR	sys_mq_unlink			/* 6235 */
-	PTR	compat_sys_mq_timedsend
-	PTR	compat_sys_mq_timedreceive
-	PTR	compat_sys_mq_notify
-	PTR	compat_sys_mq_getsetattr
-	PTR	sys_ni_syscall			/* 6240, sys_vserver */
-	PTR	compat_sys_waitid
-	PTR	sys_ni_syscall			/* available, was setaltroot */
-	PTR	sys_add_key
-	PTR	sys_request_key
-	PTR	compat_sys_keyctl		/* 6245 */
-	PTR	sys_set_thread_area
-	PTR	sys_inotify_init
-	PTR	sys_inotify_add_watch
-	PTR	sys_inotify_rm_watch
-	PTR	compat_sys_migrate_pages	/* 6250 */
-	PTR	sys_openat
-	PTR	sys_mkdirat
-	PTR	sys_mknodat
-	PTR	sys_fchownat
-	PTR	compat_sys_futimesat		/* 6255 */
-	PTR	sys_newfstatat
-	PTR	sys_unlinkat
-	PTR	sys_renameat
-	PTR	sys_linkat
-	PTR	sys_symlinkat			/* 6260 */
-	PTR	sys_readlinkat
-	PTR	sys_fchmodat
-	PTR	sys_faccessat
-	PTR	compat_sys_pselect6
-	PTR	compat_sys_ppoll		/* 6265 */
-	PTR	sys_unshare
-	PTR	sys_splice
-	PTR	sys_sync_file_range
-	PTR	sys_tee
-	PTR	compat_sys_vmsplice		/* 6270 */
-	PTR	compat_sys_move_pages
-	PTR	compat_sys_set_robust_list
-	PTR	compat_sys_get_robust_list
-	PTR	compat_sys_kexec_load
-	PTR	sys_getcpu			/* 6275 */
-	PTR	compat_sys_epoll_pwait
-	PTR	sys_ioprio_set
-	PTR	sys_ioprio_get
-	PTR	compat_sys_utimensat
-	PTR	compat_sys_signalfd		/* 6280 */
-	PTR	sys_ni_syscall			/* was timerfd */
-	PTR	sys_eventfd
-	PTR	sys_fallocate
-	PTR	sys_timerfd_create
-	PTR	compat_sys_timerfd_gettime	/* 6285 */
-	PTR	compat_sys_timerfd_settime
-	PTR	compat_sys_signalfd4
-	PTR	sys_eventfd2
-	PTR	sys_epoll_create1
-	PTR	sys_dup3			/* 6290 */
-	PTR	sys_pipe2
-	PTR	sys_inotify_init1
-	PTR	compat_sys_preadv
-	PTR	compat_sys_pwritev
-	PTR	compat_sys_rt_tgsigqueueinfo	/* 6295 */
-	PTR	sys_perf_event_open
-	PTR	sys_accept4
-	PTR	compat_sys_recvmmsg
-	PTR	sys_getdents64
-	PTR	sys_fanotify_init		/* 6300 */
-	PTR	sys_fanotify_mark
-	PTR	sys_prlimit64
-	PTR	sys_name_to_handle_at
-	PTR	sys_open_by_handle_at
-	PTR	compat_sys_clock_adjtime	/* 6305 */
-	PTR	sys_syncfs
-	PTR	compat_sys_sendmmsg
-	PTR	sys_setns
-	PTR	compat_sys_process_vm_readv
-	PTR	compat_sys_process_vm_writev	/* 6310 */
-	PTR	sys_kcmp
-	PTR	sys_finit_module
-	PTR	sys_sched_setattr
-	PTR	sys_sched_getattr
-	PTR	sys_renameat2			/* 6315 */
-	PTR	sys_seccomp
-	PTR	sys_getrandom
-	PTR	sys_memfd_create
-	PTR	sys_bpf
-	PTR	compat_sys_execveat		/* 6320 */
-	PTR	sys_userfaultfd
-	PTR	sys_membarrier
-	PTR	sys_mlock2
-	PTR	sys_copy_file_range
-	PTR	compat_sys_preadv2		/* 6325 */
-	PTR	compat_sys_pwritev2
-	PTR	sys_pkey_mprotect
-	PTR	sys_pkey_alloc
-	PTR	sys_pkey_free
-	PTR	sys_statx			/* 6330 */
-	PTR	sys_rseq
-	PTR	compat_sys_io_pgetevents
-	.size	sysn32_call_table,.-sysn32_call_table
+#include "syscall_table_64_n32.S"
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index 73913f0..35359bd 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -213,376 +213,4 @@ einval: li	v0, -ENOSYS
 	jr	ra
 	END(sys32_syscall)
 
-	.align	3
-	.type	sys32_call_table,@object
-EXPORT(sys32_call_table)
-	PTR	sys32_syscall			/* 4000 */
-	PTR	sys_exit
-	PTR	__sys_fork
-	PTR	sys_read
-	PTR	sys_write
-	PTR	compat_sys_open			/* 4005 */
-	PTR	sys_close
-	PTR	sys_waitpid
-	PTR	sys_creat
-	PTR	sys_link
-	PTR	sys_unlink			/* 4010 */
-	PTR	compat_sys_execve
-	PTR	sys_chdir
-	PTR	compat_sys_time
-	PTR	sys_mknod
-	PTR	sys_chmod			/* 4015 */
-	PTR	sys_lchown
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall			/* was sys_stat */
-	PTR	sys_lseek
-	PTR	sys_getpid			/* 4020 */
-	PTR	compat_sys_mount
-	PTR	sys_oldumount
-	PTR	sys_setuid
-	PTR	sys_getuid
-	PTR	compat_sys_stime		/* 4025 */
-	PTR	compat_sys_ptrace
-	PTR	sys_alarm
-	PTR	sys_ni_syscall			/* was sys_fstat */
-	PTR	sys_pause
-	PTR	compat_sys_utime		/* 4030 */
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall
-	PTR	sys_access
-	PTR	sys_nice
-	PTR	sys_ni_syscall			/* 4035 */
-	PTR	sys_sync
-	PTR	sys_kill
-	PTR	sys_rename
-	PTR	sys_mkdir
-	PTR	sys_rmdir			/* 4040 */
-	PTR	sys_dup
-	PTR	sysm_pipe
-	PTR	compat_sys_times
-	PTR	sys_ni_syscall
-	PTR	sys_brk				/* 4045 */
-	PTR	sys_setgid
-	PTR	sys_getgid
-	PTR	sys_ni_syscall			/* was signal	2 */
-	PTR	sys_geteuid
-	PTR	sys_getegid			/* 4050 */
-	PTR	sys_acct
-	PTR	sys_umount
-	PTR	sys_ni_syscall
-	PTR	compat_sys_ioctl
-	PTR	compat_sys_fcntl		/* 4055 */
-	PTR	sys_ni_syscall
-	PTR	sys_setpgid
-	PTR	sys_ni_syscall
-	PTR	sys_olduname
-	PTR	sys_umask			/* 4060 */
-	PTR	sys_chroot
-	PTR	compat_sys_ustat
-	PTR	sys_dup2
-	PTR	sys_getppid
-	PTR	sys_getpgrp			/* 4065 */
-	PTR	sys_setsid
-	PTR	sys_32_sigaction
-	PTR	sys_sgetmask
-	PTR	sys_ssetmask
-	PTR	sys_setreuid			/* 4070 */
-	PTR	sys_setregid
-	PTR	sys32_sigsuspend
-	PTR	compat_sys_sigpending
-	PTR	sys_sethostname
-	PTR	compat_sys_setrlimit		/* 4075 */
-	PTR	compat_sys_getrlimit
-	PTR	compat_sys_getrusage
-	PTR	compat_sys_gettimeofday
-	PTR	compat_sys_settimeofday
-	PTR	sys_getgroups			/* 4080 */
-	PTR	sys_setgroups
-	PTR	sys_ni_syscall			/* old_select */
-	PTR	sys_symlink
-	PTR	sys_ni_syscall			/* was sys_lstat */
-	PTR	sys_readlink			/* 4085 */
-	PTR	sys_uselib
-	PTR	sys_swapon
-	PTR	sys_reboot
-	PTR	compat_sys_old_readdir
-	PTR	sys_mips_mmap			/* 4090 */
-	PTR	sys_munmap
-	PTR	compat_sys_truncate
-	PTR	compat_sys_ftruncate
-	PTR	sys_fchmod
-	PTR	sys_fchown			/* 4095 */
-	PTR	sys_getpriority
-	PTR	sys_setpriority
-	PTR	sys_ni_syscall
-	PTR	compat_sys_statfs
-	PTR	compat_sys_fstatfs		/* 4100 */
-	PTR	sys_ni_syscall			/* sys_ioperm */
-	PTR	compat_sys_socketcall
-	PTR	sys_syslog
-	PTR	compat_sys_setitimer
-	PTR	compat_sys_getitimer		/* 4105 */
-	PTR	compat_sys_newstat
-	PTR	compat_sys_newlstat
-	PTR	compat_sys_newfstat
-	PTR	sys_uname
-	PTR	sys_ni_syscall			/* sys_ioperm  *//* 4110 */
-	PTR	sys_vhangup
-	PTR	sys_ni_syscall			/* was sys_idle	 */
-	PTR	sys_ni_syscall			/* sys_vm86 */
-	PTR	compat_sys_wait4
-	PTR	sys_swapoff			/* 4115 */
-	PTR	compat_sys_sysinfo
-	PTR	compat_sys_ipc
-	PTR	sys_fsync
-	PTR	sys32_sigreturn
-	PTR	__sys_clone			/* 4120 */
-	PTR	sys_setdomainname
-	PTR	sys_newuname
-	PTR	sys_ni_syscall			/* sys_modify_ldt */
-	PTR	compat_sys_adjtimex
-	PTR	sys_mprotect			/* 4125 */
-	PTR	compat_sys_sigprocmask
-	PTR	sys_ni_syscall			/* was creat_module */
-	PTR	sys_init_module
-	PTR	sys_delete_module
-	PTR	sys_ni_syscall			/* 4130, get_kernel_syms */
-	PTR	sys_quotactl
-	PTR	sys_getpgid
-	PTR	sys_fchdir
-	PTR	sys_bdflush
-	PTR	sys_sysfs			/* 4135 */
-	PTR	sys_32_personality
-	PTR	sys_ni_syscall			/* for afs_syscall */
-	PTR	sys_setfsuid
-	PTR	sys_setfsgid
-	PTR	sys_32_llseek			/* 4140 */
-	PTR	compat_sys_getdents
-	PTR	compat_sys_select
-	PTR	sys_flock
-	PTR	sys_msync
-	PTR	compat_sys_readv		/* 4145 */
-	PTR	compat_sys_writev
-	PTR	sys_cacheflush
-	PTR	sys_cachectl
-	PTR	__sys_sysmips
-	PTR	sys_ni_syscall			/* 4150 */
-	PTR	sys_getsid
-	PTR	sys_fdatasync
-	PTR	compat_sys_sysctl
-	PTR	sys_mlock
-	PTR	sys_munlock			/* 4155 */
-	PTR	sys_mlockall
-	PTR	sys_munlockall
-	PTR	sys_sched_setparam
-	PTR	sys_sched_getparam
-	PTR	sys_sched_setscheduler		/* 4160 */
-	PTR	sys_sched_getscheduler
-	PTR	sys_sched_yield
-	PTR	sys_sched_get_priority_max
-	PTR	sys_sched_get_priority_min
-	PTR	compat_sys_sched_rr_get_interval	/* 4165 */
-	PTR	compat_sys_nanosleep
-	PTR	sys_mremap
-	PTR	sys_accept
-	PTR	sys_bind
-	PTR	sys_connect			/* 4170 */
-	PTR	sys_getpeername
-	PTR	sys_getsockname
-	PTR	compat_sys_getsockopt
-	PTR	sys_listen
-	PTR	compat_sys_recv			/* 4175 */
-	PTR	compat_sys_recvfrom
-	PTR	compat_sys_recvmsg
-	PTR	sys_send
-	PTR	compat_sys_sendmsg
-	PTR	sys_sendto			/* 4180 */
-	PTR	compat_sys_setsockopt
-	PTR	sys_shutdown
-	PTR	sys_socket
-	PTR	sys_socketpair
-	PTR	sys_setresuid			/* 4185 */
-	PTR	sys_getresuid
-	PTR	sys_ni_syscall			/* was query_module */
-	PTR	sys_poll
-	PTR	sys_ni_syscall			/* was nfsservctl */
-	PTR	sys_setresgid			/* 4190 */
-	PTR	sys_getresgid
-	PTR	sys_prctl
-	PTR	sys32_rt_sigreturn
-	PTR	compat_sys_rt_sigaction
-	PTR	compat_sys_rt_sigprocmask	/* 4195 */
-	PTR	compat_sys_rt_sigpending
-	PTR	compat_sys_rt_sigtimedwait
-	PTR	compat_sys_rt_sigqueueinfo
-	PTR	compat_sys_rt_sigsuspend
-	PTR	sys_32_pread			/* 4200 */
-	PTR	sys_32_pwrite
-	PTR	sys_chown
-	PTR	sys_getcwd
-	PTR	sys_capget
-	PTR	sys_capset			/* 4205 */
-	PTR	compat_sys_sigaltstack
-	PTR	compat_sys_sendfile
-	PTR	sys_ni_syscall
-	PTR	sys_ni_syscall
-	PTR	sys_mips_mmap2			/* 4210 */
-	PTR	sys_32_truncate64
-	PTR	sys_32_ftruncate64
-	PTR	sys_newstat
-	PTR	sys_newlstat
-	PTR	sys_newfstat			/* 4215 */
-	PTR	sys_pivot_root
-	PTR	sys_mincore
-	PTR	sys_madvise
-	PTR	sys_getdents64
-	PTR	compat_sys_fcntl64		/* 4220 */
-	PTR	sys_ni_syscall
-	PTR	sys_gettid
-	PTR	sys32_readahead
-	PTR	sys_setxattr
-	PTR	sys_lsetxattr			/* 4225 */
-	PTR	sys_fsetxattr
-	PTR	sys_getxattr
-	PTR	sys_lgetxattr
-	PTR	sys_fgetxattr
-	PTR	sys_listxattr			/* 4230 */
-	PTR	sys_llistxattr
-	PTR	sys_flistxattr
-	PTR	sys_removexattr
-	PTR	sys_lremovexattr
-	PTR	sys_fremovexattr		/* 4235 */
-	PTR	sys_tkill
-	PTR	sys_sendfile64
-	PTR	compat_sys_futex
-	PTR	compat_sys_sched_setaffinity
-	PTR	compat_sys_sched_getaffinity	/* 4240 */
-	PTR	compat_sys_io_setup
-	PTR	sys_io_destroy
-	PTR	compat_sys_io_getevents
-	PTR	compat_sys_io_submit
-	PTR	sys_io_cancel			/* 4245 */
-	PTR	sys_exit_group
-	PTR	compat_sys_lookup_dcookie
-	PTR	sys_epoll_create
-	PTR	sys_epoll_ctl
-	PTR	sys_epoll_wait			/* 4250 */
-	PTR	sys_remap_file_pages
-	PTR	sys_set_tid_address
-	PTR	sys_restart_syscall
-	PTR	sys32_fadvise64_64
-	PTR	compat_sys_statfs64		/* 4255 */
-	PTR	compat_sys_fstatfs64
-	PTR	compat_sys_timer_create
-	PTR	compat_sys_timer_settime
-	PTR	compat_sys_timer_gettime
-	PTR	sys_timer_getoverrun		/* 4260 */
-	PTR	sys_timer_delete
-	PTR	compat_sys_clock_settime
-	PTR	compat_sys_clock_gettime
-	PTR	compat_sys_clock_getres
-	PTR	compat_sys_clock_nanosleep	/* 4265 */
-	PTR	sys_tgkill
-	PTR	compat_sys_utimes
-	PTR	compat_sys_mbind
-	PTR	compat_sys_get_mempolicy
-	PTR	compat_sys_set_mempolicy	/* 4270 */
-	PTR	compat_sys_mq_open
-	PTR	sys_mq_unlink
-	PTR	compat_sys_mq_timedsend
-	PTR	compat_sys_mq_timedreceive
-	PTR	compat_sys_mq_notify		/* 4275 */
-	PTR	compat_sys_mq_getsetattr
-	PTR	sys_ni_syscall			/* sys_vserver */
-	PTR	compat_sys_waitid
-	PTR	sys_ni_syscall			/* available, was setaltroot */
-	PTR	sys_add_key			/* 4280 */
-	PTR	sys_request_key
-	PTR	compat_sys_keyctl
-	PTR	sys_set_thread_area
-	PTR	sys_inotify_init
-	PTR	sys_inotify_add_watch		/* 4285 */
-	PTR	sys_inotify_rm_watch
-	PTR	compat_sys_migrate_pages
-	PTR	compat_sys_openat
-	PTR	sys_mkdirat
-	PTR	sys_mknodat			/* 4290 */
-	PTR	sys_fchownat
-	PTR	compat_sys_futimesat
-	PTR	sys_newfstatat
-	PTR	sys_unlinkat
-	PTR	sys_renameat			/* 4295 */
-	PTR	sys_linkat
-	PTR	sys_symlinkat
-	PTR	sys_readlinkat
-	PTR	sys_fchmodat
-	PTR	sys_faccessat			/* 4300 */
-	PTR	compat_sys_pselect6
-	PTR	compat_sys_ppoll
-	PTR	sys_unshare
-	PTR	sys_splice
-	PTR	sys32_sync_file_range		/* 4305 */
-	PTR	sys_tee
-	PTR	compat_sys_vmsplice
-	PTR	compat_sys_move_pages
-	PTR	compat_sys_set_robust_list
-	PTR	compat_sys_get_robust_list	/* 4310 */
-	PTR	compat_sys_kexec_load
-	PTR	sys_getcpu
-	PTR	compat_sys_epoll_pwait
-	PTR	sys_ioprio_set
-	PTR	sys_ioprio_get			/* 4315 */
-	PTR	compat_sys_utimensat
-	PTR	compat_sys_signalfd
-	PTR	sys_ni_syscall			/* was timerfd */
-	PTR	sys_eventfd
-	PTR	sys32_fallocate			/* 4320 */
-	PTR	sys_timerfd_create
-	PTR	compat_sys_timerfd_gettime
-	PTR	compat_sys_timerfd_settime
-	PTR	compat_sys_signalfd4
-	PTR	sys_eventfd2			/* 4325 */
-	PTR	sys_epoll_create1
-	PTR	sys_dup3
-	PTR	sys_pipe2
-	PTR	sys_inotify_init1
-	PTR	compat_sys_preadv		/* 4330 */
-	PTR	compat_sys_pwritev
-	PTR	compat_sys_rt_tgsigqueueinfo
-	PTR	sys_perf_event_open
-	PTR	sys_accept4
-	PTR	compat_sys_recvmmsg		/* 4335 */
-	PTR	sys_fanotify_init
-	PTR	compat_sys_fanotify_mark
-	PTR	sys_prlimit64
-	PTR	sys_name_to_handle_at
-	PTR	compat_sys_open_by_handle_at	/* 4340 */
-	PTR	compat_sys_clock_adjtime
-	PTR	sys_syncfs
-	PTR	compat_sys_sendmmsg
-	PTR	sys_setns
-	PTR	compat_sys_process_vm_readv	/* 4345 */
-	PTR	compat_sys_process_vm_writev
-	PTR	sys_kcmp
-	PTR	sys_finit_module
-	PTR	sys_sched_setattr
-	PTR	sys_sched_getattr		/* 4350 */
-	PTR	sys_renameat2
-	PTR	sys_seccomp
-	PTR	sys_getrandom
-	PTR	sys_memfd_create
-	PTR	sys_bpf				/* 4355 */
-	PTR	compat_sys_execveat
-	PTR	sys_userfaultfd
-	PTR	sys_membarrier
-	PTR	sys_mlock2
-	PTR	sys_copy_file_range		/* 4360 */
-	PTR	compat_sys_preadv2
-	PTR	compat_sys_pwritev2
-	PTR	sys_pkey_mprotect
-	PTR	sys_pkey_alloc
-	PTR	sys_pkey_free			/* 4365 */
-	PTR	sys_statx
-	PTR	sys_rseq
-	PTR	compat_sys_io_pgetevents
-	.size	sys32_call_table,.-sys32_call_table
+#include "syscall_table_64_o32.S"
diff --git a/arch/mips/kernel/syscall_table_32_o32.S b/arch/mips/kernel/syscall_table_32_o32.S
new file mode 100644
index 0000000..88c4bc6
--- /dev/null
+++ b/arch/mips/kernel/syscall_table_32_o32.S
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define __SYSCALL(nr, entry, nargs) PTR entry
+	
+.align	2
+.type	sys_call_table, @object
+EXPORT(sys_call_table)
+#include <asm/syscall_table_32_o32.h>
diff --git a/arch/mips/kernel/syscall_table_64_64.S b/arch/mips/kernel/syscall_table_64_64.S
new file mode 100644
index 0000000..ae9d930
--- /dev/null
+++ b/arch/mips/kernel/syscall_table_64_64.S
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define __SYSCALL(nr, entry, nargs) PTR entry
+	
+.align	3
+.type	sys_call_table, @object
+EXPORT(sys_call_table)
+#include <asm/syscall_table_64_64.h>
+.size	sys_call_table,.-sys_call_table
diff --git a/arch/mips/kernel/syscall_table_64_n32.S b/arch/mips/kernel/syscall_table_64_n32.S
new file mode 100644
index 0000000..50e9f09
--- /dev/null
+++ b/arch/mips/kernel/syscall_table_64_n32.S
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define __SYSCALL(nr, entry, nargs) PTR entry
+	
+.type	sysn32_call_table, @object
+EXPORT(sysn32_call_table)
+#include <asm/syscall_table_64_n32.h>
+.size	sysn32_call_table,.-sysn32_call_table
diff --git a/arch/mips/kernel/syscall_table_64_o32.S b/arch/mips/kernel/syscall_table_64_o32.S
new file mode 100644
index 0000000..4b294ba
--- /dev/null
+++ b/arch/mips/kernel/syscall_table_64_o32.S
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define __SYSCALL(nr, entry, nargs) PTR entry
+	
+.align	3
+.type	sys32_call_table,@object
+EXPORT(sys32_call_table)
+#include <asm/syscall_table_64_o32.h>
+.size	sys32_call_table,.-sys32_call_table
-- 
1.9.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] mips: Add system call table generation support
  2018-09-14  8:38 ` [PATCH 2/3] mips: Add system call table generation support Firoz Khan
@ 2018-09-14  9:58   ` Arnd Bergmann
  2018-09-18 11:57     ` Firoz Khan
  0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2018-09-14  9:58 UTC (permalink / raw)
  To: Firoz Khan
  Cc: Hauke Mehrtens, Rafał Miłecki,
	open list:RALINK MIPS ARCHITECTURE, Ralf Baechle, Paul Burton,
	James Hogan, gregkh, Philippe Ombredanne, Thomas Gleixner,
	Kate Stewart, y2038 Mailman List, Linux Kernel Mailing List,
	linux-arch, Deepa Dinamani, Marcin Juszkiewicz

On Fri, Sep 14, 2018 at 10:39 AM Firoz Khan <firoz.khan@linaro.org> 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_32/64.tbl file which'll be the input for the
> scripts.

I think it would be best to name the files
o32/n64/n32 instead of 32/64/n32

It would also be helpful to mention why the n32/n64
files cannot be combined into one nfile here.


> +364     32      pkey_alloc                      sys_pkey_alloc
> +365     32      pkey_free                       sys_pkey_free
> +366     32      statx                           sys_statx

You missed the additon of rseq and io_pgetevetns here.

       Arnd

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/3] mips: uapi header and system call table file generation
  2018-09-14  8:38 ` [PATCH 3/3] mips: uapi header and system call table file generation Firoz Khan
@ 2018-09-14 12:55   ` kbuild test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kbuild test robot @ 2018-09-14 12:55 UTC (permalink / raw)
  To: Firoz Khan
  Cc: kbuild-all, Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, Paul Burton, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart, y2038,
	linux-kernel, linux-arch, arnd, deepa.kernel, marcin.juszkiewicz,
	firoz.khan

[-- Attachment #1: Type: text/plain, Size: 1137 bytes --]

Hi Firoz,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.19-rc3 next-20180913]
[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/mips-Add-__NR_syscalls-macro-in-uapi-asm-unistd-h/20180914-184600
config: mips-allnoconfig (attached as .config)
compiler: mips-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=mips 

All errors (new ones prefixed by >>):

   arch/mips/kernel/scall32-o32.o: In function `einval':
>> (.text+0x678): undefined reference to `mipsmt_sys_sched_setaffinity'
>> (.text+0x67c): undefined reference to `mipsmt_sys_sched_getaffinity'

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6041 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-14  8:38 [PATCH 0/3] System call table generation support Firoz Khan
                   ` (2 preceding siblings ...)
  2018-09-14  8:38 ` [PATCH 3/3] mips: uapi header and system call table file generation Firoz Khan
@ 2018-09-17 17:17 ` Paul Burton
  2018-09-18 14:13   ` Firoz Khan
  2018-09-20 14:52   ` Arnd Bergmann
  3 siblings, 2 replies; 13+ messages in thread
From: Paul Burton @ 2018-09-17 17:17 UTC (permalink / raw)
  To: Firoz Khan
  Cc: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart, y2038,
	linux-kernel, linux-arch, arnd, deepa.kernel, marcin.juszkiewicz

Hi Firoz,

On Fri, Sep 14, 2018 at 02:08:31PM +0530, Firoz Khan wrote:
> The purpose of this patch series is:
> 1. We can easily add/modify/delete system call by changing entry 
> in syscall.tbl file. No need to manually edit many files.
> 
> 2. It is easy to unify the system call implementation across all 
> the architectures. 
> 
> 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 manually. 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.

Interesting :)

I actually started on something similar recently with the goals of
reducing the need to adjust both asm/unistd.h & the syscall entry tables
when adding syscalls, clean up asm/unistd.h a bit & make it
easier/cleaner to add support for nanoMIPS & the P32 ABI.

My branch still needed some work but it's here if you're interested:

    git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git wip-mips-syscalls

    https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/log/?h=wip-mips-syscalls

There are some differences:

  - I'd placed syscall numbers the 3 current MIPS ABIs in one table,
    rather than splitting it up. I can see pros & cons to both though so
    I'm not tied to having a single all-encompassing table.

  - I'd mostly inferred the entry point names from the syscall names,
    only specifying them where they differ. Again I'm not particularly
    tied to this.

  - I'd made asm/unistd.h behave like asm-generic/unistd.h with the
    __SYSCALL() macro, where you generate separate syscall_table_*
    headers. I'm fine with that too.

So I'm pretty happy to go with your series, though I agree with Arnd on
the ABI/file naming & the missing syscalls that were added in the 4.18
cycle. We probably need to provide mipsmt_sys_sched_[gs]etaffinity as
aliases to sys_sched_[gs]etaffinity when CONFIG_MIPS_MT_FPAFF isn't
enabled in order to fix the issue the kbuild test robot reported.

But I'm looking forward to v2 :)

Thanks,
    Paul

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] mips: Add system call table generation support
  2018-09-14  9:58   ` Arnd Bergmann
@ 2018-09-18 11:57     ` Firoz Khan
  0 siblings, 0 replies; 13+ messages in thread
From: Firoz Khan @ 2018-09-18 11:57 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Hauke Mehrtens, Rafał Miłecki,
	open list:RALINK MIPS ARCHITECTURE, Ralf Baechle, Paul Burton,
	James Hogan, gregkh, Philippe Ombredanne, Thomas Gleixner,
	Kate Stewart, y2038 Mailman List, Linux Kernel Mailing List,
	linux-arch, Deepa Dinamani, Marcin Juszkiewicz

On 14 September 2018 at 15:28, Arnd Bergmann <arnd@arndb.de> wrote:
> On Fri, Sep 14, 2018 at 10:39 AM Firoz Khan <firoz.khan@linaro.org> 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_32/64.tbl file which'll be the input for the
>> scripts.
>
> I think it would be best to name the files
> o32/n64/n32 instead of 32/64/n32

This is an easy fix. I'll make it in the next version.

>
> It would also be helpful to mention why the n32/n64
> files cannot be combined into one nfile here.

Sure.

>
>
>> +364     32      pkey_alloc                      sys_pkey_alloc
>> +365     32      pkey_free                       sys_pkey_free
>> +366     32      statx                           sys_statx
>
> You missed the additon of rseq and io_pgetevetns here.

As I mentioned in the cover letter:
"I started working system call table generation on 4.17-rc1. I used
marcin's script - https://github.com/hrw/syscalls-table to generate
the syscall.tbl file. And this will be the input to the system call
table generation script. But there are couple system call got add
in the latest rc release. If run Marcin's script on latest release,
It will generate a new syscall.tbl. But I still use the old file -
syscall.tbl and once all review got over I'll update syscall.tbl
alone w.r.to the tip of the kernel. The impact of this thing, few
of the system call won't work."

Hopefully, the next version does have this change. Thanks!

- Firoz

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-17 17:17 ` [PATCH 0/3] System call table generation support Paul Burton
@ 2018-09-18 14:13   ` Firoz Khan
  2018-09-20 14:52   ` Arnd Bergmann
  1 sibling, 0 replies; 13+ messages in thread
From: Firoz Khan @ 2018-09-18 14:13 UTC (permalink / raw)
  To: Paul Burton
  Cc: Hauke Mehrtens, Rafał Miłecki, linux-mips,
	Ralf Baechle, James Hogan, Greg Kroah-Hartman,
	Philippe Ombredanne, Thomas Gleixner, Kate Stewart, y2038,
	linux-kernel, linux-arch, arnd, deepa.kernel, marcin.juszkiewicz

On 17 September 2018 at 22:47, Paul Burton <paul.burton@mips.com> wrote:
> Hi Firoz,
>
> On Fri, Sep 14, 2018 at 02:08:31PM +0530, Firoz Khan wrote:
>> The purpose of this patch series is:
>> 1. We can easily add/modify/delete system call by changing entry
>> in syscall.tbl file. No need to manually edit many files.
>>
>> 2. It is easy to unify the system call implementation across all
>> the architectures.
>>
>> 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 manually. 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.
>
> Interesting :)
>
> I actually started on something similar recently with the goals of
> reducing the need to adjust both asm/unistd.h & the syscall entry tables
> when adding syscalls, clean up asm/unistd.h a bit & make it
> easier/cleaner to add support for nanoMIPS & the P32 ABI.
>
> My branch still needed some work but it's here if you're interested:
>
>     git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git wip-mips-syscalls
>
>     https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/log/?h=wip-mips-syscalls
>
> There are some differences:
>
>   - I'd placed syscall numbers the 3 current MIPS ABIs in one table,
>     rather than splitting it up. I can see pros & cons to both though so
>     I'm not tied to having a single all-encompassing table.
>
>   - I'd mostly inferred the entry point names from the syscall names,
>     only specifying them where they differ. Again I'm not particularly
>     tied to this.
>
>   - I'd made asm/unistd.h behave like asm-generic/unistd.h with the
>     __SYSCALL() macro, where you generate separate syscall_table_*
>     headers. I'm fine with that too.
>
> So I'm pretty happy to go with your series, though I agree with Arnd on
> the ABI/file naming & the missing syscalls that were added in the 4.18
> cycle. We probably need to provide mipsmt_sys_sched_[gs]etaffinity as
> aliases to sys_sched_[gs]etaffinity when CONFIG_MIPS_MT_FPAFF isn't
> enabled in order to fix the issue the kbuild test robot reported.
>
> But I'm looking forward to v2 :)
>
> Thanks,
>     Paul

Thanks for your comments :)

We're planning to come up with a generic script for system call table
generation across all the architecture. So certain things I have to keep
same across  all the architecture.

Having a single script is always our plan for long run. But I have to keep a
separate versions for the start so each architecture can be handled  in one
series. Which would make easier to merge in the initial version.

we could probably add it to scripts/*.sh first, but that requires more
coordination between the architectures.

- Firoz

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-17 17:17 ` [PATCH 0/3] System call table generation support Paul Burton
  2018-09-18 14:13   ` Firoz Khan
@ 2018-09-20 14:52   ` Arnd Bergmann
  2018-09-20 20:48     ` Paul Burton
  1 sibling, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2018-09-20 14:52 UTC (permalink / raw)
  To: Paul Burton
  Cc: Firoz Khan, Hauke Mehrtens, Rafał Miłecki,
	open list:RALINK MIPS ARCHITECTURE, Ralf Baechle, James Hogan,
	gregkh, Philippe Ombredanne, Thomas Gleixner, Kate Stewart,
	y2038 Mailman List, Linux Kernel Mailing List, linux-arch,
	Deepa Dinamani, Marcin Juszkiewicz

On Mon, Sep 17, 2018 at 10:17 AM Paul Burton <paul.burton@mips.com> wrote:
> On Fri, Sep 14, 2018 at 02:08:31PM +0530, Firoz Khan wrote:
> > The purpose of this patch series is:
> > 1. We can easily add/modify/delete system call by changing entry
> > in syscall.tbl file. No need to manually edit many files.
> >
> > 2. It is easy to unify the system call implementation across all
> > the architectures.
> >
> > 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 manually. 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.
>
> Interesting :)
>
> I actually started on something similar recently with the goals of
> reducing the need to adjust both asm/unistd.h & the syscall entry tables
> when adding syscalls, clean up asm/unistd.h a bit & make it
> easier/cleaner to add support for nanoMIPS & the P32 ABI.
>
> My branch still needed some work but it's here if you're interested:
>
>     git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git wip-mips-syscalls
>
>     https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/log/?h=wip-mips-syscalls

This looks like a very nice approach that we would probably prefer if we wanted
to do it only for mips. The way Firoz did it makes sense in the context of doing
it the same way on all architectures, where usually the information is more
accessible to human readers by using the number as the primary key.

Speaking of nanoMIPS, what is your plan for the syscall ABI there?
I can see two ways of approaching it:

a) keep all the MIPSisms in the data structures, and just use a subset of
    o32 that drops all the obsolete entry points
b) start over and stay as close as possible to the generic ABI, using the
    asm-generic versions of both the syscall table and the uapi header
    files instead of the traditional version.

         Arnd

         Arnd

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-20 14:52   ` Arnd Bergmann
@ 2018-09-20 20:48     ` Paul Burton
  2018-09-21  6:09       ` Christoph Hellwig
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Burton @ 2018-09-20 20:48 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Firoz Khan, Hauke Mehrtens, Rafał Miłecki,
	open list:RALINK MIPS ARCHITECTURE, Ralf Baechle, James Hogan,
	gregkh, Philippe Ombredanne, Thomas Gleixner, Kate Stewart,
	y2038 Mailman List, Linux Kernel Mailing List, linux-arch,
	Deepa Dinamani, Marcin Juszkiewicz

Hi Arnd,

On Thu, Sep 20, 2018 at 07:52:03AM -0700, Arnd Bergmann wrote:
> On Mon, Sep 17, 2018 at 10:17 AM Paul Burton <paul.burton@mips.com> wrote:
> > On Fri, Sep 14, 2018 at 02:08:31PM +0530, Firoz Khan wrote:
> > > The purpose of this patch series is:
> > > 1. We can easily add/modify/delete system call by changing entry
> > > in syscall.tbl file. No need to manually edit many files.
> > >
> > > 2. It is easy to unify the system call implementation across all
> > > the architectures.
> > >
> > > 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 manually. 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.
> >
> > Interesting :)
> >
> > I actually started on something similar recently with the goals of
> > reducing the need to adjust both asm/unistd.h & the syscall entry tables
> > when adding syscalls, clean up asm/unistd.h a bit & make it
> > easier/cleaner to add support for nanoMIPS & the P32 ABI.
> >
> > My branch still needed some work but it's here if you're interested:
> >
> >     git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git wip-mips-syscalls
> >
> >     https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/log/?h=wip-mips-syscalls
> 
> This looks like a very nice approach that we would probably prefer if we wanted
> to do it only for mips. The way Firoz did it makes sense in the context of doing
> it the same way on all architectures, where usually the information is more
> accessible to human readers by using the number as the primary key.

Yup, I completely agree that moving all this towards being common
infrastructure for all architectures is a worthy goal :)

> Speaking of nanoMIPS, what is your plan for the syscall ABI there?
> I can see two ways of approaching it:
> 
> a) keep all the MIPSisms in the data structures, and just use a subset of
>     o32 that drops all the obsolete entry points
> b) start over and stay as close as possible to the generic ABI, using the
>     asm-generic versions of both the syscall table and the uapi header
>     files instead of the traditional version.

We've taken option b in our current downstream kernel & that's what I
hope we'll get upstream too. There's no expectation that we'll ever need
to mix pre-nanoMIPS & nanoMIPS ISAs or their associated ABIs across the
kernel/user boundary so it's felt like a great opportunity to clean up &
standardise.

Getting nanoMIPS/p32 support submitted upstream is on my to-do list, but
there's a bunch of prep work to get in first & of course that to-do list
is forever growing. Hopefully in the next couple of cycles.

Thanks,
    Paul

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-20 20:48     ` Paul Burton
@ 2018-09-21  6:09       ` Christoph Hellwig
  2018-09-21 19:32         ` Paul Burton
  0 siblings, 1 reply; 13+ messages in thread
From: Christoph Hellwig @ 2018-09-21  6:09 UTC (permalink / raw)
  To: Paul Burton
  Cc: Arnd Bergmann, Firoz Khan, Hauke Mehrtens,
	Rafał Miłecki, open list:RALINK MIPS ARCHITECTURE,
	Ralf Baechle, James Hogan, gregkh, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart, y2038 Mailman List,
	Linux Kernel Mailing List, linux-arch, Deepa Dinamani,
	Marcin Juszkiewicz

On Thu, Sep 20, 2018 at 08:48:37PM +0000, Paul Burton wrote:
> > Speaking of nanoMIPS, what is your plan for the syscall ABI there?
> > I can see two ways of approaching it:
> > 
> > a) keep all the MIPSisms in the data structures, and just use a subset of
> >     o32 that drops all the obsolete entry points
> > b) start over and stay as close as possible to the generic ABI, using the
> >     asm-generic versions of both the syscall table and the uapi header
> >     files instead of the traditional version.
> 
> We've taken option b in our current downstream kernel & that's what I
> hope we'll get upstream too. There's no expectation that we'll ever need
> to mix pre-nanoMIPS & nanoMIPS ISAs or their associated ABIs across the
> kernel/user boundary so it's felt like a great opportunity to clean up &
> standardise.
> 
> Getting nanoMIPS/p32 support submitted upstream is on my to-do list, but
> there's a bunch of prep work to get in first & of course that to-do list
> is forever growing. Hopefully in the next couple of cycles.

p32 is just the ABI name for nanoMIPS or yet another MIPS ABI?

Either way, І think if there is yet another ABI even on an existing port
we should always aim for the asm-generic syscall table indeed.

Especially for mips where o32 has a rather awkward ABI only explained by
odd decisions more than 20 years ago.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] System call table generation support
  2018-09-21  6:09       ` Christoph Hellwig
@ 2018-09-21 19:32         ` Paul Burton
  0 siblings, 0 replies; 13+ messages in thread
From: Paul Burton @ 2018-09-21 19:32 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Arnd Bergmann, Firoz Khan, Hauke Mehrtens,
	Rafał Miłecki, open list:RALINK MIPS ARCHITECTURE,
	Ralf Baechle, James Hogan, gregkh, Philippe Ombredanne,
	Thomas Gleixner, Kate Stewart, y2038 Mailman List,
	Linux Kernel Mailing List, linux-arch, Deepa Dinamani,
	Marcin Juszkiewicz

Hi Christoph,

On Thu, Sep 20, 2018 at 11:09:41PM -0700, Christoph Hellwig wrote:
> On Thu, Sep 20, 2018 at 08:48:37PM +0000, Paul Burton wrote:
> > > Speaking of nanoMIPS, what is your plan for the syscall ABI there?
> > > I can see two ways of approaching it:
> > > 
> > > a) keep all the MIPSisms in the data structures, and just use a subset of
> > >     o32 that drops all the obsolete entry points
> > > b) start over and stay as close as possible to the generic ABI, using the
> > >     asm-generic versions of both the syscall table and the uapi header
> > >     files instead of the traditional version.
> > 
> > We've taken option b in our current downstream kernel & that's what I
> > hope we'll get upstream too. There's no expectation that we'll ever need
> > to mix pre-nanoMIPS & nanoMIPS ISAs or their associated ABIs across the
> > kernel/user boundary so it's felt like a great opportunity to clean up &
> > standardise.
> > 
> > Getting nanoMIPS/p32 support submitted upstream is on my to-do list, but
> > there's a bunch of prep work to get in first & of course that to-do list
> > is forever growing. Hopefully in the next couple of cycles.
> 
> p32 is just the ABI name for nanoMIPS or yet another MIPS ABI?

p32 is the ABI for nanoMIPS - ie. it is a new ABI, but it's not for use
with pre-nanoMIPS ISAs & nanoMIPS isn't used with o32/n32/n64.

Some of the code density improvements nanoMIPS brings are due to the ISA
& p32 ABI being developed together - eg. the load/store multiple &
save/restore instructions make it easy to save sequences of $sp, $fp,
$ra & some number of the $sN callee-saved registers. Compressed register
number encodings generally include registers that make sense for the p32
ABI, and I'm sure there were other things I've forgotten.

> Either way, І think if there is yet another ABI even on an existing port
> we should always aim for the asm-generic syscall table indeed.
> 
> Especially for mips where o32 has a rather awkward ABI only explained by
> odd decisions more than 20 years ago.

Glad to hear we're on the same page :)

I'm all for being less "special" & couldn't care less if our nanoMIPS
support isn't compatible with IRIX.

Thanks,
    Paul

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, back to index

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-14  8:38 [PATCH 0/3] System call table generation support Firoz Khan
2018-09-14  8:38 ` [PATCH 1/3] mips: Add __NR_syscalls macro in uapi/asm/unistd.h Firoz Khan
2018-09-14  8:38 ` [PATCH 2/3] mips: Add system call table generation support Firoz Khan
2018-09-14  9:58   ` Arnd Bergmann
2018-09-18 11:57     ` Firoz Khan
2018-09-14  8:38 ` [PATCH 3/3] mips: uapi header and system call table file generation Firoz Khan
2018-09-14 12:55   ` kbuild test robot
2018-09-17 17:17 ` [PATCH 0/3] System call table generation support Paul Burton
2018-09-18 14:13   ` Firoz Khan
2018-09-20 14:52   ` Arnd Bergmann
2018-09-20 20:48     ` Paul Burton
2018-09-21  6:09       ` Christoph Hellwig
2018-09-21 19:32         ` Paul Burton

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org linux-kernel@archiver.kernel.org
	public-inbox-index lkml


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox