aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/include/asm/unistd.h1
-rw-r--r--arch/arm/kernel/sys_arm.c82
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c3
3 files changed, 1 insertions, 85 deletions
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index e6eeb2d29953..dd2bf53000fe 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -448,6 +448,7 @@
448 448
449#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) 449#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
450#define __ARCH_WANT_SYS_TIME 450#define __ARCH_WANT_SYS_TIME
451#define __ARCH_WANT_SYS_IPC
451#define __ARCH_WANT_SYS_OLDUMOUNT 452#define __ARCH_WANT_SYS_OLDUMOUNT
452#define __ARCH_WANT_SYS_ALARM 453#define __ARCH_WANT_SYS_ALARM
453#define __ARCH_WANT_SYS_UTIME 454#define __ARCH_WANT_SYS_UTIME
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index a2e0e6f2ea7f..4350f75e578c 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -28,88 +28,6 @@
28#include <linux/ipc.h> 28#include <linux/ipc.h>
29#include <linux/uaccess.h> 29#include <linux/uaccess.h>
30 30
31#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
32/*
33 * sys_ipc() is the de-multiplexer for the SysV IPC calls..
34 *
35 * This is really horribly ugly.
36 */
37asmlinkage int sys_ipc(uint call, int first, int second, int third,
38 void __user *ptr, long fifth)
39{
40 int version, ret;
41
42 version = call >> 16; /* hack for backward compatibility */
43 call &= 0xffff;
44
45 switch (call) {
46 case SEMOP:
47 return sys_semtimedop (first, (struct sembuf __user *)ptr, second, NULL);
48 case SEMTIMEDOP:
49 return sys_semtimedop(first, (struct sembuf __user *)ptr, second,
50 (const struct timespec __user *)fifth);
51
52 case SEMGET:
53 return sys_semget (first, second, third);
54 case SEMCTL: {
55 union semun fourth;
56 if (!ptr)
57 return -EINVAL;
58 if (get_user(fourth.__pad, (void __user * __user *) ptr))
59 return -EFAULT;
60 return sys_semctl (first, second, third, fourth);
61 }
62
63 case MSGSND:
64 return sys_msgsnd(first, (struct msgbuf __user *) ptr,
65 second, third);
66 case MSGRCV:
67 switch (version) {
68 case 0: {
69 struct ipc_kludge tmp;
70 if (!ptr)
71 return -EINVAL;
72 if (copy_from_user(&tmp,(struct ipc_kludge __user *)ptr,
73 sizeof (tmp)))
74 return -EFAULT;
75 return sys_msgrcv (first, tmp.msgp, second,
76 tmp.msgtyp, third);
77 }
78 default:
79 return sys_msgrcv (first,
80 (struct msgbuf __user *) ptr,
81 second, fifth, third);
82 }
83 case MSGGET:
84 return sys_msgget ((key_t) first, second);
85 case MSGCTL:
86 return sys_msgctl(first, second, (struct msqid_ds __user *)ptr);
87
88 case SHMAT:
89 switch (version) {
90 default: {
91 ulong raddr;
92 ret = do_shmat(first, (char __user *)ptr, second, &raddr);
93 if (ret)
94 return ret;
95 return put_user(raddr, (ulong __user *)third);
96 }
97 case 1: /* Of course, we don't support iBCS2! */
98 return -EINVAL;
99 }
100 case SHMDT:
101 return sys_shmdt ((char __user *)ptr);
102 case SHMGET:
103 return sys_shmget (first, second, third);
104 case SHMCTL:
105 return sys_shmctl (first, second,
106 (struct shmid_ds __user *) ptr);
107 default:
108 return -ENOSYS;
109 }
110}
111#endif
112
113/* Fork a new task - this creates a new program thread. 31/* Fork a new task - this creates a new program thread.
114 * This is called indirectly via a small wrapper 32 * This is called indirectly via a small wrapper
115 */ 33 */
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index d59a0cd537f0..33ff678e32f2 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -346,9 +346,6 @@ asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops,
346 return sys_oabi_semtimedop(semid, tsops, nsops, NULL); 346 return sys_oabi_semtimedop(semid, tsops, nsops, NULL);
347} 347}
348 348
349extern asmlinkage int sys_ipc(uint call, int first, int second, int third,
350 void __user *ptr, long fifth);
351
352asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third, 349asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
353 void __user *ptr, long fifth) 350 void __user *ptr, long fifth)
354{ 351{