Browse Source

Allow sstatus_proxy_csr_t::read() to be inlined

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

4
riscv/csrs.cc

@ -394,10 +394,6 @@ sstatus_proxy_csr_t::sstatus_proxy_csr_t(processor_t* const proc, const reg_t ad
mstatus(mstatus) {
}
reg_t sstatus_proxy_csr_t::read() const noexcept {
return mstatus->read() & sstatus_read_mask;
}
bool sstatus_proxy_csr_t::unlogged_write(const reg_t val) noexcept {
const reg_t new_mstatus = (mstatus->read() & ~sstatus_write_mask) | (val & sstatus_write_mask);

8
riscv/csrs.h

@ -249,10 +249,14 @@ class mstatush_csr_t: public csr_t {
};
class sstatus_proxy_csr_t: public base_status_csr_t {
class sstatus_proxy_csr_t final: public base_status_csr_t {
public:
sstatus_proxy_csr_t(processor_t* const proc, const reg_t addr, csr_t_p mstatus);
virtual reg_t read() const noexcept override;
reg_t read() const noexcept override {
return mstatus->read() & sstatus_read_mask;
}
protected:
virtual bool unlogged_write(const reg_t val) noexcept override;
private:

Loading…
Cancel
Save