patch-2.1.42 linux/arch/sparc64/kernel/signal32.c

Next file: linux/arch/sparc64/kernel/sys_sparc32.c
Previous file: linux/arch/sparc64/kernel/signal.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.41/linux/arch/sparc64/kernel/signal32.c linux/arch/sparc64/kernel/signal32.c
@@ -1,4 +1,4 @@
-/*  $Id: signal32.c,v 1.8 1997/05/18 08:42:15 davem Exp $
+/*  $Id: signal32.c,v 1.10 1997/05/27 06:28:07 davem Exp $
  *  arch/sparc64/kernel/signal32.c
  *
  *  Copyright (C) 1991, 1992  Linus Torvalds
@@ -398,8 +398,15 @@
 	regs->tnpc = (regs->tpc + 4);
 
 	/* Flush instruction space. */
-	__asm__ __volatile__ ("flush %0; flush %0 + 4" : : "r" (&(sf->insns[0])));
-		
+	__asm__ __volatile__("
+	membar		#StoreStore
+	stxa		%%g0, [%0] %2
+	stxa		%%g0, [%1] %2
+	flush		%%g4
+	" : /* no outputs */
+	  : "r" (((unsigned long)&(sf->insns[0])) & ~(PAGE_MASK)),
+	    "r" ((((unsigned long)&(sf->insns[0])) & ~(PAGE_MASK)) + PAGE_SIZE),
+	    "i" (ASI_IC_TAG));
 }
 
 /* Setup a Solaris stack frame */
@@ -677,7 +684,7 @@
 	
 	while ((signr = current->signal & mask) != 0) {
 		signr = ffz(~signr);
-		clear_bit(signr, &current->signal);
+		clear_bit(signr + 32, &current->signal);
 		sa = current->sig->action + signr;
 		signr++;
 		if ((current->flags & PF_PTRACED) && signr != SIGKILL) {

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov