Perform reset through ProcessorHandler instead of ProcessorTab
ProcessorTab goes through the VSRTL widget, while ProcessorHandler
uses the RipesProcessor interface.
MODIFY
src/processorhandler.cpp
src/processorhandler.cpp
@@ -214,6 +214,10 @@ void ProcessorHandler::_selectProcessor(const ProcessorID& id, const QStringList
// Syscall handling initialization
m_currentProcessor->handleSysCall = [=] { syscallTrap(); };
+ // Reset request handling
+ connect(RipesSettings::getObserver(RIPES_GLOBALSIGNAL_REQRESET), &SettingObserver::modified,
+ [=] { ProcessorHandler::get()->getProcessorNonConst()->resetProcessor(); });
+
// Register initializations
auto& regs = m_currentProcessor->getArchRegisters();
regs.clearInitializationMemories();

MODIFY
src/processortab.cpp
src/processortab.cpp
@@ -111,8 +111,7 @@ ProcessorTab::ProcessorTab(QToolBar* controlToolbar, QToolBar* additionalToolbar
[=](const auto&) { m_reverseAction->setEnabled(m_vsrtlWidget->isReversible()); });
// Connect the global reset request signal to reset()
- connect(RipesSettings::getObserver(RIPES_GLOBALSIGNAL_REQRESET), &SettingObserver::modified, this,
- &ProcessorTab::reset);
+ connect(ProcessorHandler::get(), &ProcessorHandler::processorReset, this, &ProcessorTab::reset);
// Send input data from the console to the SystemIO stdin stream
connect(m_ui->console, &Console::sendData, &SystemIO::get(), &SystemIO::putStdInData);
@@ -445,8 +444,6 @@ void ProcessorTab::updateInstructionLabels() {
void ProcessorTab::reset() {
m_autoClockAction->setChecked(false);
- m_vsrtlWidget->reset();
-
enableSimulatorControls();
printToLog("\n");
}

Perform reset through ProcessorHandler instead of ProcessorTab

ProcessorTab goes through the VSRTL widget, while ProcessorHandler
uses the RipesProcessor interface.