Index: marss.to.delete/ptlsim/core/atom-core/atomcore.cpp
===================================================================
--- marss.to.delete.orig/ptlsim/core/atom-core/atomcore.cpp	2013-04-24 17:15:12.000000000 -0500
+++ marss.to.delete/ptlsim/core/atom-core/atomcore.cpp	2013-04-24 17:16:37.000000000 -0500
@@ -2665,6 +2665,9 @@
 
         if(buf.op->eom || commit_result == COMMIT_BARRIER) {
             total_insns_committed++;
+            if (get_default_stats() == user_stats) {
+               total_user_insns_committed++;
+            }
             st_commit.insns++;
             break;
         }
Index: marss.to.delete/ptlsim/core/ooo-core/ooo-pipe.cpp
===================================================================
--- marss.to.delete.orig/ptlsim/core/ooo-core/ooo-pipe.cpp	2013-04-24 17:15:12.000000000 -0500
+++ marss.to.delete/ptlsim/core/ooo-core/ooo-pipe.cpp	2013-04-24 17:22:07.000000000 -0500
@@ -2270,6 +2270,10 @@
         total_insns_committed++;
         thread.thread_stats.commit.insns++;
         thread.total_insns_committed++;
+        if (thread.thread_stats.get_default_stats() == user_stats) {
+            total_user_insns_committed++;
+        }
+
 
 #ifdef TRACE_RIP
             ptl_rip_trace << "commit_rip: ",
Index: marss.to.delete/ptlsim/sim/machine.cpp
===================================================================
--- marss.to.delete.orig/ptlsim/sim/machine.cpp	2013-04-24 17:15:12.000000000 -0500
+++ marss.to.delete/ptlsim/sim/machine.cpp	2013-04-24 17:16:04.000000000 -0500
@@ -268,7 +268,8 @@
         sim_cycle++;
         iterations++;
 
-        if unlikely (config.stop_at_insns <= total_insns_committed ||
+//        if unlikely (config.stop_at_insns <= total_insns_committed ||
+        if unlikely (config.stop_at_insns <= total_user_insns_committed ||
                 config.stop_at_cycle <= sim_cycle) {
             ptl_logfile << "Stopping simulation loop at specified limits (", sim_cycle, " cycles, ", total_insns_committed, " commits)", endl;
             exiting = 1;
Index: marss.to.delete/ptlsim/sim/ptlsim.cpp
===================================================================
--- marss.to.delete.orig/ptlsim/sim/ptlsim.cpp	2013-04-24 17:15:12.000000000 -0500
+++ marss.to.delete/ptlsim/sim/ptlsim.cpp	2013-04-24 17:18:38.000000000 -0500
@@ -58,6 +58,7 @@
 W64 total_uops_executed = 0;
 W64 total_uops_committed = 0;
 W64 total_insns_committed = 0;
+W64 total_user_insns_committed = 0;
 W64 total_basic_blocks_committed = 0;
 
 W64 last_printed_status_at_ticks;
@@ -1363,7 +1364,7 @@
 
 	machine->run(config);
 
-	if (config.stop_at_insns <= total_insns_committed || config.kill == true
+	if (config.stop_at_insns <= total_user_insns_committed || config.kill == true
 			|| config.stop == true || config.stop_at_cycle < sim_cycle) {
 		machine->stopped = 1;
 	}
Index: marss.to.delete/ptlsim/sim/ptlsim.h
===================================================================
--- marss.to.delete.orig/ptlsim/sim/ptlsim.h	2013-04-24 17:15:12.000000000 -0500
+++ marss.to.delete/ptlsim/sim/ptlsim.h	2013-04-24 17:16:04.000000000 -0500
@@ -170,6 +170,7 @@
 extern W64 total_uops_executed;
 extern W64 total_uops_committed;
 extern W64 total_insns_committed;
+extern W64 total_user_insns_committed;
 extern W64 total_basic_blocks_committed;
 
 // #define TRACE_RIP
