Browse Source

Give virtualized_satp_csr_t a handle to satp

Parent class has orig_csr but it's generic csr_t_p, and I will need to
call methods on satp_csr_t next.
pull/796/head
Scott Johnson 5 years ago
committed by Andrew Waterman
parent
commit
4009d54609
  1. 5
      riscv/csrs.cc
  2. 6
      riscv/csrs.h

5
riscv/csrs.cc

@ -778,8 +778,9 @@ void satp_csr_t::verify_permissions(insn_t insn, bool write) const {
require(state->prv >= PRV_M);
}
virtualized_satp_csr_t::virtualized_satp_csr_t(processor_t* const proc, csr_t_p orig, csr_t_p virt):
virtualized_csr_t(proc, orig, virt) {
virtualized_satp_csr_t::virtualized_satp_csr_t(processor_t* const proc, satp_csr_t_p orig, csr_t_p virt):
virtualized_csr_t(proc, orig, virt),
orig_satp(orig) {
}
void virtualized_satp_csr_t::verify_permissions(insn_t insn, bool write) const {

6
riscv/csrs.h

@ -407,11 +407,15 @@ class satp_csr_t: public base_atp_csr_t {
virtual void verify_permissions(insn_t insn, bool write) const override;
};
typedef std::shared_ptr<satp_csr_t> satp_csr_t_p;
class virtualized_satp_csr_t: public virtualized_csr_t {
public:
virtualized_satp_csr_t(processor_t* const proc, csr_t_p orig, csr_t_p virt);
virtualized_satp_csr_t(processor_t* const proc, satp_csr_t_p orig, csr_t_p virt);
virtual void verify_permissions(insn_t insn, bool write) const override;
virtual void write(const reg_t val) noexcept override;
private:
satp_csr_t_p orig_satp;
};

Loading…
Cancel
Save