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:
parent
ad8c0da4a4
commit
c55e6b495e
3 changed files with 22 additions and 7 deletions
|
@ -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()) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue