changeset 45:43312befee79 onnv_18

backout 6285647: brickifies gate machine
author dduvall
date Mon, 20 Jun 2005 22:21:51 -0700
parents 7fa80fa0cfde
children 042bf15ebd92
files usr/src/uts/i86pc/os/x_call.c usr/src/uts/i86pc/sys/machcpuvar.h
diffstat 2 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/i86pc/os/x_call.c	Mon Jun 20 18:12:33 2005 -0700
+++ b/usr/src/uts/i86pc/os/x_call.c	Mon Jun 20 22:21:51 2005 -0700
@@ -128,6 +128,7 @@
 				(cpup->cpu_m.xc_pend[X_CALL_MEDPRI]))
 				break;
 			ht_pause();
+			return_instr();
 		}
 		return (DDI_INTR_CLAIMED);
 	}
@@ -169,11 +170,15 @@
 	 * Wait for the initiator of the x-call to indicate
 	 * that all CPUs involved can proceed.
 	 */
-	while (cpup->cpu_m.xc_wait[pri])
+	while (cpup->cpu_m.xc_wait[pri]) {
 		ht_pause();
+		return_instr();
+	}
 
-	while (cpup->cpu_m.xc_state[pri] != XC_DONE)
+	while (cpup->cpu_m.xc_state[pri] != XC_DONE) {
 		ht_pause();
+		return_instr();
+	}
 
 	/*
 	 * Flush the TLB, if that's what is requested.
@@ -373,8 +378,10 @@
 	for (cix = 0; cix < NCPU; cix++) {
 		if (lcx != cix && CPU_IN_SET(set, cix)) {
 			cpup = cpu[cix];
-			while (cpup->cpu_m.xc_ack[X_CALL_MEDPRI] == 0)
+			while (cpup->cpu_m.xc_ack[X_CALL_MEDPRI] == 0) {
 				ht_pause();
+				return_instr();
+			}
 			cpup->cpu_m.xc_ack[X_CALL_MEDPRI] = 0;
 		}
 		i++;
@@ -497,8 +504,10 @@
 	for (cix = 0; cix < NCPU; cix++) {
 		if (lcx != cix && CPU_IN_SET(set, cix)) {
 			cpup = cpu[cix];
-			while (cpup->cpu_m.xc_ack[pri] == 0)
+			while (cpup->cpu_m.xc_ack[pri] == 0) {
 				ht_pause();
+				return_instr();
+			}
 			cpup->cpu_m.xc_ack[pri] = 0;
 		}
 	}
@@ -537,8 +546,10 @@
 		if (lcx != cix && CPU_IN_SET(set, cix)) {
 			cpup = cpu[cix];
 			if (cpup != NULL && (cpup->cpu_flags & CPU_READY)) {
-				while (cpup->cpu_m.xc_ack[pri] == 0)
+				while (cpup->cpu_m.xc_ack[pri] == 0) {
 					ht_pause();
+					return_instr();
+				}
 				cpup->cpu_m.xc_ack[pri] = 0;
 			}
 		}
--- a/usr/src/uts/i86pc/sys/machcpuvar.h	Mon Jun 20 18:12:33 2005 -0700
+++ b/usr/src/uts/i86pc/sys/machcpuvar.h	Mon Jun 20 22:21:51 2005 -0700
@@ -20,7 +20,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -56,11 +56,11 @@
 
 struct	machcpu {
 	/* define all the x_call stuff */
-	volatile int	xc_pend[X_CALL_LEVELS];
-	volatile int	xc_wait[X_CALL_LEVELS];
-	volatile int	xc_ack[X_CALL_LEVELS];
-	volatile int	xc_state[X_CALL_LEVELS];
-	volatile int	xc_retval[X_CALL_LEVELS];
+	int	xc_pend[X_CALL_LEVELS];
+	int	xc_wait[X_CALL_LEVELS];
+	int	xc_ack[X_CALL_LEVELS];
+	int	xc_state[X_CALL_LEVELS];
+	int	xc_retval[X_CALL_LEVELS];
 
 	int		mcpu_nodeid;		/* node-id */
 	int		mcpu_pri;		/* CPU priority */