summaryrefslogtreecommitdiff
path: root/kern/tru64/tru64_system.cc
diff options
context:
space:
mode:
authorLisa Hsu <hsul@eecs.umich.edu>2004-05-18 01:40:03 -0400
committerLisa Hsu <hsul@eecs.umich.edu>2004-05-18 01:40:03 -0400
commita0ccdf8aba8f71c8d66c03f5c6907d0a3c2e091f (patch)
tree71de26a0139e7db042c79989ae745377d98c3d23 /kern/tru64/tru64_system.cc
parent4d98ab1ca92c2d88d3ee13a7518acc36a6d5bf84 (diff)
parent02af86f7e813db27b12214ea377948f07f891b69 (diff)
downloadgem5-a0ccdf8aba8f71c8d66c03f5c6907d0a3c2e091f.tar.xz
merge m5 with linux for the event and binning lifting
--HG-- extra : convert_revision : 09d3678746c2e9a93a9982dc75d5e1ac309cb2fa
Diffstat (limited to 'kern/tru64/tru64_system.cc')
-rw-r--r--kern/tru64/tru64_system.cc69
1 files changed, 2 insertions, 67 deletions
diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc
index 905ff5df6..ebd78c58b 100644
--- a/kern/tru64/tru64_system.cc
+++ b/kern/tru64/tru64_system.cc
@@ -35,6 +35,7 @@
#include "cpu/exec_context.hh"
#include "kern/tru64/tru64_events.hh"
#include "kern/tru64/tru64_system.hh"
+#include "kern/system_events.hh"
#include "mem/functional_mem/memory_control.hh"
#include "mem/functional_mem/physical_memory.hh"
#include "sim/builder.hh"
@@ -48,7 +49,7 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
const string &kernel_path, const string &console_path,
const string &palcode, const string &boot_osflags,
const bool _bin, const vector<string> &binned_fns)
- : System(_name, _init_param, _memCtrl, _physmem, _bin),
+ : System(_name, _init_param, _memCtrl, _physmem, _bin, binned_fns),
bin(_bin), binned_fns(binned_fns)
{
kernelSymtab = new SymbolTable;
@@ -176,33 +177,14 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
// BINNING STUFF
if (bin == true) {
int end = binned_fns.size();
- assert(!(end & 1));
-
- Statistics::MainBin *Bin;
Addr address = 0;
- fnEvents.resize(end>>1);
-
for (int i = 0; i < end; i +=2) {
- Bin = new Statistics::MainBin(binned_fns[i]);
- fnBins.insert(make_pair(binned_fns[i], Bin));
-
- fnEvents[(i>>1)] = new FnEvent(&pcEventQueue, binned_fns[i], this);
if (kernelSymtab->findAddress(binned_fns[i], address))
fnEvents[(i>>1)]->schedule(address);
else
panic("could not find kernel symbol %s\n", binned_fns[i]);
-
- if (binned_fns[i+1] == "null")
- populateMap(binned_fns[i], "");
- else
- populateMap(binned_fns[i], binned_fns[i+1]);
}
-
- fnCalls
- .name(name() + ":fnCalls")
- .desc("all fn calls being tracked")
- ;
}
//
}
@@ -226,14 +208,6 @@ Tru64System::~Tru64System()
delete debugPrintfEvent;
delete debugPrintfrEvent;
delete dumpMbufEvent;
-
- if (bin == true) {
- int end = fnEvents.size();
- for (int i = 0; i < end; ++i) {
- delete fnEvents[i];
- }
- fnEvents.clear();
- }
}
int
@@ -274,45 +248,6 @@ Tru64System::breakpoint()
return remoteGDB[0]->trap(ALPHA_KENTRY_INT);
}
-void
-Tru64System::populateMap(std::string callee, std::string caller)
-{
- multimap<const string, string>::const_iterator i;
- i = callerMap.insert(make_pair(callee, caller));
- assert(i != callerMap.end() && "should not fail populating callerMap");
-}
-
-bool
-Tru64System::findCaller(std::string callee, std::string caller) const
-{
- typedef multimap<const std::string, std::string>::const_iterator iter;
- pair<iter, iter> range;
-
- range = callerMap.equal_range(callee);
- for (iter i = range.first; i != range.second; ++i) {
- if ((*i).second == caller)
- return true;
- }
- return false;
-}
-
-void
-Tru64System::dumpState(ExecContext *xc) const
-{
- if (xc->swCtx) {
- stack<fnCall *> copy(xc->swCtx->callStack);
- if (copy.empty())
- return;
- DPRINTF(TCPIP, "xc->swCtx, size: %d:\n", copy.size());
- fnCall *top;
- DPRINTF(TCPIP, "|| call : %d\n",xc->swCtx->calls);
- for (top = copy.top(); !copy.empty(); copy.pop() ) {
- top = copy.top();
- DPRINTF(TCPIP, "|| %13s : %s \n", top->name, top->myBin->name());
- }
- }
-}
-
BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
Param<bool> bin;