# Pull the signals_enabled bit apart into signal-specific bits.  This is
# used by unmask_* in the genirq patch.
#
# This is used by unmask_* in genirq.

Index: linux-2.6.17/arch/um/os-Linux/signal.c
===================================================================
--- linux-2.6.17.orig/arch/um/os-Linux/signal.c	2007-11-19 11:58:10.000000000 -0500
+++ linux-2.6.17/arch/um/os-Linux/signal.c	2008-01-07 12:51:10.000000000 -0500
@@ -31,7 +31,7 @@
  * block/unblock_signals.  I don't want modifications cached in a
  * register - they must go straight to memory.
  */
-static volatile int signals_enabled = 1;
+static volatile int signals_enabled = 0;
 static volatile int pending = 0;
 
 void sig_handler(int sig, struct sigcontext *sc)
@@ -39,7 +39,7 @@ void sig_handler(int sig, struct sigcont
 	int enabled;
 
 	enabled = signals_enabled;
-	if (!enabled && (sig == SIGIO)) {
+	if (!(enabled & SIGIO_MASK) && (sig == SIGIO)) {
 		pending |= SIGIO_MASK;
 		return;
 	}
@@ -67,7 +67,7 @@ void alarm_handler(int sig, struct sigco
 	int enabled;
 
 	enabled = signals_enabled;
-	if (!signals_enabled) {
+	if (!(enabled & SIGVTALRM_MASK)) {
 		pending |= SIGVTALRM_MASK;
 		return;
 	}
@@ -203,7 +203,7 @@ void unblock_signals(void)
 {
 	int save_pending;
 
-	if (signals_enabled == 1)
+	if (signals_enabled == (SIGIO_MASK | SIGVTALRM_MASK))
 		return;
 
 	/*
@@ -216,7 +216,7 @@ void unblock_signals(void)
 		 * Save and reset save_pending after enabling signals.  This
 		 * way, pending won't be changed while we're reading it.
 		 */
-		signals_enabled = 1;
+		signals_enabled = SIGIO_MASK | SIGVTALRM_MASK;
 
 		/*
 		 * Setting signals_enabled and reading pending must