aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index 2f607a6..e6b6385 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -86,15 +86,16 @@ fn main() {
let cache2 = memory::DirectMappedCache::new(2, 64, memory_ref.clone());
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![];
+ let mut core_caches = vec![];
+
for i in 0..4 {
- let c1 = Rc::new(RefCell::new(cache1.clone()));
- core_caches.push(c1.clone());
+ let core_cache = Rc::new(RefCell::new(
+ ShareableCache::new(i, cache_ref.clone(), cache2_ref.clone())));
+ core_caches.push(core_cache.clone());
let mut core = simulator::Core::new(
- i, start1, (0x100000 * (i + 1)) as u32, c1,
+ i, start1, (0x100000 * (i + 1)) as u32, core_cache,
Box::new(memory::IdentityMmu::new())
);
core.registers().write_word(isa::Register::X10, i as isa::Word);
@@ -102,10 +103,11 @@ fn main() {
}
for i in 4..8 {
- let c2 = Rc::new(RefCell::new(cache2.clone()));
- core_caches.push(c2.clone());
+ let core_cache = Rc::new(RefCell::new(
+ ShareableCache::new(i, cache2_ref.clone(), cache_ref.clone())));
+ core_caches.push(core_cache.clone());
let mut core = simulator::Core::new(
- i, start2, (0x100000 * (i + 1)) as u32, c2,
+ i, start2, (0x100000 * (i + 1)) as u32, core_cache,
Box::new(memory::ReverseMmu::new(0x4000000))
);
core.registers().write_word(isa::Register::X10, i as isa::Word);