diff options
author | Nathan Binkert <binkertn@umich.edu> | 2003-11-03 16:47:53 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2003-11-03 16:47:53 -0500 |
commit | 959f0b228b1658b5c0776bd9d91c16bc62cd1f1c (patch) | |
tree | 2833abb1afd375b0f0d43f11f83088cd49df1ee6 | |
parent | ea233ee2aac3b74a817ae3c20305798d420dcaa2 (diff) | |
parent | c55e6b495e569e2b908ab4f58c3ecb529c64f288 (diff) | |
download | gem5-959f0b228b1658b5c0776bd9d91c16bc62cd1f1c.tar.xz |
Merge zizzer.eecs.umich.edu:/bk/m5
into zans.eecs.umich.edu:/z/binkertn/research/m5/latest
--HG--
extra : convert_revision : 2029fb26a8c971a791161c9e24dfdc1135f3aaf8
-rw-r--r-- | arch/alpha/isa_desc | 7 | ||||
-rw-r--r-- | arch/alpha/pseudo_inst.cc | 21 | ||||
-rw-r--r-- | arch/alpha/pseudo_inst.hh | 1 |
3 files changed, 22 insertions, 7 deletions
diff --git a/arch/alpha/isa_desc b/arch/alpha/isa_desc index ec9fd183a..4364bae34 100644 --- a/arch/alpha/isa_desc +++ b/arch/alpha/isa_desc @@ -2410,11 +2410,8 @@ decode OPCODE default Unknown::unknown() { } }}); 0x01: quiesce({{ - if (!xc->misspeculating()) { - Annotate::QUIESCE(xc); - xc->setStatus(ExecContext::Suspended); - xc->kernelStats.quiesce(); - } + if (!xc->misspeculating()) + AlphaPseudo::quiesce(xc); }}); 0x10: ivlb({{ if (!xc->misspeculating()) { diff --git a/arch/alpha/pseudo_inst.cc b/arch/alpha/pseudo_inst.cc index f8e0036ba..c62de3ce6 100644 --- a/arch/alpha/pseudo_inst.cc +++ b/arch/alpha/pseudo_inst.cc @@ -30,6 +30,7 @@ #include "arch/alpha/pseudo_inst.hh" #include "cpu/exec_context.hh" +#include "sim/annotation.hh" #include "sim/param.hh" #include "sim/serialize.hh" #include "sim/sim_exit.hh" @@ -42,6 +43,18 @@ namespace AlphaPseudo { bool doStatisticsInsts; bool doCheckpointInsts; + bool doQuiesce; + + void + quiesce(ExecContext *xc) + { + if (!doQuiesce) + return; + + Annotate::QUIESCE(xc); + xc->setStatus(ExecContext::Suspended); + xc->kernelStats.quiesce(); + } void m5exit_old(ExecContext *xc) @@ -126,16 +139,20 @@ namespace AlphaPseudo Context context("PseudoInsts"); + Param<bool> __quiesce(&context, "quiesce", + "enable quiesce instructions", + true); Param<bool> __statistics(&context, "statistics", - "enable the statistics pseudo instructions", + "enable statistics pseudo instructions", true); Param<bool> __checkpoint(&context, "checkpoint", - "enable the checkpoint pseudo instructions", + "enable checkpoint pseudo instructions", true); void Context::checkParams() { + doQuiesce = __quiesce; doStatisticsInsts = __statistics; doCheckpointInsts = __checkpoint; } diff --git a/arch/alpha/pseudo_inst.hh b/arch/alpha/pseudo_inst.hh index b212a392c..60031f8cd 100644 --- a/arch/alpha/pseudo_inst.hh +++ b/arch/alpha/pseudo_inst.hh @@ -30,6 +30,7 @@ class ExecContext; namespace AlphaPseudo { + void quiesce(ExecContext *xc); void m5exit(ExecContext *xc); void m5exit_old(ExecContext *xc); void resetstats(ExecContext *xc); |