[SPARC]: Fix robust futex syscalls and wire up migrate_pages.

When I added the entries for the robust futex syscall entries, I
forgot to bump NR_SYSCALLS.  The current situation is error-prone
because NR_SYSCALLS lives in entry.S where the system call limit
checks are enforced.  Move the definition to asm/unistd.h in order to
make this mistake much more difficult to make.

And wire up sys_migrate_pages since the powerpc folks implemented the
compat wrapper for us.

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2006-11-05 16:51:03 -08:00
Родитель 10b1fbdb0a
Коммит 59359ff877
6 изменённых файлов: 23 добавлений и 15 удалений

Просмотреть файл

@ -32,13 +32,12 @@
#include <asm/mxcc.h> #include <asm/mxcc.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
#include <asm/param.h> #include <asm/param.h>
#include <asm/unistd.h>
#include <asm/asmmacro.h> #include <asm/asmmacro.h>
#define curptr g6 #define curptr g6
#define NR_SYSCALLS 300 /* Each OS is different... */
/* These are just handy. */ /* These are just handy. */
#define _SV save %sp, -STACKFRAME_SZ, %sp #define _SV save %sp, -STACKFRAME_SZ, %sp
#define _RS restore #define _RS restore

Просмотреть файл

@ -78,7 +78,7 @@ sys_call_table:
/*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
/*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .long sys_set_robust_list, sys_get_robust_list /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages
#ifdef CONFIG_SUNOS_EMUL #ifdef CONFIG_SUNOS_EMUL
/* Now the SunOS syscall table. */ /* Now the SunOS syscall table. */
@ -190,6 +190,7 @@ sunos_sys_table:
/*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys /*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys, sunos_nosys, sunos_nosys .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys, sunos_nosys, sunos_nosys .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys, sunos_nosys, sunos_nosys .long sunos_nosys
/*300*/ .long sunos_nosys, sunos_nosys, sunos_nosys
#endif #endif

Просмотреть файл

@ -22,11 +22,10 @@
#include <asm/auxio.h> #include <asm/auxio.h>
#include <asm/sfafsr.h> #include <asm/sfafsr.h>
#include <asm/pil.h> #include <asm/pil.h>
#include <asm/unistd.h>
#define curptr g6 #define curptr g6
#define NR_SYSCALLS 300 /* Each OS is different... */
.text .text
.align 32 .align 32

Просмотреть файл

@ -79,7 +79,7 @@ sys_call_table32:
.word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
/*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
@ -149,7 +149,7 @@ sys_call_table:
.word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64
/*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat
.word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .word sys_set_robust_list, sys_get_robust_list /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages
#if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \
defined(CONFIG_SOLARIS_EMUL_MODULE) defined(CONFIG_SOLARIS_EMUL_MODULE)
@ -262,5 +262,7 @@ sunos_sys_table:
/*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys /*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys
/*300*/ .word sunos_nosys, sunos_nosys, sunos_nosys
#endif #endif

Просмотреть файл

@ -318,12 +318,15 @@
#define __NR_unshare 299 #define __NR_unshare 299
#define __NR_set_robust_list 300 #define __NR_set_robust_list 300
#define __NR_get_robust_list 301 #define __NR_get_robust_list 301
#define __NR_migrate_pages 302
#define NR_SYSCALLS 303
#ifdef __KERNEL__ #ifdef __KERNEL__
/* WARNING: You MAY NOT add syscall numbers larger than 301, since /* WARNING: You MAY NOT add syscall numbers larger than 302, since
* all of the syscall tables in the Sparc kernel are * all of the syscall tables in the Sparc kernel are
* sized to have 301 entries (starting at zero). Therefore * sized to have 302 entries (starting at zero). Therefore
* find a free slot in the 0-301 range. * find a free slot in the 0-302 range.
*/ */
#define _syscall0(type,name) \ #define _syscall0(type,name) \

Просмотреть файл

@ -320,12 +320,16 @@
#define __NR_unshare 299 #define __NR_unshare 299
#define __NR_set_robust_list 300 #define __NR_set_robust_list 300
#define __NR_get_robust_list 301 #define __NR_get_robust_list 301
#define __NR_migrate_pages 302
#define NR_SYSCALLS 303
#ifdef __KERNEL__ #ifdef __KERNEL__
/* WARNING: You MAY NOT add syscall numbers larger than 301, since
/* WARNING: You MAY NOT add syscall numbers larger than 302, since
* all of the syscall tables in the Sparc kernel are * all of the syscall tables in the Sparc kernel are
* sized to have 301 entries (starting at zero). Therefore * sized to have 302 entries (starting at zero). Therefore
* find a free slot in the 0-301 range. * find a free slot in the 0-302 range.
*/ */
#define _syscall0(type,name) \ #define _syscall0(type,name) \