x86: signal: cosmetic unification of sys_sigaltstack()
[sfrench/cifs-2.6.git] / arch / x86 / kernel / signal_64.c
index c52244ac19fc4e675caf5a071085ec6af77cd3ff..b6e4fe03a36b6f41e4a01b664ed7723a13667be6 100644 (file)
 # define FIX_EFLAGS    __FIX_EFLAGS
 #endif
 
+#ifdef CONFIG_X86_32
+asmlinkage int sys_sigaltstack(unsigned long bx)
+{
+       /*
+        * This is needed to make gcc realize it doesn't own the
+        * "struct pt_regs"
+        */
+       struct pt_regs *regs = (struct pt_regs *)&bx;
+       const stack_t __user *uss = (const stack_t __user *)bx;
+       stack_t __user *uoss = (stack_t __user *)regs->cx;
+
+       return do_sigaltstack(uss, uoss, regs->sp);
+}
+#else /* !CONFIG_X86_32 */
 asmlinkage long
 sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
                struct pt_regs *regs)
 {
        return do_sigaltstack(uss, uoss, regs->sp);
 }
+#endif /* CONFIG_X86_32 */
 
 #define COPY(x)                        {               \
        err |= __get_user(regs->x, &sc->x);     \