Ok, what's the status now? I can dedicate some time to looking at this now. Are the patches sent out last week the most up to date?
Nate On Tue, Nov 25, 2008 at 3:45 PM, Gabe Black <[EMAIL PROTECTED]> wrote: > Ok, that sounds good. I didn't look in the second patch or the first one > very closely. Please let me know when/if you're queue is in a > repository. I've had my pending x86 patches on m5sim.org for a while now > if you want to see an example, although I don't think they show up in > the web interface. > > Gabe > > Korey Sewell wrote: >> If you get a chance, look at that closely. >> >> I do derive a new tracer from the default tracer (mixie_trace.hh/cc). >> >> What's new is that I'm adding the option for per-stage tracing. To do >> this, the dump function needs to print out the ticks differently as >> there are now an arbitrary amount of stages. >> >> That's why I virtualized a printTicks() function which simply prints >> the commit stage # in the general case, but if you turn stage-tracing >> on for the Mixie it will print out on what cycle a instruction >> finished a particular stage. >> >> On Tue, Nov 25, 2008 at 10:17 PM, <[EMAIL PROTECTED]> wrote: >> >>> There's one other thing I just realized. I'm assuming you're extending the >>> trace >>> stuff by modifying exetrace.cc. The idea there was that you could make your >>> own >>> class which replaces or inherits from the default tracer, and then set that >>> up >>> to run in an arbitrary CPU. In the python, you could then override the >>> default >>> tracer your CPU class uses to be the one that does whatever special thing >>> you >>> want. The class that keeps track of the execution of a particular >>> instruction >>> is extensible as well if you want to add new fields, etc. >>> >>> Gabe >>> >>> Quoting Korey Sewell <[EMAIL PROTECTED]>: >>> >>> >>>> # HG changeset patch >>>> # User Korey Sewell <[EMAIL PROTECTED]> >>>> # Date 1227320916 18000 >>>> # Node ID b2b20a241e923c43a6978ea42fab9be4ead71220 >>>> # Parent 6f9923f77ced7b25a7a573549fd4ca1b0a49c466 >>>> [mq]: make_mixie_cmdline_runnable >>>> >>>> diff -r 6f9923f77ced -r b2b20a241e92 configs/common/Options.py >>>> --- a/configs/common/Options.py Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/configs/common/Options.py Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -29,6 +29,7 @@ >>>> # system options >>>> parser.add_option("-d", "--detailed", action="store_true") >>>> parser.add_option("-t", "--timing", action="store_true") >>>> +parser.add_option("--mixie", action="store_true") >>>> parser.add_option("-n", "--num-cpus", type="int", default=1) >>>> parser.add_option("--caches", action="store_true") >>>> parser.add_option("--l2cache", action="store_true") >>>> diff -r 6f9923f77ced -r b2b20a241e92 configs/common/Simulation.py >>>> --- a/configs/common/Simulation.py Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/configs/common/Simulation.py Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -43,6 +43,11 @@ def setCPUClass(options): >>>> print "O3 CPU must be used with caches" >>>> sys.exit(1) >>>> class TmpClass(DerivO3CPU): pass >>>> + elif options.mixie: >>>> + if not options.caches: >>>> + print "Mixie CPU must be used with caches" >>>> + sys.exit(1) >>>> + class TmpClass(MixieCPU): pass >>>> else: >>>> class TmpClass(AtomicSimpleCPU): pass >>>> atomic = True >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/arch/mips/faults.cc >>>> --- a/src/arch/mips/faults.cc Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/src/arch/mips/faults.cc Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -461,6 +461,9 @@ void ResetFault::invoke(ThreadContext *t >>>> tc->setNextPC(vect()+sizeof(MachInst)); >>>> tc->setNextNPC(vect()+sizeof(MachInst)+sizeof(MachInst)); >>>> DPRINTF(MipsPRA,"(%x) - ResetFault::invoke : PC set to >>>> %x",(unsigned)tc,(unsigned)tc->readPC()); >>>> +#else >>>> + //MixieCPU *cpu_ptr = reinterpret_cast<MixieCPU*>(tc->getCpuPtr()); >>>> + //cpu_ptr->miscRegFile.reset(); >>>> #endif >>>> >>>> // Set Coprocessor 1 (Floating Point) To Usable >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/arch/mips/mt.hh >>>> --- a/src/arch/mips/mt.hh Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/src/arch/mips/mt.hh Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -68,7 +68,7 @@ getTargetThread(TC *tc) >>>> } >>>> >>>> template <class TC> >>>> -inline void >>>> +void >>>> haltThread(TC *tc) >>>> { >>>> if (tc->status() == TC::Active) { >>>> @@ -77,6 +77,8 @@ haltThread(TC *tc) >>>> // Save last known PC in TCRestart >>>> // @TODO: Needs to check if this is a branch and if so, take >>>> previous instruction >>>> tc->setMiscReg(TCRestart, tc->readNextPC()); >>>> + >>>> + //assert(0); >>>> >>>> warn("%i: Halting thread %i in %s @ PC %x, setting restart PC to >>>> %x", curTick, tc->threadId(), tc->getCpuPtr()->name(), >>>> tc->readPC(), tc->readNextPC()); >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/arch/mips/regfile/misc_regfile.cc >>>> --- a/src/arch/mips/regfile/misc_regfile.cc Tue Nov 18 16:03:31 2008 >>>> -0500 >>>> +++ b/src/arch/mips/regfile/misc_regfile.cc Fri Nov 21 21:28:36 2008 >>>> -0500 >>>> @@ -179,8 +179,10 @@ int MiscRegFile:: getDataAsid() >>>> } >>>> //@TODO: Use MIPS STYLE CONSTANTS (e.g. TCHALT_H instead of TCH_H) >>>> void >>>> -MiscRegFile::reset(std::string core_name, unsigned num_threads, >>>> - unsigned num_vpes, BaseCPU *_cpu) >>>> +MiscRegFile::reset(std::string core_name, >>>> + unsigned num_threads, >>>> + unsigned num_vpes, >>>> + BaseCPU *_cpu) >>>> { >>>> DPRINTF(MipsPRA, "Resetting CP0 State with %i TCs and %i VPEs\n", >>>> num_threads, num_vpes); >>>> @@ -588,6 +590,8 @@ MiscRegFile::updateCPU() >>>> >>>> //@todo: add vpe/mt check here thru mvpcontrol & vpecontrol regs >>>> if (bits(tc_halt, TCH_H) == 1 || bits(tc_status, TCS_A) == 0) { >>>> + cout << "TCHALT: " << bits(tc_halt, TCH_H) >>>> + << "TCStatus:" << bits(tc_status, TCS_A) << endl; >>>> haltThread(cpu->getContext(tid)); >>>> } else if (bits(tc_halt, TCH_H) == 0 && bits(tc_status, TCS_A) == >>>> 1) >>>> { >>>> restoreThread(cpu->getContext(tid)); >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/cpu/exetrace.cc >>>> --- a/src/cpu/exetrace.cc Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/src/cpu/exetrace.cc Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -50,8 +50,21 @@ Trace::ExeTracerRecord::dump() >>>> { >>>> ostream &outs = Trace::output(); >>>> >>>> - if (IsOn(ExecTicks)) >>>> - ccprintf(outs, "%7d: ", when); >>>> + if (IsOn(ExecTicks)) >>>> + // { >>>> + //if (!stageTrace) { >>>> + ccprintf(outs, "%7d: ", when); >>>> + /*} else { >>>> + //outs << dec << "\t"; >>>> + ccprintf(outs, ""); >>>> + for (int i=0; i < stageCycle.size(); i++) { >>>> + if (i < stageCycle.size() - 1) >>>> + outs << dec << stageCycle[i] << "-"; >>>> + else >>>> + outs << dec << stageCycle[i] << ":"; >>>> + } >>>> + } >>>> + }*/ >>>> >>>> outs << thread->getCpuPtr()->name() << " "; >>>> >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/cpu/mixie/MixieCPU.py >>>> --- a/src/cpu/mixie/MixieCPU.py Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/src/cpu/mixie/MixieCPU.py Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -41,7 +41,8 @@ class MixieCPU(BaseCPU): >>>> class MixieCPU(BaseCPU): >>>> type = 'MixieCPU' >>>> activity = Param.Unsigned(0, "Initial count") >>>> - numThreads = Param.Unsigned(1, "number of HW thread contexts") >>>> + >>>> + #numThreads = Param.Unsigned(1, "number of HW thread contexts") >>>> >>>> cachePorts = Param.Unsigned("Cache Ports") >>>> stageWidth = Param.Unsigned(1, "Stage width") >>>> diff -r 6f9923f77ced -r b2b20a241e92 src/cpu/mixie/cpu.cc >>>> --- a/src/cpu/mixie/cpu.cc Tue Nov 18 16:03:31 2008 -0500 >>>> +++ b/src/cpu/mixie/cpu.cc Fri Nov 21 21:28:36 2008 -0500 >>>> @@ -283,8 +283,12 @@ MixieCPU::MixieCPU(Params *params) >>>> dummyReq = new ResourceRequest(NULL, NULL, 0, 0, 0, 0); >>>> >>>> // Reset CPU to reset state. >>>> +#if FULL_SYSTEM >>>> Fault resetFault = new ResetFault(); >>>> resetFault->invoke(tcBase()); >>>> +#else >>>> + reset(); >>>> +#endif >>>> >>>> // Schedule First Tick Event, CPU will reschedule itself from here on >>>> out. >>>> scheduleTickEvent(0); >>>> @@ -460,7 +464,7 @@ void >>>> void >>>> MixieCPU::reset() >>>> { >>>> - miscRegFile.reset(coreType, numThreads, numVirtProcs, this); >>>> + miscRegFile.reset(coreType, numThreads, numVirtProcs, >>>> dynamic_cast<BaseCPU*>(this)); >>>> } >>>> >>>> Port* >>>> _______________________________________________ >>>> m5-dev mailing list >>>> m5-dev@m5sim.org >>>> http://m5sim.org/mailman/listinfo/m5-dev >>>> >>>> >>> >>> >>> _______________________________________________ >>> m5-dev mailing list >>> m5-dev@m5sim.org >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >>> >> >> >> >> > > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev