diff options
author | David S. Miller <davem@davemloft.net> | 2006-11-05 19:51:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-11-05 19:51:03 -0500 |
commit | 59359ff87700f5e742c96a55da9cf0819984c128 (patch) | |
tree | 5412ff45e44bd8fe37fc408604a737c83fc3d40b | |
parent | 10b1fbdb0a0ca91847a534ad26d0bc250c25b74f (diff) |
[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>
-rw-r--r-- | arch/sparc/kernel/entry.S | 3 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls.S | 5 | ||||
-rw-r--r-- | arch/sparc64/kernel/entry.S | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 8 | ||||
-rw-r--r-- | include/asm-sparc/unistd.h | 9 | ||||
-rw-r--r-- | include/asm-sparc64/unistd.h | 10 |
6 files changed, 23 insertions, 15 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S index a4edff4c3be..831f540251f 100644 --- a/arch/sparc/kernel/entry.S +++ b/arch/sparc/kernel/entry.S | |||
@@ -32,13 +32,12 @@ | |||
32 | #include <asm/mxcc.h> | 32 | #include <asm/mxcc.h> |
33 | #include <asm/thread_info.h> | 33 | #include <asm/thread_info.h> |
34 | #include <asm/param.h> | 34 | #include <asm/param.h> |
35 | #include <asm/unistd.h> | ||
35 | 36 | ||
36 | #include <asm/asmmacro.h> | 37 | #include <asm/asmmacro.h> |
37 | 38 | ||
38 | #define curptr g6 | 39 | #define curptr g6 |
39 | 40 | ||
40 | #define NR_SYSCALLS 300 /* Each OS is different... */ | ||
41 | |||
42 | /* These are just handy. */ | 41 | /* These are just handy. */ |
43 | #define _SV save %sp, -STACKFRAME_SZ, %sp | 42 | #define _SV save %sp, -STACKFRAME_SZ, %sp |
44 | #define _RS restore | 43 | #define _RS restore |
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index 10df38eeae0..ea75ca56905 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S | |||
@@ -78,7 +78,7 @@ sys_call_table: | |||
78 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 78 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
79 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 79 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list | 81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages |
82 | 82 | ||
83 | #ifdef CONFIG_SUNOS_EMUL | 83 | #ifdef CONFIG_SUNOS_EMUL |
84 | /* Now the SunOS syscall table. */ | 84 | /* Now the SunOS syscall table. */ |
@@ -190,6 +190,7 @@ sunos_sys_table: | |||
190 | /*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys | 190 | /*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys |
191 | .long sunos_nosys, sunos_nosys, sunos_nosys | 191 | .long sunos_nosys, sunos_nosys, sunos_nosys |
192 | .long sunos_nosys, sunos_nosys, sunos_nosys | 192 | .long sunos_nosys, sunos_nosys, sunos_nosys |
193 | .long sunos_nosys, sunos_nosys, sunos_nosys | 193 | .long sunos_nosys |
194 | /*300*/ .long sunos_nosys, sunos_nosys, sunos_nosys | ||
194 | 195 | ||
195 | #endif | 196 | #endif |
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index 0aaa35fc5a9..6f28bec0a9b 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -22,11 +22,10 @@ | |||
22 | #include <asm/auxio.h> | 22 | #include <asm/auxio.h> |
23 | #include <asm/sfafsr.h> | 23 | #include <asm/sfafsr.h> |
24 | #include <asm/pil.h> | 24 | #include <asm/pil.h> |
25 | #include <asm/unistd.h> | ||
25 | 26 | ||
26 | #define curptr g6 | 27 | #define curptr g6 |
27 | 28 | ||
28 | #define NR_SYSCALLS 300 /* Each OS is different... */ | ||
29 | |||
30 | .text | 29 | .text |
31 | .align 32 | 30 | .align 32 |
32 | 31 | ||
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 419a63fca17..9a8026797ac 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -79,7 +79,7 @@ sys_call_table32: | |||
79 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 | 79 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 |
80 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 80 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |
82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list | 82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages |
83 | 83 | ||
84 | #endif /* CONFIG_COMPAT */ | 84 | #endif /* CONFIG_COMPAT */ |
85 | 85 | ||
@@ -149,7 +149,7 @@ sys_call_table: | |||
149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
150 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 150 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
152 | /*300*/ .word sys_set_robust_list, sys_get_robust_list | 152 | /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages |
153 | 153 | ||
154 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ | 154 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ |
155 | defined(CONFIG_SOLARIS_EMUL_MODULE) | 155 | defined(CONFIG_SOLARIS_EMUL_MODULE) |
@@ -262,5 +262,7 @@ sunos_sys_table: | |||
262 | /*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys | 262 | /*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys |
263 | .word sunos_nosys, sunos_nosys, sunos_nosys | 263 | .word sunos_nosys, sunos_nosys, sunos_nosys |
264 | .word sunos_nosys, sunos_nosys, sunos_nosys | 264 | .word sunos_nosys, sunos_nosys, sunos_nosys |
265 | .word sunos_nosys, sunos_nosys, sunos_nosys | 265 | .word sunos_nosys |
266 | /*300*/ .word sunos_nosys, sunos_nosys, sunos_nosys | ||
267 | |||
266 | #endif | 268 | #endif |
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index c7a495afc82..f7827fa4cd5 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h | |||
@@ -318,12 +318,15 @@ | |||
318 | #define __NR_unshare 299 | 318 | #define __NR_unshare 299 |
319 | #define __NR_set_robust_list 300 | 319 | #define __NR_set_robust_list 300 |
320 | #define __NR_get_robust_list 301 | 320 | #define __NR_get_robust_list 301 |
321 | #define __NR_migrate_pages 302 | ||
322 | |||
323 | #define NR_SYSCALLS 303 | ||
321 | 324 | ||
322 | #ifdef __KERNEL__ | 325 | #ifdef __KERNEL__ |
323 | /* WARNING: You MAY NOT add syscall numbers larger than 301, since | 326 | /* WARNING: You MAY NOT add syscall numbers larger than 302, since |
324 | * all of the syscall tables in the Sparc kernel are | 327 | * all of the syscall tables in the Sparc kernel are |
325 | * sized to have 301 entries (starting at zero). Therefore | 328 | * sized to have 302 entries (starting at zero). Therefore |
326 | * find a free slot in the 0-301 range. | 329 | * find a free slot in the 0-302 range. |
327 | */ | 330 | */ |
328 | 331 | ||
329 | #define _syscall0(type,name) \ | 332 | #define _syscall0(type,name) \ |
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index 124cf076717..63669dad0d7 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h | |||
@@ -320,12 +320,16 @@ | |||
320 | #define __NR_unshare 299 | 320 | #define __NR_unshare 299 |
321 | #define __NR_set_robust_list 300 | 321 | #define __NR_set_robust_list 300 |
322 | #define __NR_get_robust_list 301 | 322 | #define __NR_get_robust_list 301 |
323 | #define __NR_migrate_pages 302 | ||
324 | |||
325 | #define NR_SYSCALLS 303 | ||
323 | 326 | ||
324 | #ifdef __KERNEL__ | 327 | #ifdef __KERNEL__ |
325 | /* WARNING: You MAY NOT add syscall numbers larger than 301, since | 328 | |
329 | /* WARNING: You MAY NOT add syscall numbers larger than 302, since | ||
326 | * all of the syscall tables in the Sparc kernel are | 330 | * all of the syscall tables in the Sparc kernel are |
327 | * sized to have 301 entries (starting at zero). Therefore | 331 | * sized to have 302 entries (starting at zero). Therefore |
328 | * find a free slot in the 0-301 range. | 332 | * find a free slot in the 0-302 range. |
329 | */ | 333 | */ |
330 | 334 | ||
331 | #define _syscall0(type,name) \ | 335 | #define _syscall0(type,name) \ |