diff options
| author | Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 2009-01-29 17:25:18 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-29 21:04:44 -0500 |
| commit | e5d9a90c36e05dd080704ea58328c00f64facdc1 (patch) | |
| tree | e393a9216a5ccab3010e01bc6a3f9cee2cd49164 | |
| parent | 299b4eaa302138426d5a9ecd954de1f565d76c94 (diff) | |
alpha: use syscall wrappers
Convert OSF syscalls and add alpha specific SYSCALL_ALIAS() macro.
Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/alpha/Kconfig | 1 | ||||
| -rw-r--r-- | arch/alpha/kernel/entry.S | 2 | ||||
| -rw-r--r-- | arch/alpha/kernel/osf_sys.c | 113 | ||||
| -rw-r--r-- | arch/alpha/kernel/signal.c | 18 | ||||
| -rw-r--r-- | arch/alpha/kernel/systbls.S | 52 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 5 |
6 files changed, 92 insertions, 99 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 6110197757a3..9fb8aae5c391 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
| @@ -8,6 +8,7 @@ config ALPHA | |||
| 8 | select HAVE_AOUT | 8 | select HAVE_AOUT |
| 9 | select HAVE_IDE | 9 | select HAVE_IDE |
| 10 | select HAVE_OPROFILE | 10 | select HAVE_OPROFILE |
| 11 | select HAVE_SYSCALL_WRAPPERS | ||
| 11 | help | 12 | help |
| 12 | The Alpha is a 64-bit general-purpose processor designed and | 13 | The Alpha is a 64-bit general-purpose processor designed and |
| 13 | marketed by the Digital Equipment Corporation of blessed memory, | 14 | marketed by the Digital Equipment Corporation of blessed memory, |
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S index aa2e50cf9857..e4a54b615894 100644 --- a/arch/alpha/kernel/entry.S +++ b/arch/alpha/kernel/entry.S | |||
| @@ -933,7 +933,7 @@ sys_execve: | |||
| 933 | osf_sigprocmask: | 933 | osf_sigprocmask: |
| 934 | .prologue 0 | 934 | .prologue 0 |
| 935 | mov $sp, $18 | 935 | mov $sp, $18 |
| 936 | jmp $31, do_osf_sigprocmask | 936 | jmp $31, sys_osf_sigprocmask |
| 937 | .end osf_sigprocmask | 937 | .end osf_sigprocmask |
| 938 | 938 | ||
| 939 | .align 4 | 939 | .align 4 |
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 18a3ea1aac51..ae41f097864b 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
| @@ -54,8 +54,7 @@ extern int do_pipe(int *); | |||
| 54 | * identical to OSF as we don't return 0 on success, but doing otherwise | 54 | * identical to OSF as we don't return 0 on success, but doing otherwise |
| 55 | * would require changes to libc. Hopefully this is good enough. | 55 | * would require changes to libc. Hopefully this is good enough. |
| 56 | */ | 56 | */ |
| 57 | asmlinkage unsigned long | 57 | SYSCALL_DEFINE1(osf_brk, unsigned long, brk) |
| 58 | osf_brk(unsigned long brk) | ||
| 59 | { | 58 | { |
| 60 | unsigned long retval = sys_brk(brk); | 59 | unsigned long retval = sys_brk(brk); |
| 61 | if (brk && brk != retval) | 60 | if (brk && brk != retval) |
| @@ -66,9 +65,9 @@ osf_brk(unsigned long brk) | |||
| 66 | /* | 65 | /* |
| 67 | * This is pure guess-work.. | 66 | * This is pure guess-work.. |
| 68 | */ | 67 | */ |
| 69 | asmlinkage int | 68 | SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start, |
| 70 | osf_set_program_attributes(unsigned long text_start, unsigned long text_len, | 69 | unsigned long, text_len, unsigned long, bss_start, |
| 71 | unsigned long bss_start, unsigned long bss_len) | 70 | unsigned long, bss_len) |
| 72 | { | 71 | { |
| 73 | struct mm_struct *mm; | 72 | struct mm_struct *mm; |
| 74 | 73 | ||
| @@ -146,9 +145,9 @@ Efault: | |||
| 146 | return -EFAULT; | 145 | return -EFAULT; |
| 147 | } | 146 | } |
| 148 | 147 | ||
| 149 | asmlinkage int | 148 | SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd, |
| 150 | osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent, | 149 | struct osf_dirent __user *, dirent, unsigned int, count, |
| 151 | unsigned int count, long __user *basep) | 150 | long __user *, basep) |
| 152 | { | 151 | { |
| 153 | int error; | 152 | int error; |
| 154 | struct file *file; | 153 | struct file *file; |
| @@ -177,9 +176,9 @@ osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent, | |||
| 177 | 176 | ||
| 178 | #undef NAME_OFFSET | 177 | #undef NAME_OFFSET |
| 179 | 178 | ||
| 180 | asmlinkage unsigned long | 179 | SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len, |
| 181 | osf_mmap(unsigned long addr, unsigned long len, unsigned long prot, | 180 | unsigned long, prot, unsigned long, flags, unsigned long, fd, |
| 182 | unsigned long flags, unsigned long fd, unsigned long off) | 181 | unsigned long, off) |
| 183 | { | 182 | { |
| 184 | struct file *file = NULL; | 183 | struct file *file = NULL; |
| 185 | unsigned long ret = -EBADF; | 184 | unsigned long ret = -EBADF; |
| @@ -254,8 +253,8 @@ do_osf_statfs(struct dentry * dentry, struct osf_statfs __user *buffer, | |||
| 254 | return error; | 253 | return error; |
| 255 | } | 254 | } |
| 256 | 255 | ||
| 257 | asmlinkage int | 256 | SYSCALL_DEFINE3(osf_statfs, char __user *, pathname, |
| 258 | osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz) | 257 | struct osf_statfs __user *, buffer, unsigned long, bufsiz) |
| 259 | { | 258 | { |
| 260 | struct path path; | 259 | struct path path; |
| 261 | int retval; | 260 | int retval; |
| @@ -268,8 +267,8 @@ osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned lon | |||
| 268 | return retval; | 267 | return retval; |
| 269 | } | 268 | } |
| 270 | 269 | ||
| 271 | asmlinkage int | 270 | SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd, |
| 272 | osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz) | 271 | struct osf_statfs __user *, buffer, unsigned long, bufsiz) |
| 273 | { | 272 | { |
| 274 | struct file *file; | 273 | struct file *file; |
| 275 | int retval; | 274 | int retval; |
| @@ -368,8 +367,8 @@ osf_procfs_mount(char *dirname, struct procfs_args __user *args, int flags) | |||
| 368 | return do_mount("", dirname, "proc", flags, NULL); | 367 | return do_mount("", dirname, "proc", flags, NULL); |
| 369 | } | 368 | } |
| 370 | 369 | ||
| 371 | asmlinkage int | 370 | SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path, |
| 372 | osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data) | 371 | int, flag, void __user *, data) |
| 373 | { | 372 | { |
| 374 | int retval = -EINVAL; | 373 | int retval = -EINVAL; |
| 375 | char *name; | 374 | char *name; |
| @@ -399,8 +398,7 @@ osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data) | |||
| 399 | return retval; | 398 | return retval; |
| 400 | } | 399 | } |
| 401 | 400 | ||
| 402 | asmlinkage int | 401 | SYSCALL_DEFINE1(osf_utsname, char __user *, name) |
| 403 | osf_utsname(char __user *name) | ||
| 404 | { | 402 | { |
| 405 | int error; | 403 | int error; |
| 406 | 404 | ||
| @@ -423,14 +421,12 @@ osf_utsname(char __user *name) | |||
| 423 | return error; | 421 | return error; |
| 424 | } | 422 | } |
| 425 | 423 | ||
| 426 | asmlinkage unsigned long | 424 | SYSCALL_DEFINE0(getpagesize) |
| 427 | sys_getpagesize(void) | ||
| 428 | { | 425 | { |
| 429 | return PAGE_SIZE; | 426 | return PAGE_SIZE; |
| 430 | } | 427 | } |
| 431 | 428 | ||
| 432 | asmlinkage unsigned long | 429 | SYSCALL_DEFINE0(getdtablesize) |
| 433 | sys_getdtablesize(void) | ||
| 434 | { | 430 | { |
| 435 | return sysctl_nr_open; | 431 | return sysctl_nr_open; |
| 436 | } | 432 | } |
| @@ -438,8 +434,7 @@ sys_getdtablesize(void) | |||
| 438 | /* | 434 | /* |
| 439 | * For compatibility with OSF/1 only. Use utsname(2) instead. | 435 | * For compatibility with OSF/1 only. Use utsname(2) instead. |
| 440 | */ | 436 | */ |
| 441 | asmlinkage int | 437 | SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen) |
| 442 | osf_getdomainname(char __user *name, int namelen) | ||
| 443 | { | 438 | { |
| 444 | unsigned len; | 439 | unsigned len; |
| 445 | int i; | 440 | int i; |
| @@ -527,8 +522,8 @@ enum pl_code { | |||
| 527 | PL_DEL = 5, PL_FDEL = 6 | 522 | PL_DEL = 5, PL_FDEL = 6 |
| 528 | }; | 523 | }; |
| 529 | 524 | ||
| 530 | asmlinkage long | 525 | SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code, |
| 531 | osf_proplist_syscall(enum pl_code code, union pl_args __user *args) | 526 | union pl_args __user *, args) |
| 532 | { | 527 | { |
| 533 | long error; | 528 | long error; |
| 534 | int __user *min_buf_size_ptr; | 529 | int __user *min_buf_size_ptr; |
| @@ -567,8 +562,8 @@ osf_proplist_syscall(enum pl_code code, union pl_args __user *args) | |||
| 567 | return error; | 562 | return error; |
| 568 | } | 563 | } |
| 569 | 564 | ||
| 570 | asmlinkage int | 565 | SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss, |
| 571 | osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss) | 566 | struct sigstack __user *, uoss) |
| 572 | { | 567 | { |
| 573 | unsigned long usp = rdusp(); | 568 | unsigned long usp = rdusp(); |
| 574 | unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size; | 569 | unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size; |
| @@ -608,8 +603,7 @@ osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss) | |||
| 608 | |||
