|
@@ -138,10 +138,10 @@ SYSCALL_DEFINE1(set_thread_area, unsigned long, addr)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static inline int mips_atomic_set(struct pt_regs *regs,
|
|
|
- unsigned long addr, unsigned long new)
|
|
|
+static inline int mips_atomic_set(unsigned long addr, unsigned long new)
|
|
|
{
|
|
|
unsigned long old, tmp;
|
|
|
+ struct pt_regs *regs;
|
|
|
unsigned int err;
|
|
|
|
|
|
if (unlikely(addr & 3))
|
|
@@ -222,6 +222,7 @@ static inline int mips_atomic_set(struct pt_regs *regs,
|
|
|
if (unlikely(err))
|
|
|
return err;
|
|
|
|
|
|
+ regs = current_pt_regs();
|
|
|
regs->regs[2] = old;
|
|
|
regs->regs[7] = 0; /* No error */
|
|
|
|
|
@@ -238,19 +239,11 @@ static inline int mips_atomic_set(struct pt_regs *regs,
|
|
|
unreachable();
|
|
|
}
|
|
|
|
|
|
-save_static_function(sys_sysmips);
|
|
|
-static int __used noinline
|
|
|
-_sys_sysmips(nabi_no_regargs struct pt_regs regs)
|
|
|
+SYSCALL_DEFINE3(sysmips, long, cmd, long, arg1, long, arg2)
|
|
|
{
|
|
|
- long cmd, arg1, arg2;
|
|
|
-
|
|
|
- cmd = regs.regs[4];
|
|
|
- arg1 = regs.regs[5];
|
|
|
- arg2 = regs.regs[6];
|
|
|
-
|
|
|
switch (cmd) {
|
|
|
case MIPS_ATOMIC_SET:
|
|
|
- return mips_atomic_set(®s, arg1, arg2);
|
|
|
+ return mips_atomic_set(arg1, arg2);
|
|
|
|
|
|
case MIPS_FIXADE:
|
|
|
if (arg1 & ~3)
|