diff options
author | Andrew Waterman <andrew@sifive.com> | 2017-04-30 22:03:15 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2017-04-30 22:03:15 -0700 |
commit | abb7dddfdfd6ec5070c26c1824e4f5801e6bb12d (patch) | |
tree | c20479a56197fe8bcc6b886a0454af028444ac4c /riscv/devices.cc | |
parent | 1d2892407fed141d20607ae9c49e50673e2c5c11 (diff) | |
download | spike-abb7dddfdfd6ec5070c26c1824e4f5801e6bb12d.zip spike-abb7dddfdfd6ec5070c26c1824e4f5801e6bb12d.tar.gz spike-abb7dddfdfd6ec5070c26c1824e4f5801e6bb12d.tar.bz2 |
Support more flexible main memory allocation
Diffstat (limited to 'riscv/devices.cc')
-rw-r--r-- | riscv/devices.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/riscv/devices.cc b/riscv/devices.cc index c7a63b0..af4dc7d 100644 --- a/riscv/devices.cc +++ b/riscv/devices.cc @@ -20,3 +20,14 @@ bool bus_t::store(reg_t addr, size_t len, const uint8_t* bytes) return false; return it->second->store(addr - -it->first, len, bytes); } + +bus_t::descriptor bus_t::find_device(reg_t addr) +{ + auto it = devices.lower_bound(-addr); + if (it == devices.end()) { + bus_t::descriptor desc = {0, 0}; + return desc; + } + bus_t::descriptor desc = {-it->first, it->second}; + return desc; +} |