diff options
author | Andrew Waterman <andrew@sifive.com> | 2023-02-28 14:56:27 -0800 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2023-03-01 13:34:07 -0800 |
commit | 74064f806737925c2efeb9e617c1d9c57d26172e (patch) | |
tree | 440124e6d35607886225fa5371513fb78787ff37 /riscv/devices.h | |
parent | 9d3f3672039393675218268b447f5b039708265e (diff) | |
download | spike-74064f806737925c2efeb9e617c1d9c57d26172e.zip spike-74064f806737925c2efeb9e617c1d9c57d26172e.tar.gz spike-74064f806737925c2efeb9e617c1d9c57d26172e.tar.bz2 |
Support discontiguous hart IDs in CLINT
This is a large delta because the old implementation baked in multiple
assumptions about the contiguity of hart IDs.
As a side effect, fix implementation for big-endian hosts.
Diffstat (limited to 'riscv/devices.h')
-rw-r--r-- | riscv/devices.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/riscv/devices.h b/riscv/devices.h index f7e631e..2a9c005 100644 --- a/riscv/devices.h +++ b/riscv/devices.h @@ -58,7 +58,7 @@ class mem_t : public abstract_device_t { class clint_t : public abstract_device_t { public: - clint_t(std::vector<processor_t*>&, uint64_t freq_hz, bool real_time); + clint_t(sim_t*, uint64_t freq_hz, bool real_time); 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 CLINT_SIZE; } @@ -69,13 +69,13 @@ class clint_t : public abstract_device_t { typedef uint64_t mtime_t; typedef uint64_t mtimecmp_t; typedef uint32_t msip_t; - std::vector<processor_t*>& procs; + sim_t* sim; uint64_t freq_hz; bool real_time; uint64_t real_time_ref_secs; uint64_t real_time_ref_usecs; mtime_t mtime; - std::vector<mtimecmp_t> mtimecmp; + std::map<size_t, mtimecmp_t> mtimecmp; }; #define PLIC_MAX_DEVICES 1024 |