systemc: If a process hasn't started, still signal its reset event.
Change-Id: I9c8026cde455070841139d02955f5c083b9e0645 Reviewed-on: https://gem5-review.googlesource.com/c/13314 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -97,8 +97,8 @@ class Process : public ::sc_core::sc_process_b, public ListNode
|
||||
void incref() { refCount++; }
|
||||
void decref() { refCount--; }
|
||||
|
||||
const ::sc_core::sc_event &resetEvent() { return _resetEvent; }
|
||||
const ::sc_core::sc_event &terminatedEvent() { return _terminatedEvent; }
|
||||
::sc_core::sc_event &resetEvent() { return _resetEvent; }
|
||||
::sc_core::sc_event &terminatedEvent() { return _terminatedEvent; }
|
||||
|
||||
void setStackSize(size_t size) { stackSize = size; }
|
||||
|
||||
|
||||
@@ -171,6 +171,10 @@ Scheduler::yield()
|
||||
// If the current process needs to be manually started, start it.
|
||||
if (_current && _current->needsStart()) {
|
||||
_current->needsStart(false);
|
||||
// If a process hasn't started yet, "resetting" it just starts it
|
||||
// and signals its reset event.
|
||||
if (_current->inReset())
|
||||
_current->resetEvent().notify();
|
||||
try {
|
||||
_current->run();
|
||||
} catch (...) {
|
||||
|
||||
Reference in New Issue
Block a user