From d53c6c168afa7eafdf8c4fa10a10f835db25e3da Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Tue, 15 Jun 2004 10:48:08 -0700 Subject: Get software prefetching to work in full-system mode. Mostly a matter of keeping prefetches to invalid addrs from messing up VM IPRs. Also discovered that wh64s were not being treated as prefetches, when they really should be (for the most part, anyway). arch/alpha/alpha_memory.cc: arch/alpha/alpha_memory.hh: - Get rid of intrlock flag for locking VM fault regs (a la EV5); instead, just don't update regs on VPTE loads (a la EV6). - Add NO_FAULT MemReq flag to indicate references that should not cause page faults (i.e., prefetches). arch/alpha/ev5.cc: - Get rid of intrlock flag for locking VM fault regs (a la EV5); instead, just don't update regs on VPTE loads (a la EV6). - Add Fault trace flag. arch/alpha/isa_desc: - Add NO_FAULT MemReq flag to indicate references that should not cause page faults (i.e., prefetches). - Mark wh64 as a "data prefetch" instruction so it gets controlled properly by the FullCPU data prefetch control switch. - Align wh64 EA in decoder so issue stage doesn't need to worry about it. arch/alpha/isa_traits.hh: - Get rid of intrlock flag for locking VM fault regs (a la EV5); instead, just don't update regs on VPTE loads (a la EV6). base/traceflags.py: - Add Fault trace flag. cpu/simple_cpu/simple_cpu.hh: - Pass MemReq flags to writeHint() operation. cpu/static_inst.hh: Update comment re: prefetches. --HG-- extra : convert_revision : 62e466b0f4c0ff9961796270fa2e371ec24bcbb6 --- base/traceflags.py | 1 + 1 file changed, 1 insertion(+) (limited to 'base') diff --git a/base/traceflags.py b/base/traceflags.py index 69f4e7ab8..a01eae3eb 100644 --- a/base/traceflags.py +++ b/base/traceflags.py @@ -66,6 +66,7 @@ baseFlags = [ 'AlphaConsole', 'Flow', 'Interrupt', + 'Fault', 'Cycle', 'Loader', 'MMU', -- cgit v1.2.3 From e05dbb5116b9ff0984ea8214ec921d2db3aed41d Mon Sep 17 00:00:00 2001 From: Lisa Hsu Date: Mon, 21 Jun 2004 17:25:18 -0400 Subject: l base/traceflags.py: added some more traceflags for ethernet to break it up better dev/etherpkt.hh: since we are not network host order, must reverse bytes for these typechecks. also, overload isTcp/UdpPkt to take an argument so you don't have to reget the ip header if you've already got one. dev/ns_gige.cc: 1) add some functions that reverse Endianness so we can generate adn evaluate checksum adn dprintf data accurately/more understandably 2) forget about the implementation of fifo fill/drain thresholds, it's not used by the driver much, nor does it matter with use sending/receiving in whole packets anyway. get rid of teh associated variables. 3) get rid of txFifoCnt the variable, it's redundant and unnecessary, just use txFifoAvail. 4) change io_enable to ioEnable, just to be picky. 5) modify some DPRINTF's to be clearer, also added a lot, and spread them into better traceflag categories 6) fix the device bug! it's the intrTick = 0 at teh beginning of cpuInterrupt(). 7) clear some bools in regsReset() so they don't holdover wrong state 8) fix pseudo header generation for Tcp checksumming to account for network order dev/ns_gige.hh: change io_enable to ioEnable, get rid of fill/drain thresh related variables and txFifoCnt, which is redundant --HG-- extra : convert_revision : c538b75731f3c9e04354f57e6df9a40aeca5096d --- base/traceflags.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'base') diff --git a/base/traceflags.py b/base/traceflags.py index 3d7623965..0898a283a 100644 --- a/base/traceflags.py +++ b/base/traceflags.py @@ -74,6 +74,10 @@ baseFlags = [ 'EthernetPIO', 'EthernetDMA', 'EthernetData', + 'EthernetDesc', + 'EthernetIntr', + 'EthernetSM', + 'EthernetCksum', 'GDBMisc', 'GDBAcc', 'GDBRead', @@ -124,7 +128,7 @@ compoundFlagMap = { 'GDBAll' : [ 'GDBMisc', 'GDBAcc', 'GDBRead', 'GDBWrite', 'GDBSend', 'GDBRecv', 'GDBExtra' ], 'ScsiAll' : [ 'ScsiDisk', 'ScsiCtrl', 'ScsiNone' ], 'DiskImageAll' : [ 'DiskImage', 'DiskImageRead', 'DiskImageWrite' ], - 'EthernetAll' : [ 'Ethernet', 'EthernetPIO', 'EthernetDMA', 'EthernetData' ], + 'EthernetAll' : [ 'Ethernet', 'EthernetPIO', 'EthernetDMA', 'EthernetData' , 'EthernetDesc', 'EthernetIntr', 'EthernetSM', 'EthernetCksum' ], 'IdeAll' : [ 'IdeCtrl', 'IdeDisk' ] } -- cgit v1.2.3 From c1e58b6bf6b353f9355aafd8ed2cb86e6d00e32a Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 21 Jun 2004 22:42:16 -0700 Subject: Handle SIGABRT a little more nicely. base/misc.cc: Don't dump trace in panic(), SIGABRT handler will do it now. sim/main.cc: Add SIGABRT handler that prints curTick and dumps buffered trace (if any). This doesn't work as well as I would like since the buffered trace records often contain stale references to stack-resident temporary std::string objects. Someday we'll have to put in a fix for that. --HG-- extra : convert_revision : 67576efbf5c10e63e255fc9a9ec520326fd3567b --- base/misc.cc | 5 ----- 1 file changed, 5 deletions(-) (limited to 'base') diff --git a/base/misc.cc b/base/misc.cc index 5caf96d40..1304fb128 100644 --- a/base/misc.cc +++ b/base/misc.cc @@ -61,11 +61,6 @@ __panic(const string &format, cp::ArgList &args, const char *func, delete &args; -#if TRACING_ON - // dump trace buffer, if there is one - Trace::theLog.dump(cerr); -#endif - abort(); } -- cgit v1.2.3