diff options
author | David Li <li.davidm96@gmail.com> | 2016-01-16 10:05:46 -0700 |
---|---|---|
committer | David Li <li.davidm96@gmail.com> | 2016-01-16 10:05:46 -0700 |
commit | 007e7f9c0fbc71c789d5a551012c2f6724e25e6b (patch) | |
tree | b52de4f301a50e17527955a07824683686fd64bd /src/system.rs | |
parent | a2947b0108ac0196078d2365adfdb7090643284d (diff) |
Stop game once score reached
Diffstat (limited to 'src/system.rs')
-rw-r--r-- | src/system.rs | 12 |
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) + } } |