aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Li <li.davidm96@gmail.com>2015-12-29 14:36:49 -0700
committerDavid Li <li.davidm96@gmail.com>2015-12-29 14:36:49 -0700
commitdcc8f7d726620e7e2c7667fcff4c134c664971d9 (patch)
treef3dee04606a007021ed21f0d5db2024143b9d881
parent280fa4d99e3d2dfbc3e8d4f006b62e4b78538677 (diff)
Update test for new cache
-rw-r--r--src/lib.rs11
-rw-r--r--src/memory.rs8
-rw-r--r--src/simulator.rs2
3 files changed, 12 insertions, 9 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 0dc0e7f..b77d4f7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -34,19 +34,16 @@ fn it_works() {
#[cfg(test)]
mod tests {
- use super::*;
-
#[test]
fn cache_address_parsing() {
- let dm_cache_word = memory::Cache::new(4, 1, 1);
- let dm_cache_doubleword = memory::Cache::new(4, 1, 2);
- let fa_cache_doubleword = memory::Cache::new(1, 4, 2);
+ use memory::*;
+
+ let dm_cache_word = DirectMappedCache::new(4, 1, Memory::new(1));
+ let dm_cache_doubleword = DirectMappedCache::new(4, 2, Memory::new(1));
assert_eq!(dm_cache_word.parse_address(0xFFFFFFFD),
(0xFFFFFFF, 3, 1));
assert_eq!(dm_cache_doubleword.parse_address(0xFFFFFFFD),
(0x7FFFFFF, 3, 5));
- assert_eq!(fa_cache_doubleword.parse_address(0xFFFFFFFD),
- (0x1FFFFFFF, 0, 5));
}
}
diff --git a/src/memory.rs b/src/memory.rs
index c3cc60a..d321711 100644
--- a/src/memory.rs
+++ b/src/memory.rs
@@ -75,7 +75,13 @@ pub struct DirectMappedCache<T: MemoryInterface> {
}
impl Memory {
- pub fn new(size: isa::Address, binary: Binary) -> Memory {
+ pub fn new(size: isa::Address) -> Memory {
+ Memory {
+ memory: vec![0; size as usize],
+ }
+ }
+
+ pub fn new_from_binary(size: isa::Address, binary: Binary) -> Memory {
let mut memory = binary.words.clone();
let size = size as usize;
if size > memory.len() {
diff --git a/src/simulator.rs b/src/simulator.rs
index 2e7ddbd..55b2b41 100644
--- a/src/simulator.rs
+++ b/src/simulator.rs
@@ -75,7 +75,7 @@ impl RegisterFile {
impl Simulator {
pub fn new(num_cores: usize, binary: Binary) -> Simulator {
- let memory = Memory::new(0x2000, binary);
+ let memory = Memory::new_from_binary(0x2000, binary);
// TODO: initialize GP, registers (GP is in headers)
Simulator {
num_cores: num_cores,