aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Johnson <scott.johnson@arilinc.com>2022-07-13 09:01:15 -0700
committerScott Johnson <scott.johnson@arilinc.com>2022-07-13 18:57:55 -0700
commit00c38fdb95dff4e18ed75361da03436075a03b3a (patch)
tree7b0d038db1a7c0cea11562d152ff99dcd96ff714
parenta3d112d6f29870249df1080c5c610291dbe94442 (diff)
downloadspike-00c38fdb95dff4e18ed75361da03436075a03b3a.zip
spike-00c38fdb95dff4e18ed75361da03436075a03b3a.tar.gz
spike-00c38fdb95dff4e18ed75361da03436075a03b3a.tar.bz2
Remove unnecessary mask from rv32_high_csr_t constructor
-rw-r--r--riscv/csrs.cc5
-rw-r--r--riscv/csrs.h4
-rw-r--r--riscv/processor.cc7
3 files changed, 7 insertions, 9 deletions
diff --git a/riscv/csrs.cc b/riscv/csrs.cc
index 83906cc..18956ff 100644
--- a/riscv/csrs.cc
+++ b/riscv/csrs.cc
@@ -494,10 +494,9 @@ bool mstatus_csr_t::unlogged_write(const reg_t val) noexcept {
}
// implement class rv32_high_csr_t
-rv32_high_csr_t::rv32_high_csr_t(processor_t* const proc, const reg_t addr, const reg_t mask, csr_t_p orig):
+rv32_high_csr_t::rv32_high_csr_t(processor_t* const proc, const reg_t addr, csr_t_p orig):
csr_t(proc, addr),
- orig(orig),
- mask(mask) {
+ orig(orig) {
}
reg_t rv32_high_csr_t::read() const noexcept {
diff --git a/riscv/csrs.h b/riscv/csrs.h
index bde31da..7b1f87c 100644
--- a/riscv/csrs.h
+++ b/riscv/csrs.h
@@ -251,14 +251,14 @@ typedef std::shared_ptr<mstatus_csr_t> mstatus_csr_t_p;
class rv32_high_csr_t: public csr_t {
public:
- rv32_high_csr_t(processor_t* const proc, const reg_t addr, const reg_t mask, csr_t_p orig);
+ rv32_high_csr_t(processor_t* const proc, const reg_t addr, csr_t_p orig);
virtual reg_t read() const noexcept override;
virtual void verify_permissions(insn_t insn, bool write) const override;
protected:
virtual bool unlogged_write(const reg_t val) noexcept override;
private:
csr_t_p orig;
- const reg_t mask;
+ const reg_t mask = -1;
};
class sstatus_proxy_csr_t final: public base_status_csr_t {
diff --git a/riscv/processor.cc b/riscv/processor.cc
index febd61f..c0f4964 100644
--- a/riscv/processor.cc
+++ b/riscv/processor.cc
@@ -192,8 +192,7 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
csrmap[CSR_MSTATUS] = mstatus = std::make_shared<mstatus_csr_t>(proc, CSR_MSTATUS);
if (xlen == 32) {
- const reg_t mstatush_mask = -1;
- csrmap[CSR_MSTATUSH] = std::make_shared<rv32_high_csr_t>(proc, CSR_MSTATUSH, mstatush_mask, mstatus);
+ csrmap[CSR_MSTATUSH] = std::make_shared<rv32_high_csr_t>(proc, CSR_MSTATUSH, mstatus);
}
csrmap[CSR_MEPC] = mepc = std::make_shared<epc_csr_t>(proc, CSR_MEPC);
csrmap[CSR_MTVAL] = mtval = std::make_shared<basic_csr_t>(proc, CSR_MTVAL, 0);
@@ -405,13 +404,13 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
const reg_t mstateen_mask = i == 0 ? mstateen0_mask : MSTATEEN_HSTATEEN;
csrmap[CSR_MSTATEEN0 + i] = mstateen[i] = std::make_shared<masked_csr_t>(proc, CSR_MSTATEEN0 + i, mstateen_mask, 0);
if (xlen == 32) {
- csrmap[CSR_MSTATEEN0H + i] = std::make_shared<rv32_high_csr_t>(proc, CSR_MSTATEEN0H + i, -1, mstateen[i]);
+ csrmap[CSR_MSTATEEN0H + i] = std::make_shared<rv32_high_csr_t>(proc, CSR_MSTATEEN0H + i, mstateen[i]);
}
const reg_t hstateen_mask = i == 0 ? hstateen0_mask : HSTATEEN_SSTATEEN;
csrmap[CSR_HSTATEEN0 + i] = hstateen[i] = std::make_shared<hstateen_csr_t>(proc, CSR_HSTATEEN0 + i, hstateen_mask, 0, i);
if (xlen == 32) {
- csrmap[CSR_HSTATEEN0H + i] = std::make_shared<rv32_high_csr_t>(proc, CSR_HSTATEEN0H + i, -1, hstateen[i]);
+ csrmap[CSR_HSTATEEN0H + i] = std::make_shared<rv32_high_csr_t>(proc, CSR_HSTATEEN0H + i, hstateen[i]);
}
const reg_t sstateen_mask = i == 0 ? sstateen0_mask : 0;