aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:16:33 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:16:33 -0500
commitc6489c147de592af4d0d1c5263e7b4f0e8e7d100 (patch)
tree974f74d5b3c2af8aebddf8b01c2687395107dc7d
parent0aa0203fb43f04714004b2c4ad33b858e240555d (diff)
parent12890d0f61fc4ed4c3afbb1982df382aa9905834 (diff)
Merge commit '12890d0f61fc' into arch-mips
-rw-r--r--arch/mips/kernel/syscall.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
index 201cb76b4df9..107307d583eb 100644
--- a/arch/mips/kernel/syscall.c
+++ b/arch/mips/kernel/syscall.c
@@ -138,10 +138,10 @@ SYSCALL_DEFINE1(set_thread_area, unsigned long, addr)
138 return 0; 138 return 0;
139} 139}
140 140
141static inline int mips_atomic_set(struct pt_regs *regs, 141static inline int mips_atomic_set(unsigned long addr, unsigned long new)
142 unsigned long addr, unsigned long new)
143{ 142{
144 unsigned long old, tmp; 143 unsigned long old, tmp;
144 struct pt_regs *regs;
145 unsigned int err; 145 unsigned int err;
146 146
147 if (unlikely(addr & 3)) 147 if (unlikely(addr & 3))
@@ -222,6 +222,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
222 if (unlikely(err)) 222 if (unlikely(err))
223 return err; 223 return err;
224 224
225 regs = current_pt_regs();
225 regs->regs[2] = old; 226 regs->regs[2] = old;
226 regs->regs[7] = 0; /* No error */ 227 regs->regs[7] = 0; /* No error */
227 228
@@ -235,22 +236,14 @@ static inline int mips_atomic_set(struct pt_regs *regs,
235 : "r" (regs)); 236 : "r" (regs));
236 237
237 /* unreached. Honestly. */ 238 /* unreached. Honestly. */
238 while (1); 239 unreachable();
239} 240}
240 241
241save_static_function(sys_sysmips); 242SYSCALL_DEFINE3(sysmips, long, cmd, long, arg1, long, arg2)
242static int __used noinline
243_sys_sysmips(nabi_no_regargs struct pt_regs regs)
244{ 243{
245 long cmd, arg1, arg2;
246
247 cmd = regs.regs[4];
248 arg1 = regs.regs[5];
249 arg2 = regs.regs[6];
250
251 switch (cmd) { 244 switch (cmd) {
252 case MIPS_ATOMIC_SET: 245 case MIPS_ATOMIC_SET:
253 return mips_atomic_set(&regs, arg1, arg2); 246 return mips_atomic_set(arg1, arg2);
254 247
255 case MIPS_FIXADE: 248 case MIPS_FIXADE:
256 if (arg1 & ~3) 249 if (arg1 & ~3)