Browse Source

Allow vsstatus_csr_t::read() to be inlined

pull/950/head
Andrew Waterman 4 years ago
parent
commit
e218b2f4d7
  1. 4
      riscv/csrs.cc
  2. 8
      riscv/csrs.h

4
riscv/csrs.cc

@ -380,10 +380,6 @@ vsstatus_csr_t::vsstatus_csr_t(processor_t* const proc, const reg_t addr):
val(proc->get_state()->mstatus->read() & sstatus_read_mask) {
}
reg_t vsstatus_csr_t::read() const noexcept {
return val;
}
bool vsstatus_csr_t::unlogged_write(const reg_t val) noexcept {
const reg_t newval = (this->val & ~sstatus_write_mask) | (val & sstatus_write_mask);
if (state->v) maybe_flush_tlb(newval);

8
riscv/csrs.h

@ -202,10 +202,14 @@ typedef std::shared_ptr<base_status_csr_t> base_status_csr_t_p;
// For vsstatus, which is its own separate architectural register
// (unlike sstatus)
class vsstatus_csr_t: public base_status_csr_t {
class vsstatus_csr_t final: public base_status_csr_t {
public:
vsstatus_csr_t(processor_t* const proc, const reg_t addr);
virtual reg_t read() const noexcept override;
reg_t read() const noexcept override {
return val;
}
protected:
virtual bool unlogged_write(const reg_t val) noexcept override;
private:

Loading…
Cancel
Save