Only alpha and sparc are unusual - they have ka_restorer in it.
And nobody needs that exposed to userland.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
        sigset_t        sa_mask;        /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-       __sigrestore_t ka_restorer;
-};
+#define __ARCH_HAS_KA_RESTORER
 #include <asm/sigcontext.h>
 #endif
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #include <asm/sigcontext.h>
 #endif
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #include <asm/sigcontext.h>
 #undef __HAVE_ARCH_SIG_BITOPS
 
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
 #include <asm/sigcontext.h>
 
 #endif
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #include <asm/sigcontext.h>
 #undef __HAVE_ARCH_SIG_BITOPS
 
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #  include <asm/sigcontext.h>
 
 # endif /* !__ASSEMBLY__ */
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
 #include <asm/sigcontext.h>
 
 #undef __HAVE_ARCH_SIG_BITOPS
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
 #include <asm/sigcontext.h>
 
 #ifndef CONFIG_CPU_HAS_NO_BITFIELDS
 
        sigset_t        sa_mask;
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 /* IRIX compatible stack_t  */
 typedef struct sigaltstack {
        void __user *ss_sp;
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
 #include <asm/sigcontext.h>
 
 #endif /* _ASM_SIGNAL_H */
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #include <asm/sigcontext.h>
 
 #endif /* !__ASSEMBLY */
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 typedef struct sigaltstack {
        void __user *ss_sp;
        int ss_flags;
 
         sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-        struct sigaction sa;
-};
-
 #endif
 
  */
 #define SA_STATIC_ALLOC         0x8000
 
-struct k_sigaction {
-       struct                  __new_sigaction sa;
-       void                    __user *ka_restorer;
-};
+#define __ARCH_HAS_KA_RESTORER
 
 #endif /* !(__ASSEMBLY__) */
 #endif /* !(__SPARC_SIGNAL_H) */
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
-#else /* __i386__ */
 #endif /* !__i386__ */
 #include <asm/sigcontext.h>
 
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #endif /* !__i386__ */
 
 typedef struct sigaltstack {
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 #include <asm/sigcontext.h>
 
 #endif /* __ASSEMBLY__ */
 
 extern int show_unhandled_signals;
 extern int sigsuspend(sigset_t *);
 
+struct k_sigaction {
+       struct sigaction sa;
+#ifdef __ARCH_HAS_KA_RESTORER
+       __sigrestore_t ka_restorer;
+#endif
+};
+
 extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie);
 extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping);
 extern void exit_signals(struct task_struct *tsk);
 
        sigset_t sa_mask;               /* mask last for extensibility */
 };
 
-struct k_sigaction {
-       struct sigaction sa;
-};
-
 typedef struct sigaltstack {
        void __user *ss_sp;
        int ss_flags;