aboutsummaryrefslogtreecommitdiff
path: root/src/system.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/system.rs')
-rw-r--r--src/system.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/system.rs b/src/system.rs
index a69beb4..f0f3095 100644
--- a/src/system.rs
+++ b/src/system.rs
@@ -3,20 +3,21 @@ use std::cell::RefCell;
use std::rc::Rc;
use rustv::isa;
-use rustv::memory::{Mmu, SharedMemory};
+use rustv::memory::{MemoryInterface, Mmu};
use rustv::register_file::RegisterFile;
use rustv::syscall;
use rustv::trap::Trap;
+use memory_tracker::MemoryTracker;
use shareable_cache::ShareableCache;
pub struct SyscallHandler<'a> {
- memory: SharedMemory<'a>,
+ memory: Rc<RefCell<MemoryTracker>>,
caches: Vec<Rc<RefCell<ShareableCache<'a>>>>,
}
impl<'a> SyscallHandler<'a> {
- pub fn new(memory: SharedMemory<'a>,
+ pub fn new(memory: Rc<RefCell<MemoryTracker>>,
caches: Vec<Rc<RefCell<ShareableCache<'a>>>>)
-> SyscallHandler<'a> {
SyscallHandler {
@@ -93,4 +94,9 @@ impl<'a> syscall::SyscallHandler for SyscallHandler<'a> {
}
}
}
+
+ fn should_halt(&self) -> bool {
+ let (p1, p2) = self.memory.borrow().score();
+ (p1 >= 0x1000000) || (p2 >= 0x1000000)
+ }
}