extra-y        := head.o init_task.o vmlinux.lds
 
 obj-y  := debugtraps.o io.o io_generic.o irq.o machvec.o process_32.o \
-          ptrace_32.o semaphore.o setup.o signal.o sys_sh.o syscalls.o \
+          ptrace_32.o semaphore.o setup.o signal_32.o sys_sh.o syscalls.o \
           time.o topology.o traps.o
 
 obj-y                          += cpu/ timers/
 
 extra-y        := head.o init_task.o vmlinux.lds
 
 obj-y  := debugtraps.o io.o io_generic.o irq.o machvec.o process_64.o \
-          ptrace_64.o semaphore.o setup.o signal.o sys_sh.o syscalls.o \
+          ptrace_64.o semaphore.o setup.o signal_64.o sys_sh.o syscalls.o \
           time.o topology.o traps.o
 
 obj-y                          += cpu/ timers/
 
 #include <asm/ucontext.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
-
+#include <asm/cacheflush.h>
 
 #define REG_RET 9
 #define REG_ARG1 2
 #else
 static inline int
 restore_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc)
-{}
+{
+       return 0;
+}
 static inline int
 setup_sigcontext_fpu(struct pt_regs *regs, struct sigcontext __user *sc)
-{}
+{
+       return 0;
+}
 #endif
 
 static int
 
 struct sigcontext {
        unsigned long   oldmask;
 
+#if defined(__SH5__) || defined(CONFIG_CPU_SH5)
+       /* CPU registers */
+       unsigned long long sc_regs[63];
+       unsigned long long sc_tregs[8];
+       unsigned long long sc_pc;
+       unsigned long long sc_sr;
+
+       /* FPU registers */
+       unsigned long long sc_fpregs[32];
+       unsigned int sc_fpscr;
+       unsigned int sc_fpvalid;
+#else
        /* CPU registers */
        unsigned long sc_regs[16];
        unsigned long sc_pc;
        unsigned int sc_fpul;
        unsigned int sc_ownedfp;
 #endif
+#endif
 };
 
 #endif /* __ASM_SH_SIGCONTEXT_H */