aboutsummaryrefslogtreecommitdiff
path: root/qtmips_gui/newdialog.cpp
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-03-06 23:40:34 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-03-06 23:40:34 +0100
commit8d0f4806a7ad55710cb190e5a5c9388bd00c50a8 (patch)
tree16d5ac856513f44c4b1ecbccdebee151772f64e2 /qtmips_gui/newdialog.cpp
parent1536045c0d28113892abc9d1023ce395a0e82e94 (diff)
downloadqtmips-8d0f4806a7ad55710cb190e5a5c9388bd00c50a8.tar.gz
qtmips-8d0f4806a7ad55710cb190e5a5c9388bd00c50a8.tar.bz2
qtmips-8d0f4806a7ad55710cb190e5a5c9388bd00c50a8.zip
Enable configuration of syscalls emulation and stop on exception.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_gui/newdialog.cpp')
-rw-r--r--qtmips_gui/newdialog.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/qtmips_gui/newdialog.cpp b/qtmips_gui/newdialog.cpp
index 3e37357..53b2a05 100644
--- a/qtmips_gui/newdialog.cpp
+++ b/qtmips_gui/newdialog.cpp
@@ -72,6 +72,12 @@ NewDialog::NewDialog(QWidget *parent, QSettings *settings) : QDialog(parent) {
connect(ui->mem_time_write, SIGNAL(valueChanged(int)), this, SLOT(mem_time_write_change(int)));
connect(ui->mem_time_burst, SIGNAL(valueChanged(int)), this, SLOT(mem_time_burst_change(int)));
+ connect(ui->osemu_enable, SIGNAL(clicked(bool)), this, SLOT(osemu_enable_change(bool)));
+ connect(ui->osemu_known_syscall_stop, SIGNAL(clicked(bool)), this, SLOT(osemu_known_syscall_stop_change(bool)));
+ connect(ui->osemu_unknown_syscall_stop, SIGNAL(clicked(bool)), this, SLOT(osemu_unknown_syscall_stop_change(bool)));
+ connect(ui->osemu_interrupt_stop, SIGNAL(clicked(bool)), this, SLOT(osemu_interrupt_stop_change(bool)));
+ connect(ui->osemu_exception_stop, SIGNAL(clicked(bool)), this, SLOT(osemu_exception_stop_change(bool)));
+
cache_handler_d = new NewDialogCacheHandler(this, ui_cache_d);
cache_handler_p = new NewDialogCacheHandler(this, ui_cache_p);
@@ -196,6 +202,26 @@ void NewDialog::mem_time_burst_change(int v) {
}
}
+void NewDialog::osemu_enable_change(bool v) {
+ config->set_osemu_enable(v);
+}
+
+void NewDialog::osemu_known_syscall_stop_change(bool v) {
+ config->set_osemu_known_syscall_stop(v);
+}
+
+void NewDialog::osemu_unknown_syscall_stop_change(bool v) {
+ config->set_osemu_unknown_syscall_stop(v);
+}
+
+void NewDialog::osemu_interrupt_stop_change(bool v) {
+ config->set_osemu_interrupt_stop(v);
+}
+
+void NewDialog::osemu_exception_stop_change(bool v) {
+ config->set_osemu_exception_stop(v);
+}
+
void NewDialog::config_gui() {
// Basic
ui->elf_file->setText(config->elf());
@@ -214,6 +240,12 @@ void NewDialog::config_gui() {
// Cache
cache_handler_d->config_gui();
cache_handler_p->config_gui();
+ // Operating system and exceptions
+ ui->osemu_enable->setChecked(config->osemu_enable());
+ ui->osemu_known_syscall_stop->setChecked(config->osemu_known_syscall_stop());
+ ui->osemu_unknown_syscall_stop->setChecked(config->osemu_unknown_syscall_stop());
+ ui->osemu_interrupt_stop->setChecked(config->osemu_interrupt_stop());
+ ui->osemu_exception_stop->setChecked(config->osemu_exception_stop());
// Disable various sections according to configuration
ui->delay_slot->setEnabled(!config->pipelined());