From 0a588332811b1f45d4ae7fea74914ea29e968644 Mon Sep 17 00:00:00 2001
From: David Li
Date: Mon, 25 Jan 2016 11:39:29 -0500
Subject: feat(cache): add callback for requesting new block
---
src/cache.rs | 3 +++
src/memory.rs | 1 +
2 files changed, 4 insertions(+)
diff --git a/src/cache.rs b/src/cache.rs
index 8b7145a..417a16d 100644
--- a/src/cache.rs
+++ b/src/cache.rs
@@ -65,6 +65,7 @@ struct Block {
}
pub trait EventHandler {
+ fn block_requested(&self, location: CacheLocation);
fn block_fetched(&self, location: CacheLocation);
}
@@ -72,6 +73,7 @@ pub struct EmptyEventHandler {}
impl EventHandler for EmptyEventHandler {
fn block_fetched(&self, _: CacheLocation) {}
+ fn block_requested(&self, _: CacheLocation) {}
}
// TODO: probably want different caches for different strategies, and
@@ -207,6 +209,7 @@ impl<'a, T: EventHandler> MemoryInterface for DirectMappedCache<'a, T> {
error: None,
waiting_on: 0,
});
+ self.events.block_requested(location);
}
else if let Some(ref mut fetch_request) = set.fetch_request {
if let Some(ref err) = fetch_request.error {
diff --git a/src/memory.rs b/src/memory.rs
index 33a9503..2a5b717 100644
--- a/src/memory.rs
+++ b/src/memory.rs
@@ -126,6 +126,7 @@ pub trait MemoryInterface {
pub type SharedMemory<'a> = Rc>;
+// TODO: rename to BijectiveMmu?
pub trait Mmu {
fn translate(&self, address: isa::Address) -> isa::Address;
}
--
cgit v1.2.3