summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas@sandberg.pp.se>2013-06-03 13:21:21 +0200
committerAndreas Sandberg <andreas@sandberg.pp.se>2013-06-03 13:21:21 +0200
commit743f80712e08f02f7b3a9a286550e2635104f714 (patch)
treefabbf0680c0f345c7e557be7b6c622d8b4736f95 /src
parent2b65fce5d98a23301676acd972fd78f61a988ab1 (diff)
downloadgem5-743f80712e08f02f7b3a9a286550e2635104f714.tar.xz
sim: Add debug output when executing pseudo-instructions
Diffstat (limited to 'src')
-rw-r--r--src/sim/SConscript1
-rw-r--r--src/sim/pseudo_inst.cc29
2 files changed, 30 insertions, 0 deletions
diff --git a/src/sim/SConscript b/src/sim/SConscript
index 42993b90f..093130f24 100644
--- a/src/sim/SConscript
+++ b/src/sim/SConscript
@@ -72,6 +72,7 @@ DebugFlag('IPI')
DebugFlag('IPR')
DebugFlag('Interrupt')
DebugFlag('Loader')
+DebugFlag('PseudoInst')
DebugFlag('Stack')
DebugFlag('SyscallVerbose')
DebugFlag('TimeSync')
diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc
index 4166797fb..0dcf5c32b 100644
--- a/src/sim/pseudo_inst.cc
+++ b/src/sim/pseudo_inst.cc
@@ -59,6 +59,7 @@
#include "cpu/quiesce_event.hh"
#include "cpu/thread_context.hh"
#include "debug/Loader.hh"
+#include "debug/PseudoInst.hh"
#include "debug/Quiesce.hh"
#include "debug/WorkItems.hh"
#include "params/BaseCPU.hh"
@@ -90,6 +91,8 @@ pseudoInst(ThreadContext *tc, uint8_t func, uint8_t subfunc)
{
uint64_t args[4];
+ DPRINTF(PseudoInst, "PseudoInst::pseudoInst(%i, %i)\n", func, subfunc);
+
// We need to do this in a slightly convoluted way since
// getArgument() might have side-effects on arg_num. We could have
// used the Argument class, but due to the possible side effects
@@ -204,6 +207,7 @@ pseudoInst(ThreadContext *tc, uint8_t func, uint8_t subfunc)
void
arm(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::arm()\n");
if (!FullSystem)
panicFsOnlyPseudoInst("arm");
@@ -214,6 +218,7 @@ arm(ThreadContext *tc)
void
quiesce(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::quiesce()\n");
if (!FullSystem)
panicFsOnlyPseudoInst("quiesce");
@@ -230,6 +235,7 @@ quiesce(ThreadContext *tc)
void
quiesceSkip(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::quiesceSkip()\n");
if (!FullSystem)
panicFsOnlyPseudoInst("quiesceSkip");
@@ -255,6 +261,7 @@ quiesceSkip(ThreadContext *tc)
void
quiesceNs(ThreadContext *tc, uint64_t ns)
{
+ DPRINTF(PseudoInst, "PseudoInst::quiesceNs(%i)\n", ns);
if (!FullSystem)
panicFsOnlyPseudoInst("quiesceNs");
@@ -280,6 +287,7 @@ quiesceNs(ThreadContext *tc, uint64_t ns)
void
quiesceCycles(ThreadContext *tc, uint64_t cycles)
{
+ DPRINTF(PseudoInst, "PseudoInst::quiesceCycles(%i)\n", cycles);
if (!FullSystem)
panicFsOnlyPseudoInst("quiesceCycles");
@@ -305,6 +313,7 @@ quiesceCycles(ThreadContext *tc, uint64_t cycles)
uint64_t
quiesceTime(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::quiesceTime()\n");
if (!FullSystem) {
panicFsOnlyPseudoInst("quiesceTime");
return 0;
@@ -317,12 +326,14 @@ quiesceTime(ThreadContext *tc)
uint64_t
rpns(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::rpns()\n");
return curTick() / SimClock::Int::ns;
}
void
wakeCPU(ThreadContext *tc, uint64_t cpuid)
{
+ DPRINTF(PseudoInst, "PseudoInst::wakeCPU(%i)\n", cpuid);
System *sys = tc->getSystemPtr();
ThreadContext *other_tc = sys->threadContexts[cpuid];
if (other_tc->status() == ThreadContext::Suspended)
@@ -332,6 +343,7 @@ wakeCPU(ThreadContext *tc, uint64_t cpuid)
void
m5exit(ThreadContext *tc, Tick delay)
{
+ DPRINTF(PseudoInst, "PseudoInst::m5exit(%i)\n", delay);
Tick when = curTick() + delay * SimClock::Int::ns;
exitSimLoop("m5_exit instruction encountered", 0, when);
}
@@ -339,6 +351,7 @@ m5exit(ThreadContext *tc, Tick delay)
void
m5fail(ThreadContext *tc, Tick delay, uint64_t code)
{
+ DPRINTF(PseudoInst, "PseudoInst::m5fail(%i, %i)\n", delay, code);
Tick when = curTick() + delay * SimClock::Int::ns;
exitSimLoop("m5_fail instruction encountered", code, when);
}
@@ -346,6 +359,7 @@ m5fail(ThreadContext *tc, Tick delay, uint64_t code)
void
loadsymbol(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::loadsymbol()\n");
if (!FullSystem)
panicFsOnlyPseudoInst("loadsymbol");
@@ -397,6 +411,8 @@ loadsymbol(ThreadContext *tc)
void
addsymbol(ThreadContext *tc, Addr addr, Addr symbolAddr)
{
+ DPRINTF(PseudoInst, "PseudoInst::addsymbol(0x%x, 0x%x)\n",
+ addr, symbolAddr);
if (!FullSystem)
panicFsOnlyPseudoInst("addSymbol");
@@ -413,6 +429,7 @@ addsymbol(ThreadContext *tc, Addr addr, Addr symbolAddr)
uint64_t
initParam(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::initParam()\n");
if (!FullSystem) {
panicFsOnlyPseudoInst("initParam");
return 0;
@@ -425,6 +442,7 @@ initParam(ThreadContext *tc)
void
resetstats(ThreadContext *tc, Tick delay, Tick period)
{
+ DPRINTF(PseudoInst, "PseudoInst::resetstats(%i, %i)\n", delay, period);
if (!tc->getCpuPtr()->params()->do_statistics_insts)
return;
@@ -438,6 +456,7 @@ resetstats(ThreadContext *tc, Tick delay, Tick period)
void
dumpstats(ThreadContext *tc, Tick delay, Tick period)
{
+ DPRINTF(PseudoInst, "PseudoInst::dumpstats(%i, %i)\n", delay, period);
if (!tc->getCpuPtr()->params()->do_statistics_insts)
return;
@@ -451,6 +470,7 @@ dumpstats(ThreadContext *tc, Tick delay, Tick period)
void
dumpresetstats(ThreadContext *tc, Tick delay, Tick period)
{
+ DPRINTF(PseudoInst, "PseudoInst::dumpresetstats(%i, %i)\n", delay, period);
if (!tc->getCpuPtr()->params()->do_statistics_insts)
return;
@@ -464,6 +484,7 @@ dumpresetstats(ThreadContext *tc, Tick delay, Tick period)
void
m5checkpoint(ThreadContext *tc, Tick delay, Tick period)
{
+ DPRINTF(PseudoInst, "PseudoInst::m5checkpoint(%i, %i)\n", delay, period);
if (!tc->getCpuPtr()->params()->do_checkpoint_insts)
return;
@@ -476,6 +497,8 @@ m5checkpoint(ThreadContext *tc, Tick delay, Tick period)
uint64_t
readfile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset)
{
+ DPRINTF(PseudoInst, "PseudoInst::readfile(0x%x, 0x%x, 0x%x)\n",
+ vaddr, len, offset);
if (!FullSystem) {
panicFsOnlyPseudoInst("readfile");
return 0;
@@ -517,6 +540,8 @@ uint64_t
writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset,
Addr filename_addr)
{
+ DPRINTF(PseudoInst, "PseudoInst::writefile(0x%x, 0x%x, 0x%x, 0x%x)\n",
+ vaddr, len, offset, filename_addr);
ostream *os;
// copy out target filename
@@ -558,12 +583,14 @@ writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset,
void
debugbreak(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::debugbreak()\n");
Debug::breakpoint();
}
void
switchcpu(ThreadContext *tc)
{
+ DPRINTF(PseudoInst, "PseudoInst::switchcpu()\n");
exitSimLoop("switchcpu");
}
@@ -575,6 +602,7 @@ switchcpu(ThreadContext *tc)
void
workbegin(ThreadContext *tc, uint64_t workid, uint64_t threadid)
{
+ DPRINTF(PseudoInst, "PseudoInst::workbegin(%i, %i)\n", workid, threadid);
tc->getCpuPtr()->workItemBegin();
System *sys = tc->getSystemPtr();
const System::Params *params = sys->params();
@@ -632,6 +660,7 @@ workbegin(ThreadContext *tc, uint64_t workid, uint64_t threadid)
void
workend(ThreadContext *tc, uint64_t workid, uint64_t threadid)
{
+ DPRINTF(PseudoInst, "PseudoInst::workend(%i, %i)\n", workid, threadid);
tc->getCpuPtr()->workItemEnd();
System *sys = tc->getSystemPtr();
const System::Params *params = sys->params();