diff options
author | Wesley W. Terpstra <wesley@sifive.com> | 2017-03-22 13:57:56 -0700 |
---|---|---|
committer | Wesley W. Terpstra <wesley@sifive.com> | 2017-03-22 14:21:54 -0700 |
commit | 46f1423c6566aee512fbc7a8ef6ff4aae2b7d1fb (patch) | |
tree | 1ff563929c13be279340ad439af8692d3c9913aa /riscv/devices.h | |
parent | 693fc45eb8ccc3c9f84b898de3119a172e0776f5 (diff) | |
download | spike-46f1423c6566aee512fbc7a8ef6ff4aae2b7d1fb.zip spike-46f1423c6566aee512fbc7a8ef6ff4aae2b7d1fb.tar.gz spike-46f1423c6566aee512fbc7a8ef6ff4aae2b7d1fb.tar.bz2 |
riscv: replace rtc device with a real clint implementation
Diffstat (limited to 'riscv/devices.h')
-rw-r--r-- | riscv/devices.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/riscv/devices.h b/riscv/devices.h index cb3b6d9..f3ecb67 100644 --- a/riscv/devices.h +++ b/riscv/devices.h @@ -34,17 +34,20 @@ class rom_device_t : public abstract_device_t { std::vector<char> data; }; -class rtc_t : public abstract_device_t { +class clint_t : public abstract_device_t { public: - rtc_t(std::vector<processor_t*>&); + clint_t(std::vector<processor_t*>&); bool load(reg_t addr, size_t len, uint8_t* bytes); bool store(reg_t addr, size_t len, const uint8_t* bytes); - size_t size() { return regs.size() * sizeof(regs[0]); } + size_t size() { return CLINT_SIZE; } void increment(reg_t inc); private: + typedef uint64_t mtime_t; + typedef uint64_t mtimecmp_t; + typedef uint32_t msip_t; std::vector<processor_t*>& procs; - std::vector<uint64_t> regs; - uint64_t time() { return regs[0]; } + mtime_t mtime; + std::vector<mtimecmp_t> mtimecmp; }; #endif |