diff options
Diffstat (limited to 'arch/sparc')
| -rw-r--r-- | arch/sparc/include/asm/unistd.h | 4 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sparc_32.c | 113 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sparc_64.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/systbls.h | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/systbls_64.S | 2 | 
5 files changed, 6 insertions, 117 deletions
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h index cb4b9bfd0d8..d0b3b01ac9d 100644 --- a/arch/sparc/include/asm/unistd.h +++ b/arch/sparc/include/asm/unistd.h @@ -432,7 +432,9 @@  #define __ARCH_WANT_SYS_SIGPENDING  #define __ARCH_WANT_SYS_SIGPROCMASK  #define __ARCH_WANT_SYS_RT_SIGSUSPEND -#ifndef __32bit_syscall_numbers__ +#ifdef __32bit_syscall_numbers__ +#define __ARCH_WANT_SYS_IPC +#else  #define __ARCH_WANT_COMPAT_SYS_TIME  #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND  #endif diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c index 3a82e65d8db..ee995b7dae7 100644 --- a/arch/sparc/kernel/sys_sparc_32.c +++ b/arch/sparc/kernel/sys_sparc_32.c @@ -98,119 +98,6 @@ out:  	return error;  } -/* - * sys_ipc() is the de-multiplexer for the SysV IPC calls.. - * - * This is really horribly ugly. - */ - -asmlinkage int sys_ipc (uint call, int first, int second, int third, void __user *ptr, long fifth) -{ -	int version, err; - -	version = call >> 16; /* hack for backward compatibility */ -	call &= 0xffff; - -	if (call <= SEMCTL) -		switch (call) { -		case SEMOP: -			err = sys_semtimedop (first, (struct sembuf __user *)ptr, second, NULL); -			goto out; -		case SEMTIMEDOP: -			err = sys_semtimedop (first, (struct sembuf __user *)ptr, second, (const struct timespec __user *) fifth); -			goto out; -		case SEMGET: -			err = sys_semget (first, second, third); -			goto out; -		case SEMCTL: { -			union semun fourth; -			err = -EINVAL; -			if (!ptr) -				goto out; -			err = -EFAULT; -			if (get_user(fourth.__pad, -				     (void __user * __user *)ptr)) -				goto out; -			err = sys_semctl (first, second, third, fourth); -			goto out; -			} -		default: -			err = -ENOSYS; -			goto out; -		} -	if (call <= MSGCTL)  -		switch (call) { -		case MSGSND: -			err = sys_msgsnd (first, (struct msgbuf __user *) ptr,  -					  second, third); -			goto out; -		case MSGRCV: -			switch (version) { -			case 0: { -				struct ipc_kludge tmp; -				err = -EINVAL; -				if (!ptr) -					goto out; -				err = -EFAULT; -				if (copy_from_user(&tmp, (struct ipc_kludge __user *) ptr, sizeof (tmp))) -					goto out; -				err = sys_msgrcv (first, tmp.msgp, second, tmp.msgtyp, third); -				goto out; -				} -			case 1: default: -				err = sys_msgrcv (first, -						  (struct msgbuf __user *) ptr, -						  second, fifth, third); -				goto out; -			} -		case MSGGET: -			err = sys_msgget ((key_t) first, second); -			goto out; -		case MSGCTL: -			err = sys_msgctl (first, second, (struct msqid_ds __user *) ptr); -			goto out; -		default: -			err = -ENOSYS; -			goto out; -		} -	if (call <= SHMCTL)  -		switch (call) { -		case SHMAT: -			switch (version) { -			case 0: default: { -				ulong raddr; -				err = do_shmat (first, (char __user *) ptr, second, &raddr); -				if (err) -					goto out; -				err = -EFAULT; -				if (put_user (raddr, (ulong __user *) third)) -					goto out; -				err = 0; -				goto out; -				} -			case 1:	/* iBCS2 emulator entry point */ -				err = -EINVAL; -				goto out; -			} -		case SHMDT:  -			err = sys_shmdt ((char __user *)ptr); -			goto out; -		case SHMGET: -			err = sys_shmget (first, second, third); -			goto out; -		case SHMCTL: -			err = sys_shmctl (first, second, (struct shmid_ds __user *) ptr); -			goto out; -		default: -			err = -ENOSYS; -			goto out; -		} -	else -		err = -ENOSYS; -out: -	return err; -} -  int sparc_mmap_check(unsigned long addr, unsigned long len)  {  	if (ARCH_SUN4C && diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index cb1bef6f14b..45410e93962 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c @@ -426,7 +426,7 @@ out:   * This is really horribly ugly.   */ -SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, +SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second,  		unsigned long, third, void __user *, ptr, long, fifth)  {  	long err; diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h index 68312fe8da7..2c331c37e74 100644 --- a/arch/sparc/kernel/systbls.h +++ b/arch/sparc/kernel/systbls.h @@ -10,7 +10,7 @@ struct new_utsname;  extern asmlinkage unsigned long sys_getpagesize(void);  extern asmlinkage long sparc_pipe(struct pt_regs *regs); -extern asmlinkage long sys_ipc(unsigned int call, int first, +extern asmlinkage long sys_sparc_ipc(unsigned int call, int first,  			       unsigned long second,  			       unsigned long third,  			       void __user *ptr, long fifth); diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index 17614251fb6..30ca2b1d3a1 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S @@ -136,7 +136,7 @@ sys_call_table:  /*200*/	.word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall  	.word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64  /*210*/	.word sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo -	.word sys_ipc, sys_nis_syscall, sys_clone, sys_ioprio_get, sys_adjtimex +	.word sys_sparc_ipc, sys_nis_syscall, sys_clone, sys_ioprio_get, sys_adjtimex  /*220*/	.word sys_nis_syscall, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid  	.word sys_bdflush, sys_sysfs, sys_nis_syscall, sys_setfsuid, sys_setfsgid  /*230*/	.word sys_select, sys_nis_syscall, sys_splice, sys_stime, sys_statfs64  |