Make it so the quiesce instruction is conditionally enabled

arch/alpha/isa_desc:
    move the quiesce instruction out of here so I can conditionally
    enable it.
arch/alpha/pseudo_inst.cc:
    conditionally enable quiesce
arch/alpha/pseudo_inst.hh:
    add quiesce

--HG--
extra : convert_revision : e1c474c4bf8761ff58073785d82b2bec9f632885
This commit is contained in:
Nathan Binkert 2003-11-03 16:47:08 -05:00
parent ad8c0da4a4
commit c55e6b495e
3 changed files with 22 additions and 7 deletions

View file

@ -2410,11 +2410,8 @@ decode OPCODE default Unknown::unknown() {
} }
}}); }});
0x01: quiesce({{ 0x01: quiesce({{
if (!xc->misspeculating()) { if (!xc->misspeculating())
Annotate::QUIESCE(xc); AlphaPseudo::quiesce(xc);
xc->setStatus(ExecContext::Suspended);
xc->kernelStats.quiesce();
}
}}); }});
0x10: ivlb({{ 0x10: ivlb({{
if (!xc->misspeculating()) { if (!xc->misspeculating()) {

View file

@ -30,6 +30,7 @@
#include "arch/alpha/pseudo_inst.hh" #include "arch/alpha/pseudo_inst.hh"
#include "cpu/exec_context.hh" #include "cpu/exec_context.hh"
#include "sim/annotation.hh"
#include "sim/param.hh" #include "sim/param.hh"
#include "sim/serialize.hh" #include "sim/serialize.hh"
#include "sim/sim_exit.hh" #include "sim/sim_exit.hh"
@ -42,6 +43,18 @@ namespace AlphaPseudo
{ {
bool doStatisticsInsts; bool doStatisticsInsts;
bool doCheckpointInsts; bool doCheckpointInsts;
bool doQuiesce;
void
quiesce(ExecContext *xc)
{
if (!doQuiesce)
return;
Annotate::QUIESCE(xc);
xc->setStatus(ExecContext::Suspended);
xc->kernelStats.quiesce();
}
void void
m5exit_old(ExecContext *xc) m5exit_old(ExecContext *xc)
@ -126,16 +139,20 @@ namespace AlphaPseudo
Context context("PseudoInsts"); Context context("PseudoInsts");
Param<bool> __quiesce(&context, "quiesce",
"enable quiesce instructions",
true);
Param<bool> __statistics(&context, "statistics", Param<bool> __statistics(&context, "statistics",
"enable the statistics pseudo instructions", "enable statistics pseudo instructions",
true); true);
Param<bool> __checkpoint(&context, "checkpoint", Param<bool> __checkpoint(&context, "checkpoint",
"enable the checkpoint pseudo instructions", "enable checkpoint pseudo instructions",
true); true);
void void
Context::checkParams() Context::checkParams()
{ {
doQuiesce = __quiesce;
doStatisticsInsts = __statistics; doStatisticsInsts = __statistics;
doCheckpointInsts = __checkpoint; doCheckpointInsts = __checkpoint;
} }

View file

@ -30,6 +30,7 @@ class ExecContext;
namespace AlphaPseudo namespace AlphaPseudo
{ {
void quiesce(ExecContext *xc);
void m5exit(ExecContext *xc); void m5exit(ExecContext *xc);
void m5exit_old(ExecContext *xc); void m5exit_old(ExecContext *xc);
void resetstats(ExecContext *xc); void resetstats(ExecContext *xc);