CPA: Add code to automatically record function symbols as CPU executes.
This commit is contained in:
parent
6fd4bc34a1
commit
d447ccb2c6
4 changed files with 20 additions and 0 deletions
|
@ -35,6 +35,7 @@
|
|||
#include "arch/alpha/osfpal.hh"
|
||||
#include "arch/alpha/tlb.hh"
|
||||
#include "arch/alpha/kgdb.h"
|
||||
#include "base/cp_annotate.hh"
|
||||
#include "base/debug.hh"
|
||||
#include "base/remote_gdb.hh"
|
||||
#include "base/stats/events.hh"
|
||||
|
@ -560,6 +561,8 @@ SimpleThread::hwrei()
|
|||
|
||||
setNextPC(readMiscRegNoEffect(IPR_EXC_ADDR));
|
||||
|
||||
CPA::cpa()->swAutoBegin(tc, readNextPC());
|
||||
|
||||
if (!misspeculating()) {
|
||||
if (kernelStats)
|
||||
kernelStats->hwrei();
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <string>
|
||||
|
||||
#include "arch/utility.hh"
|
||||
#include "base/cp_annotate.hh"
|
||||
#include "base/loader/symtab.hh"
|
||||
#include "base/timebuf.hh"
|
||||
#include "cpu/exetrace.hh"
|
||||
|
@ -1097,6 +1098,12 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num)
|
|||
if (node)
|
||||
thread[tid]->profileNode = node;
|
||||
}
|
||||
if (CPA::available()) {
|
||||
if (head_inst->isControl()) {
|
||||
ThreadContext *tc = thread[tid]->getTC();
|
||||
CPA::cpa()->swAutoBegin(tc, head_inst->readNextPC());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (head_inst->traceData) {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
* Authors: Kevin Lim
|
||||
*/
|
||||
|
||||
#include "base/cp_annotate.hh"
|
||||
#include "cpu/o3/dyn_inst.hh"
|
||||
|
||||
template <class Impl>
|
||||
|
@ -136,6 +137,10 @@ BaseO3DynInst<Impl>::hwrei()
|
|||
// Set the next PC based on the value of the EXC_ADDR IPR.
|
||||
this->setNextPC(this->cpu->readMiscRegNoEffect(AlphaISA::IPR_EXC_ADDR,
|
||||
this->threadNumber));
|
||||
if (CPA::available()) {
|
||||
ThreadContext *tc = this->cpu->tcBase(this->threadNumber);
|
||||
CPA::cpa()->swAutoBegin(tc, this->readNextPC());
|
||||
}
|
||||
|
||||
// Tell CPU to clear any state it needs to if a hwrei is taken.
|
||||
this->cpu->hwrei(this->threadNumber);
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "arch/utility.hh"
|
||||
#include "arch/faults.hh"
|
||||
#include "base/cprintf.hh"
|
||||
#include "base/cp_annotate.hh"
|
||||
#include "base/inifile.hh"
|
||||
#include "base/loader/symtab.hh"
|
||||
#include "base/misc.hh"
|
||||
|
@ -450,6 +451,10 @@ BaseSimpleCPU::postExecute()
|
|||
comLoadEventQueue[0]->serviceEvents(numLoad);
|
||||
}
|
||||
|
||||
if (CPA::available()) {
|
||||
CPA::cpa()->swAutoBegin(tc, thread->readNextPC());
|
||||
}
|
||||
|
||||
traceFunctions(thread->readPC());
|
||||
|
||||
if (traceData) {
|
||||
|
|
Loading…
Reference in a new issue