Browse Source

Make chain into chain() for all triggers.

pull/944/head
Tim Newsome 4 years ago
parent
commit
4f895c05fb
  1. 10
      riscv/triggers.cc
  2. 6
      riscv/triggers.h

10
riscv/triggers.cc

@ -4,7 +4,7 @@
namespace triggers {
mcontrol_t::mcontrol_t() :
type(2), maskmax(0), select(false), timing(false), chain(false),
type(2), maskmax(0), select(false), timing(false), chain_bit(false),
match(MATCH_EQUAL), m(false), h(false), s(false), u(false), execute(false),
store(false), load(false)
{
@ -19,7 +19,7 @@ reg_t mcontrol_t::tdata1_read(const processor_t *proc) const noexcept {
v = set_field(v, MCONTROL_SELECT, select);
v = set_field(v, MCONTROL_TIMING, timing);
v = set_field(v, MCONTROL_ACTION, action);
v = set_field(v, MCONTROL_CHAIN, chain);
v = set_field(v, MCONTROL_CHAIN, chain_bit);
v = set_field(v, MCONTROL_MATCH, match);
v = set_field(v, MCONTROL_M, m);
v = set_field(v, MCONTROL_H, h);
@ -40,7 +40,7 @@ bool mcontrol_t::tdata1_write(processor_t *proc, const reg_t val) noexcept {
select = get_field(val, MCONTROL_SELECT);
timing = get_field(val, MCONTROL_TIMING);
action = (triggers::action_t) get_field(val, MCONTROL_ACTION);
chain = get_field(val, MCONTROL_CHAIN);
chain_bit = get_field(val, MCONTROL_CHAIN);
unsigned match_value = get_field(val, MCONTROL_MATCH);
switch (match_value) {
case MATCH_EQUAL:
@ -157,12 +157,12 @@ match_result_t module_t::memory_access_match(action_t *action, operation_t opera
for (unsigned int i = 0; i < triggers.size(); i++) {
if (!chain_ok) {
chain_ok |= !triggers[i]->chain;
chain_ok |= !triggers[i]->chain();
continue;
}
match_result_t result = triggers[i]->memory_access_match(proc, operation, address, data);
if (result != MATCH_NONE && !triggers[i]->chain) {
if (result != MATCH_NONE && !triggers[i]->chain()) {
*action = triggers[i]->action;
return result;
}

6
riscv/triggers.h

@ -45,6 +45,8 @@ public:
virtual match_result_t memory_access_match(processor_t *proc,
operation_t operation, reg_t address, reg_t data) = 0;
virtual bool chain() const { return false; }
public:
bool dmode;
action_t action;
@ -72,6 +74,8 @@ public:
reg_t tdata2_read(const processor_t *proc) const noexcept;
bool tdata2_write(processor_t *proc, const reg_t val) noexcept;
virtual bool chain() const override { return chain_bit; }
virtual match_result_t memory_access_match(processor_t *proc,
operation_t operation, reg_t address, reg_t data) override;
@ -83,7 +87,7 @@ public:
uint8_t maskmax;
bool select;
bool timing;
bool chain;
bool chain_bit;
match_t match;
bool m;
bool h;

Loading…
Cancel
Save