diff options
-rw-r--r-- | arch/alpha/pseudo_inst.hh | 7 | ||||
-rw-r--r-- | base/statistics.cc | 8 | ||||
-rw-r--r-- | cpu/memtest/memtest.cc | 1 | ||||
-rw-r--r-- | kern/tru64/tru64_system.cc | 31 | ||||
-rw-r--r-- | kern/tru64/tru64_system.hh | 4 | ||||
-rwxr-xr-x | util/rundiff | 6 |
6 files changed, 49 insertions, 8 deletions
diff --git a/arch/alpha/pseudo_inst.hh b/arch/alpha/pseudo_inst.hh index 60031f8cd..85f432504 100644 --- a/arch/alpha/pseudo_inst.hh +++ b/arch/alpha/pseudo_inst.hh @@ -30,6 +30,13 @@ class ExecContext; namespace AlphaPseudo { + /** + * @todo these externs are only here for a hack in fullCPU::takeOver... + */ + extern bool doStatisticsInsts; + extern bool doCheckpointInsts; + extern bool doQuiesce; + void quiesce(ExecContext *xc); void m5exit(ExecContext *xc); void m5exit_old(ExecContext *xc); diff --git a/base/statistics.cc b/base/statistics.cc index 3af764609..69b663dbb 100644 --- a/base/statistics.cc +++ b/base/statistics.cc @@ -272,6 +272,8 @@ Database::reset() ++i; } + MainBin *orig = MainBin::current(); + list<GenBin *>::iterator bi = bins.begin(); list<GenBin *>::iterator be = bins.end(); while (bi != be) { @@ -286,6 +288,8 @@ Database::reset() } ++bi; } + + orig->activate(); } void @@ -588,13 +592,13 @@ PrintOne(ostream &stream, result_t value, #ifdef STAT_DISPLAY_COMPAT if (flags & __substat) { - ccprintf(stream, "%32s%12s%10s%10s", name, + ccprintf(stream, "%32s %12s %10s %10s", name, ValueToString(value, precision), pdfstr, cdfstr); } else #endif { - ccprintf(stream, "%-40s%12s%10s%10s", name, + ccprintf(stream, "%-40s %12s %10s %10s", name, ValueToString(value, precision), pdfstr, cdfstr); } diff --git a/cpu/memtest/memtest.cc b/cpu/memtest/memtest.cc index b6224996e..db24bb507 100644 --- a/cpu/memtest/memtest.cc +++ b/cpu/memtest/memtest.cc @@ -223,6 +223,7 @@ MemTest::tick() req->paddr = ((base) ? baseAddr1 : baseAddr2) + offset1; } bool probe = (rand() % 2 == 1) && !req->isUncacheable(); + probe = false; req->size = 1 << access_size; req->data = new uint8_t[req->size]; diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc index f6f147d07..3fa07828b 100644 --- a/kern/tru64/tru64_system.cc +++ b/kern/tru64/tru64_system.cc @@ -164,6 +164,9 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, sosendBin = new Statistics::MainBin(name() + " sosend"); fnBins.insert(make_pair("sosend", sosendBin)); + tcpSosendBin = new Statistics::MainBin(name() + " tcp_sosend"); + fnBins.insert(make_pair("tcp_sosend", tcpSosendBin)); + tcpOutputBin = new Statistics::MainBin(name() + " tcp_output"); fnBins.insert(make_pair("tcp_output", tcpOutputBin)); @@ -182,6 +185,9 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, esTxeofBin = new Statistics::MainBin(name() + " es_txeof"); fnBins.insert(make_pair("es_txeof", esTxeofBin)); + idleThreadBin = new Statistics::MainBin(name() + " idle_thread"); + fnBins.insert(make_pair("idle_thread", idleThreadBin)); + } //INSTRUMENTATION CODEGEN END #endif //FS_MEASURE @@ -226,12 +232,14 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, sooWriteEvent = new FnEvent(&pcEventQueue, "soo_write", this); senditEvent = new FnEvent(&pcEventQueue, "sendit", this); sosendEvent = new FnEvent(&pcEventQueue, "sosend", this); + tcpSosendEvent = new FnEvent(&pcEventQueue, "tcp_sosend", this); tcpOutputEvent = new FnEvent(&pcEventQueue, "tcp_output", this); ipOutputEvent = new FnEvent(&pcEventQueue, "ip_output", this); etherOutputEvent = new FnEvent(&pcEventQueue, "ether_output", this); esStartEvent = new FnEvent(&pcEventQueue, "es_start", this); esTransmitEvent = new FnEvent(&pcEventQueue, "es_transmit", this); esTxeofEvent = new FnEvent(&pcEventQueue, "es_txeof", this); + idleThreadEvent = new FnEvent(&pcEventQueue, "idle_thread", this); } //INSTRUMENTATION CODEGEN END #endif //FS_MEASURE @@ -405,6 +413,11 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, else panic("could not find kernel symbol \'sosend\'"); + if (kernelSymtab->findAddress("tcp_sosend", addr)) + tcpSosendEvent->schedule(addr); + else + panic("could not find kernel symbol \'tcp_sosend\'"); + if (kernelSymtab->findAddress("tcp_output", addr)) tcpOutputEvent->schedule(addr); else @@ -435,6 +448,11 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, else panic("could not find kernel symbol \'es_txeof\'"); + if (kernelSymtab->findAddress("idle_thread", addr)) + idleThreadEvent->schedule(addr); + else + panic("could not find kernel symbol \'idle_thread\'"); + } //INSTRUMENTATION CODEGEN END if (bin == true) { @@ -466,16 +484,21 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, populateMap("soreceive", "soo_read"); populateMap("write", ""); - populateMap("sendit", "write"); + populateMap("osend", ""); + populateMap("soo_write", "write"); + populateMap("sendit", "osend"); populateMap("sosend", "sendit"); - - populateMap("tcp_output", ""); + populateMap("sosend", "soo_write"); + populateMap("tcp_sosend", "sosend"); + populateMap("tcp_output", "tcp_sosend"); populateMap("ip_output", "tcp_output"); populateMap("ether_output", "ip_output"); populateMap("es_start", "ether_output"); populateMap("es_transmit", "es_start"); populateMap("es_txeof", "es_intr"); + + populateMap("idle_thread", ""); } #endif //FS_MEASURE } @@ -524,12 +547,14 @@ Tru64System::~Tru64System() delete sooWriteEvent; delete senditEvent; delete sosendEvent; + delete tcpSosendEvent; delete tcpOutputEvent; delete ipOutputEvent; delete etherOutputEvent; delete esStartEvent; delete esTransmitEvent; delete esTxeofEvent; + delete idleThreadEvent; } //INSTRUMENTATION CODEGEN END #endif //FS_MEASURE diff --git a/kern/tru64/tru64_system.hh b/kern/tru64/tru64_system.hh index 42107494f..93cc908e3 100644 --- a/kern/tru64/tru64_system.hh +++ b/kern/tru64/tru64_system.hh @@ -87,12 +87,14 @@ class Tru64System : public System Statistics::MainBin *sooWriteBin; Statistics::MainBin *senditBin; Statistics::MainBin *sosendBin; + Statistics::MainBin *tcpSosendBin; Statistics::MainBin *tcpOutputBin; Statistics::MainBin *ipOutputBin; Statistics::MainBin *etherOutputBin; Statistics::MainBin *esStartBin; Statistics::MainBin *esTransmitBin; Statistics::MainBin *esTxeofBin; + Statistics::MainBin *idleThreadBin; //INSTRUMENTATION CODEGEN END #endif //FS_MEASURE @@ -130,12 +132,14 @@ class Tru64System : public System FnEvent *sooWriteEvent; FnEvent *senditEvent; FnEvent *sosendEvent; + FnEvent *tcpSosendEvent; FnEvent *tcpOutputEvent; FnEvent *ipOutputEvent; FnEvent *etherOutputEvent; FnEvent *esStartEvent; FnEvent *esTransmitEvent; FnEvent *esTxeofEvent; + FnEvent *idleThreadEvent; //INSTRUMENTATION CODEGEN END #endif //FS_MEASURE diff --git a/util/rundiff b/util/rundiff index 4aed9200e..732b84d21 100755 --- a/util/rundiff +++ b/util/rundiff @@ -49,9 +49,9 @@ use strict; # and generally quite adequate algorithm will be used instead. my $use_complexdiff = 0; -if ($use_complexdiff) { - use Algorithm::Diff qw(traverse_sequences); -}; +#if ($use_complexdiff) { +# use Algorithm::Diff qw(traverse_sequences); +#}; my $lookahead_lines = 200; my $precontext_lines = 3; |