Browse Source

Remove unnecessary checks of tselect range

Writing to tselect is only allowed if the value is in range, so these
conditions can never be false.
pull/813/head
Scott Johnson 5 years ago
parent
commit
d39d439b44
No known key found for this signature in database GPG Key ID: 61C1F01D3D1410C9
  1. 17
      riscv/processor.cc

17
riscv/processor.cc

@ -1027,9 +1027,7 @@ void processor_t::set_csr(int which, reg_t val)
if (state.mcontrol[state.tselect].dmode && !state.debug_mode) {
break;
}
if (state.tselect < state.num_triggers) {
state.tdata2[state.tselect] = val;
}
state.tdata2[state.tselect] = val;
break;
case CSR_DCSR:
state.dcsr.prv = get_field(val, DCSR_PRV);
@ -1164,7 +1162,7 @@ reg_t processor_t::get_csr(int which, insn_t insn, bool write, bool peek)
case CSR_MHARTID: ret(id);
case CSR_TSELECT: ret(state.tselect);
case CSR_TDATA1:
if (state.tselect < state.num_triggers) {
{
reg_t v = 0;
mcontrol_t *mc = &state.mcontrol[state.tselect];
v = set_field(v, MCONTROL_TYPE(xlen), mc->type);
@ -1183,17 +1181,8 @@ reg_t processor_t::get_csr(int which, insn_t insn, bool write, bool peek)
v = set_field(v, MCONTROL_STORE, mc->store);
v = set_field(v, MCONTROL_LOAD, mc->load);
ret(v);
} else {
ret(0);
}
break;
case CSR_TDATA2:
if (state.tselect < state.num_triggers) {
ret(state.tdata2[state.tselect]);
} else {
ret(0);
}
break;
case CSR_TDATA2: ret(state.tdata2[state.tselect]);
case CSR_TDATA3: ret(0);
case CSR_DCSR:
{

Loading…
Cancel
Save