aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/qtmipsmachine.cpp
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-03 11:52:53 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-03 11:52:53 +0100
commit55e1bc746a45118e14554c957b4ee4663039d9af (patch)
treeaf416cb8dd60f47f47b6d9b943a53fe069543cdb /qtmips_machine/qtmipsmachine.cpp
parent53c75d278a958e40b9c0b0ca3b04cfb11f356827 (diff)
downloadqtmips-55e1bc746a45118e14554c957b4ee4663039d9af.tar.gz
qtmips-55e1bc746a45118e14554c957b4ee4663039d9af.tar.bz2
qtmips-55e1bc746a45118e14554c957b4ee4663039d9af.zip
Implement BREAK instruction to stop continuous execution.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/qtmipsmachine.cpp')
-rw-r--r--qtmips_machine/qtmipsmachine.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/qtmips_machine/qtmipsmachine.cpp b/qtmips_machine/qtmipsmachine.cpp
index da4516a..75d8b8e 100644
--- a/qtmips_machine/qtmipsmachine.cpp
+++ b/qtmips_machine/qtmipsmachine.cpp
@@ -81,7 +81,8 @@ void QtMipsMachine::play() {
}
void QtMipsMachine::pause() {
- CTL_GUARD;
+ if (stat != ST_BUSY)
+ CTL_GUARD;
set_status(ST_READY);
run_t->stop();
}
@@ -103,8 +104,10 @@ void QtMipsMachine::step() {
run_t->stop();
set_status(ST_EXIT);
emit program_exit();
- } else
- set_status(stat_prev);
+ } else {
+ if (stat == ST_BUSY)
+ set_status(stat_prev);
+ }
}
void QtMipsMachine::restart() {