Index: benchmark/schedint/upp.cc
===================================================================
--- benchmark/schedint/upp.cc	(revision 6e540ea6f2eb5e8c7c9342b94e6f036ca964f3ec)
+++ benchmark/schedint/upp.cc	(revision e068c8a8da15b590c9ee6dc1bf9fefcffcc2b1dc)
@@ -11,26 +11,22 @@
 		cond.signal();
 	}
+	void __attribute__((noinline)) wait() {
+		go = 1;
+		for ( size_t i = 0; i < times; i++ ) {
+			cond.wait();
+		}
+	}
+} m;
 
-	int __attribute__((noinline)) wait() {
-		go = 1;
+_Task T {
+	void main() {
+		while ( go == 0 ) { yield(); } // waiter must start first
 		BENCH(
-			for (size_t i = 0; i < times; i++) {
-				cond.wait();
+			for ( size_t i = 0; i < times; i++ ) {
+				m.call();
 			},
 			result
 		)
 		printf( "%g\n", result );
-		go = 0;
-		return 0;
-	}
-};
-
-M m;
-
-_Task T {
-	void main() {
-		while(go == 0) { yield(); }
-		while(go == 1) { m.call(); }
-
 	}
 };
@@ -39,5 +35,5 @@
 	BENCH_START()
 	T t;
-	return m.wait();
+	m.wait();
 }
 
