aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index f4ef2cc..c4cb1e1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,10 +20,10 @@ use std::cell::RefCell;
use docopt::Docopt;
+use rustv::cache;
use rustv::elfloader;
use rustv::isa::{self, IsaType};
use rustv::memory;
-use rustv::memory::Mmu;
use rustv::simulator;
use memory_tracker::MemoryTracker;
@@ -98,9 +98,23 @@ fn main() {
// TODO: initialize global data
let memory_ref = Rc::new(RefCell::new(memory));
- let cache = memory::DirectMappedCache::new(2, 64, memory_ref.clone());
+
+ let updater = globals::Updater::new(
+ memory_ref.clone(),
+ Box::new(memory::IdentityMmu::new()),
+ Box::new(memory::IdentityMmu::new()));
+ updater.init_memory();
+
+ let player1_event = globals::CacheEventHandler::new(
+ &updater, globals::Player::One);
+ let player2_event = globals::CacheEventHandler::new(
+ &updater, globals::Player::Two);
+
+ let cache = cache::DirectMappedCache::new(
+ 2, 64, memory_ref.clone(), player1_event);
let cache_ref = Rc::new(RefCell::new(cache));
- let cache2 = memory::DirectMappedCache::new(2, 64, memory_ref.clone());
+ let cache2 = cache::DirectMappedCache::new(
+ 2, 64, memory_ref.clone(), player2_event);
let cache2_ref = Rc::new(RefCell::new(cache2));
let mut cores = vec![];
@@ -155,7 +169,7 @@ fn main() {
let end = time::precise_time_s();
for (core_id, cycles_stalled, total_cycles) in simulator.report().iter().cloned() {
- println!("Core {}: stalled {:08} of {:08} cycles ({:.2}%)",
+ println!("Core {}: stalled {:8} of {:8} cycles ({:.2}%)",
core_id,
cycles_stalled,
total_cycles,