Browse Source

Don't access triggers vector directly from csrs.cc.

pull/944/head
Tim Newsome 4 years ago
parent
commit
972943662c
  1. 8
      riscv/csrs.cc
  2. 20
      riscv/triggers.cc
  3. 5
      riscv/triggers.h

8
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);
}

20
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);
}
};

5
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;
};

Loading…
Cancel
Save