aboutsummaryrefslogtreecommitdiff
path: root/riscv/processor.cc
diff options
context:
space:
mode:
authorScott Johnson <scott.johnson@arilinc.com>2021-09-20 13:59:07 -0700
committerScott Johnson <scott.johnson@arilinc.com>2021-09-25 23:50:53 -0700
commit0cd68301b1c7a442c2872b4457259a71a46d9dda (patch)
treea019edc064acd33f17a7bdce2bed9ec0f7ea5150 /riscv/processor.cc
parent324ebf3b36fcb780c991d9ab80164c9fa912472f (diff)
downloadspike-0cd68301b1c7a442c2872b4457259a71a46d9dda.zip
spike-0cd68301b1c7a442c2872b4457259a71a46d9dda.tar.gz
spike-0cd68301b1c7a442c2872b4457259a71a46d9dda.tar.bz2
Convert htinst to csr_t
Diffstat (limited to 'riscv/processor.cc')
-rw-r--r--riscv/processor.cc8
1 files changed, 2 insertions, 6 deletions
diff --git a/riscv/processor.cc b/riscv/processor.cc
index 1ff1d36..4d09a34 100644
--- a/riscv/processor.cc
+++ b/riscv/processor.cc
@@ -462,7 +462,7 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
hedeleg = 0;
csrmap[CSR_HCOUNTEREN] = hcounteren = std::make_shared<counteren_csr_t>(proc, CSR_HCOUNTEREN);
csrmap[CSR_HTVAL] = htval = std::make_shared<basic_csr_t>(proc, CSR_HTVAL, 0);
- htinst = 0;
+ csrmap[CSR_HTINST] = htinst = std::make_shared<basic_csr_t>(proc, CSR_HTINST, 0);
hgatp = 0;
auto nonvirtual_sstatus = std::make_shared<sstatus_proxy_csr_t>(proc, CSR_SSTATUS, mstatus);
csrmap[CSR_VSSTATUS] = vsstatus = std::make_shared<vsstatus_csr_t>(proc, CSR_VSSTATUS);
@@ -856,7 +856,7 @@ void processor_t::take_trap(trap_t& t, reg_t epc)
state.sepc->write(epc);
state.stval->write(t.get_tval());
state.htval->write(t.get_tval2());
- state.htinst = t.get_tinst();
+ state.htinst->write(t.get_tinst());
reg_t s = state.sstatus->read();
s = set_field(s, MSTATUS_SPIE, get_field(s, MSTATUS_SIE));
@@ -1002,9 +1002,6 @@ void processor_t::set_csr(int which, reg_t val)
state.hideleg = (state.hideleg & ~mask) | (val & mask);
break;
}
- case CSR_HTINST:
- state.htinst = val;
- break;
case CSR_HGATP: {
mmu->flush_tlb();
@@ -1195,7 +1192,6 @@ reg_t processor_t::get_csr(int which, insn_t insn, bool write, bool peek)
case CSR_MHARTID: ret(id);
case CSR_HEDELEG: ret(state.hedeleg);
case CSR_HIDELEG: ret(state.hideleg);
- case CSR_HTINST: ret(state.htinst);
case CSR_HGATP: {
if (!state.v && get_field(state.mstatus->read(), MSTATUS_TVM))
require_privilege(PRV_M);