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