summaryrefslogtreecommitdiff
path: root/configs/common/Simulation.py
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2007-01-30 18:27:16 -0500
committerAli Saidi <saidi@eecs.umich.edu>2007-01-30 18:27:16 -0500
commit36a1912bf01433acc86837ed60da6d510323aa1e (patch)
tree7d9c35533d7e6a1c46cd75b98658bf6e46a55d48 /configs/common/Simulation.py
parentcf0ba1dfb09c0e16201d963b76078625dc7adca4 (diff)
parentac36fb6e64dadb9eef5c48863b42969a61bbdaec (diff)
downloadgem5-36a1912bf01433acc86837ed60da6d510323aa1e.tar.xz
Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem --HG-- extra : convert_revision : 276b640c5c5a51e88e9bd630960ad462d9f0cb8d
Diffstat (limited to 'configs/common/Simulation.py')
-rw-r--r--configs/common/Simulation.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index e037d0343..8374d2fb5 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2006 The Regents of The University of Michigan
+# Copyright (c) 2006-2007 The Regents of The University of Michigan
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -144,6 +144,10 @@ def run(options, root, testsys, cpu_class):
if cpt_num > len(cpts):
m5.panic('Checkpoint %d not found' % cpt_num)
+ ## Adjust max tick based on our starting tick
+ maxtick = maxtick - int(cpts[cpt_num - 1])
+
+ ## Restore the checkpoint
m5.restoreCheckpoint(root,
joinpath(cptdir, "cpt.%s" % cpts[cpt_num - 1]))
@@ -185,7 +189,8 @@ def run(options, root, testsys, cpu_class):
sim_ticks = when
exit_cause = "maximum %d checkpoints dropped" % max_checkpoints
- while num_checkpoints < max_checkpoints:
+ while num_checkpoints < max_checkpoints and \
+ exit_event.getCause() != "user interrupt received":
if (sim_ticks + period) > maxtick:
exit_event = m5.simulate(maxtick - sim_ticks)
exit_cause = exit_event.getCause()
@@ -199,6 +204,10 @@ def run(options, root, testsys, cpu_class):
m5.checkpoint(root, joinpath(cptdir, "cpt.%d"))
num_checkpoints += 1
+ if exit_event.getCause() == "user interrupt received":
+ exit_cause = exit_event.getCause();
+
+
else: #no checkpoints being taken via this script
exit_event = m5.simulate(maxtick)