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))
        if (unlikely(err))
                return err;
 
+       regs = current_pt_regs();
        regs->regs[2] = old;
        regs->regs[7] = 0;      /* No error */
 
        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)