aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/csrs.cc8
-rw-r--r--riscv/triggers.cc20
-rw-r--r--riscv/triggers.h5
3 files changed, 29 insertions, 4 deletions
diff --git a/riscv/csrs.cc b/riscv/csrs.cc
index 69e3c4b..aa726d4 100644
--- a/riscv/csrs.cc
+++ b/riscv/csrs.cc
@@ -991,11 +991,11 @@ tdata1_csr_t::tdata1_csr_t(processor_t* const proc, const reg_t addr):
}
reg_t tdata1_csr_t::read() const noexcept {
- return proc->TM.triggers[state->tselect->read()]->tdata1_read(proc);
+ return proc->TM.tdata1_read(proc, state->tselect->read());
}
bool tdata1_csr_t::unlogged_write(const reg_t val) noexcept {
- return proc->TM.triggers[state->tselect->read()]->tdata1_write(proc, val);
+ return proc->TM.tdata1_write(proc, state->tselect->read(), val);
}
@@ -1004,11 +1004,11 @@ tdata2_csr_t::tdata2_csr_t(processor_t* const proc, const reg_t addr):
}
reg_t tdata2_csr_t::read() const noexcept {
- return proc->TM.triggers[state->tselect->read()]->tdata2_read(proc);
+ return proc->TM.tdata2_read(proc, state->tselect->read());
}
bool tdata2_csr_t::unlogged_write(const reg_t val) noexcept {
- return proc->TM.triggers[state->tselect->read()]->tdata2_write(proc, val);
+ return proc->TM.tdata2_write(proc, state->tselect->read(), val);
}
diff --git a/riscv/triggers.cc b/riscv/triggers.cc
index 5b9d853..2cb4b13 100644
--- a/riscv/triggers.cc
+++ b/riscv/triggers.cc
@@ -173,5 +173,25 @@ match_result_t module_t::memory_access_match(action_t *action, operation_t opera
return MATCH_NONE;
}
+reg_t module_t::tdata1_read(const processor_t *proc, unsigned index) const noexcept
+{
+ return triggers[index]->tdata1_read(proc);
+}
+
+bool module_t::tdata1_write(processor_t *proc, unsigned index, const reg_t val) noexcept
+{
+ return triggers[index]->tdata1_write(proc, val);
+}
+
+reg_t module_t::tdata2_read(const processor_t *proc, unsigned index) const noexcept
+{
+ return triggers[index]->tdata2_read(proc);
+}
+
+bool module_t::tdata2_write(processor_t *proc, unsigned index, const reg_t val) noexcept
+{
+ return triggers[index]->tdata2_write(proc, val);
+}
+
};
diff --git a/riscv/triggers.h b/riscv/triggers.h
index 41bff75..bcd4b01 100644
--- a/riscv/triggers.h
+++ b/riscv/triggers.h
@@ -103,6 +103,11 @@ public:
match_result_t memory_access_match(action_t *action,
operation_t operation, reg_t address, reg_t data);
+ reg_t tdata1_read(const processor_t *proc, unsigned index) const noexcept;
+ bool tdata1_write(processor_t *proc, unsigned index, const reg_t val) noexcept;
+ reg_t tdata2_read(const processor_t *proc, unsigned index) const noexcept;
+ bool tdata2_write(processor_t *proc, unsigned index, const reg_t val) noexcept;
+
processor_t *proc;
std::vector<mcontrol_t *> triggers;
};