diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 22d4702764087035f1af3429bdf1af63164400bc..686968c10897441c6c7d1e253a511b398732de12 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -51,6 +51,7 @@ config CRIS
 	select MODULES_USE_ELF_RELA
 	select CLONE_BACKWARDS2
 	select GENERIC_SIGALTSTACK
+	select OLD_SIGSUSPEND
 
 config HZ
 	int
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c
index 9570946a6958f33e3bc2dbc696b181d05fbe46f8..e53c1b455c356d810ee697a95c7a9ab075a58873 100644
--- a/arch/cris/arch-v10/kernel/signal.c
+++ b/arch/cris/arch-v10/kernel/signal.c
@@ -41,18 +41,6 @@
 
 void do_signal(int canrestart, struct pt_regs *regs);
 
-/*
- * Atomically swap in the new signal mask, and wait for a signal.  Define
- * dummy arguments to be able to reach the regs argument.  (Note that this
- * arrangement relies on old_sigset_t occupying one register.)
- */
-int sys_sigsuspend(old_sigset_t mask)
-{
-	sigset_t blocked;
-	siginitset(&blocked, mask);
-	return sigsuspend(&blocked);
-}
-
 int sys_sigaction(int sig, const struct old_sigaction __user *act,
 	struct old_sigaction *oact)
 {
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c
index 1f29c692b7effcdcaad0b376481cc379225e09c9..4ccf144b49a9bbbefd6b881eeb402bb862c35209 100644
--- a/arch/cris/arch-v32/kernel/signal.c
+++ b/arch/cris/arch-v32/kernel/signal.c
@@ -51,17 +51,6 @@ struct rt_signal_frame {
 void do_signal(int restart, struct pt_regs *regs);
 void keep_debug_flags(unsigned long oldccs, unsigned long oldspc,
 		      struct pt_regs *regs);
-/*
- * Swap in the new signal mask, and wait for a signal. Define some
- * dummy arguments to be able to reach the regs argument.
- */
-int
-sys_sigsuspend(old_sigset_t mask)
-{
-	sigset_t blocked;
-	siginitset(&blocked, mask);
-	return sigsuspend(&blocked);
-}
 
 int
 sys_sigaction(int signal, const struct old_sigaction *act,