From 007e7f9c0fbc71c789d5a551012c2f6724e25e6b Mon Sep 17 00:00:00 2001 From: David Li Date: Sat, 16 Jan 2016 10:05:46 -0700 Subject: Stop game once score reached --- src/system.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/system.rs') 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>, caches: Vec>>>, } impl<'a> SyscallHandler<'a> { - pub fn new(memory: SharedMemory<'a>, + pub fn new(memory: Rc>, caches: Vec>>>) -> 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) + } } -- cgit v1.2.3