On Thu, August 25, 2011 9:44 am, Jason Power wrote: > Thanks Nilay! > > I may just be misreading, but it seems like the change you sent me is the > same as it was before. Was that a typo?
Two lines that appear inside the if block (preceded by -), have to be moved outside the if block (preceded by +). With this change, IIRC, hello world runs correctly for O3 + ruby. > > Do you know in general what the issue with Ruby+O3 is? If it's not a major > re-working of the code I can probably sink some time into it and try to > get > this working. Brad Beckmann commented on Ruby+O3 in a separate thread yesterday. As I understand, Ruby needs to inform the CPU about the invalidations so that speculative loads and stores can be prevented from being committed. Personally, I am unsure about the effort involved in making Ruby and O3 work together for more than one CPU, mostly because I do not have any understanding of the implementation of the O3 CPU model. > On Wed, Aug 24, 2011 at 8:17 PM, Nilay <[email protected]> wrote: > >> On Wed, August 24, 2011 4:38 pm, Jason Power wrote: >> > Hi all, >> > >> > I'm trying to use the out of order processor model with x86 ISA in SE >> > mode. >> > When I try to run my applications I get a segfault because the dynamic >> > cast >> > on line 1111 of lsq_unit_impl.hh returns null. If I change the cast >> from >> > dynamic to static then the simulator runs for a little bit longer, but >> > then >> > prints "Exiting @ tick 9223372036854775807 because simulate() limit >> > reached" >> > >> > Tracing the object that is dynamically cast in line 1111 of >> > lsq_unit_impl.hh >> > (retryPkt->senderState) it seems to be set correctly in line 745. >> > >> > Has anyone had any success with this configuration (O3CPU, x86, SE)? >> > >> > Or has anyone already fixed this? Are there any suggestions for where >> I >> > should look? >> > >> >> As per the status matrix on gem5.org, the combination should work for a >> uniprocessor system. o3 currently does not work with ruby, though this >> change in lsq_unit_impl.hh should take you farther. >> >> + LSQSenderState *state = >> + dynamic_cast<LSQSenderState *>(retryPkt->senderState); >> + >> if (dcachePort->sendTiming(retryPkt)) { >> - LSQSenderState *state = >> - dynamic_cast<LSQSenderState *>(retryPkt->senderState); >> - >> -- Nilay _______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
