Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/12269

Change subject: systemc: Handle sc_stop called from sc_main correctly.
......................................................................

systemc: Handle sc_stop called from sc_main correctly.

When in sc_main, sc_is_running will return true but we're not going
to run any gem5 events since we're currently in the sc_main Fiber. In
that case, we need to do the sc_stop work inline.

If we're actually running and not just paused, then we do still want to
schedule the work of sc_stop to happen as its own event since that will
happen before returning to sc_main, and actually will likely be the
mechanism by which sc_main starts executing again.

Change-Id: If9ffafc4f240af0f3d9c726b36a0950b5219dc00
---
M src/systemc/core/sc_main.cc
1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/src/systemc/core/sc_main.cc b/src/systemc/core/sc_main.cc
index ea243bf..2637cef 100644
--- a/src/systemc/core/sc_main.cc
+++ b/src/systemc/core/sc_main.cc
@@ -225,7 +225,7 @@
     if (::sc_gem5::Kernel::status() == SC_STOPPED)
         return;

-    if (sc_is_running()) {
+    if ((sc_get_status() & SC_RUNNING)) {
         bool finish_delta = (_stop_mode == SC_STOP_FINISH_DELTA);
         ::sc_gem5::scheduler.scheduleStop(finish_delta);
     } else {

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12269
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: If9ffafc4f240af0f3d9c726b36a0950b5219dc00
Gerrit-Change-Number: 12269
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to