Module Name:    src
Committed By:   rmind
Date:           Mon May 23 18:40:30 UTC 2011

Modified Files:
        src/sys/arch/sparc/sparc: intr.c

Log Message:
nmi_hard: convert nmi_hard_wait to use atomics.

OK mrg@


To generate a diff of this commit:
cvs rdiff -u -r1.114 -r1.115 src/sys/arch/sparc/sparc/intr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/sparc/sparc/intr.c
diff -u src/sys/arch/sparc/sparc/intr.c:1.114 src/sys/arch/sparc/sparc/intr.c:1.115
--- src/sys/arch/sparc/sparc/intr.c:1.114	Tue Feb 15 10:59:25 2011
+++ src/sys/arch/sparc/sparc/intr.c	Mon May 23 18:40:30 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.114 2011/02/15 10:59:25 mrg Exp $ */
+/*	$NetBSD: intr.c,v 1.115 2011/05/23 18:40:30 rmind Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.114 2011/02/15 10:59:25 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.115 2011/05/23 18:40:30 rmind Exp $");
 
 #include "opt_multiprocessor.h"
 #include "opt_sparc_arch.h"
@@ -52,7 +52,7 @@
 #include <sys/malloc.h>
 #include <sys/cpu.h>
 #include <sys/intr.h>
-#include <sys/simplelock.h>
+#include <sys/atomic.h>
 
 #include <uvm/uvm_extern.h>
 
@@ -187,9 +187,8 @@
 int	(*moduleerr_handler)(void);
 
 #if defined(MULTIPROCESSOR)
-volatile int nmi_hard_wait = 0;
-struct simplelock nmihard_lock = SIMPLELOCK_INITIALIZER;
-int drop_into_rom_on_fatal = 1;
+static volatile u_int	nmi_hard_wait = 0;
+int			drop_into_rom_on_fatal = 1;
 #endif
 
 void
@@ -221,9 +220,7 @@
 	 * variable is non-zero.  If we are the master, loop while this
 	 * variable is less than the number of cpus.
 	 */
-	simple_lock(&nmihard_lock);
-	nmi_hard_wait++;
-	simple_unlock(&nmihard_lock);
+	atomic_inc_uint(&nmi_hard_wait);
 
 	if (cpuinfo.master == 0) {
 		while (nmi_hard_wait)
@@ -275,9 +272,7 @@
 	/*
 	 * Tell everyone else we've finished dealing with the hard NMI.
 	 */
-	simple_lock(&nmihard_lock);
 	nmi_hard_wait = 0;
-	simple_unlock(&nmihard_lock);
 	if (fatal && drop_into_rom_on_fatal) {
 		prom_abort();
 		return;

Reply via email to