diff options
author | David Li <li.davidm96@gmail.com> | 2016-01-10 10:13:40 -0700 |
---|---|---|
committer | David Li <li.davidm96@gmail.com> | 2016-01-10 10:13:40 -0700 |
commit | 70ef4cc988e7daa240d331082e566add286089ab (patch) | |
tree | 0a5d49986a010d643418f6ad7d4819b83747c4ac /src/main.rs | |
parent | c8e241211445db065745c0e171c3b00e1aff5431 (diff) |
Give individual cores secondary cache access
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index c7ee66f..2f607a6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -87,17 +87,25 @@ fn main() { let cache2_ref = Rc::new(RefCell::new(cache2)); let (cache1, cache2) = ShareableCache::new(cache_ref.clone(), cache2_ref.clone()); + let mut core_caches = vec![]; let mut cores = vec![]; for i in 0..4 { + let c1 = Rc::new(RefCell::new(cache1.clone())); + core_caches.push(c1.clone()); let mut core = simulator::Core::new( - i, start1, (0x100000 * (i + 1)) as u32, cache1.clone(), + i, start1, (0x100000 * (i + 1)) as u32, c1, Box::new(memory::IdentityMmu::new()) ); core.registers().write_word(isa::Register::X10, i as isa::Word); cores.push(core); + } + + for i in 4..8 { + let c2 = Rc::new(RefCell::new(cache2.clone())); + core_caches.push(c2.clone()); let mut core = simulator::Core::new( - i, start2, (0x100000 * (i + 1)) as u32, cache2.clone(), + i, start2, (0x100000 * (i + 1)) as u32, c2, Box::new(memory::ReverseMmu::new(0x4000000)) ); core.registers().write_word(isa::Register::X10, i as isa::Word); @@ -105,7 +113,6 @@ fn main() { } let steppable_caches = vec![cache_ref.clone() as memory::SharedMemory, cache2_ref]; - let core_caches = vec![cache1, cache2]; let system = SyscallHandler::new(memory_ref.clone(), core_caches); let mut simulator = simulator::Simulator::new( cores, memory_ref.clone(), steppable_caches, system); |