aboutsummaryrefslogtreecommitdiff
path: root/riscv/csrs.h
diff options
context:
space:
mode:
authori2h2 <110197402+i2h2@users.noreply.github.com>2022-08-03 16:01:57 -0600
committerGitHub <noreply@github.com>2022-08-03 15:01:57 -0700
commit5672c4a41ad7a9af011d385962c175a5a6012fd9 (patch)
tree2b2268331e4bb8011f3578492d846568113ca990 /riscv/csrs.h
parent14cb6b2a6244e3a1511c4c169676a6e2bd6785ed (diff)
downloadspike-5672c4a41ad7a9af011d385962c175a5a6012fd9.zip
spike-5672c4a41ad7a9af011d385962c175a5a6012fd9.tar.gz
spike-5672c4a41ad7a9af011d385962c175a5a6012fd9.tar.bz2
Add Sstc support. (#1057)
Diffstat (limited to 'riscv/csrs.h')
-rw-r--r--riscv/csrs.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/riscv/csrs.h b/riscv/csrs.h
index c979942..acd889c 100644
--- a/riscv/csrs.h
+++ b/riscv/csrs.h
@@ -449,12 +449,13 @@ class masked_csr_t: public basic_csr_t {
};
// henvcfg.pbmte is read_only 0 when menvcfg.pbmte = 0
+// henvcfg.stce is read_only 0 when menvcfg.stce = 0
class henvcfg_csr_t final: public masked_csr_t {
public:
henvcfg_csr_t(processor_t* const proc, const reg_t addr, const reg_t mask, const reg_t init, csr_t_p menvcfg);
reg_t read() const noexcept override {
- return (menvcfg->read() | ~MENVCFG_PBMTE) & masked_csr_t::read();
+ return (menvcfg->read() | ~(MENVCFG_PBMTE | MENVCFG_STCE)) & masked_csr_t::read();
}
virtual void verify_permissions(insn_t insn, bool write) const override;
@@ -729,4 +730,18 @@ class senvcfg_csr_t final: public masked_csr_t {
virtual void verify_permissions(insn_t insn, bool write) const override;
};
+class stimecmp_csr_t: public basic_csr_t {
+ public:
+ stimecmp_csr_t(processor_t* const proc, const reg_t addr, const reg_t imask);
+ protected:
+ virtual bool unlogged_write(const reg_t val) noexcept override;
+ private:
+ reg_t intr_mask;
+};
+
+class virtualized_stimecmp_csr_t: public virtualized_csr_t {
+ public:
+ virtualized_stimecmp_csr_t(processor_t* const proc, csr_t_p orig, csr_t_p virt);
+ virtual void verify_permissions(insn_t insn, bool write) const override;
+};
#endif