If it works, then I'm all for it... thanks for taking a look at it. Steve
On Fri, Apr 24, 2009 at 12:45 PM, Gabriel Michael Black < [email protected]> wrote: > So does anyone object to this change? It's not strictly necessary and > I haven't tested it beyond the m5threads regression, but it's a little > cleaner and it works as far as I can see. > > Gabe > > Quoting [email protected]: > > > # HG changeset patch > > # User Gabe Black <[email protected]> > > # Date 1240469552 25200 > > # Node ID 5a407ba6230735ed175c5b7a33fc4b5f083d1c2c > > # Parent babe6d1f91f78fd1d1be9b7dc2ae3395f74befbe > > SPARC: Tighten up the clone system call and SPARCs copyRegs. > > > > diff --git a/src/arch/sparc/regfile.cc b/src/arch/sparc/regfile.cc > > --- a/src/arch/sparc/regfile.cc > > +++ b/src/arch/sparc/regfile.cc > > @@ -359,19 +359,20 @@ > > for (int x = 0; x < MaxGL; ++x) { > > src->setMiscRegNoEffect(MISCREG_GL, x); > > dest->setMiscRegNoEffect(MISCREG_GL, x); > > - for (int y = 0; y < 8; y++) > > + // Skip %g0 which is always zero. > > + for (int y = 1; y < 8; y++) > > dest->setIntReg(y, src->readIntReg(y)); > > } > > - //Locals/Ins/Outs > > + //Locals and ins. Outs are all also ins. > > for (int x = 0; x < NWindows; ++x) { > > src->setMiscRegNoEffect(MISCREG_CWP, x); > > dest->setMiscRegNoEffect(MISCREG_CWP, x); > > - for (int y = 8; y < 32; y++) > > + for (int y = 16; y < 32; y++) > > dest->setIntReg(y, src->readIntReg(y)); > > } > > - //MicroIntRegs > > - for (int y = 0; y < NumMicroIntRegs; ++y) > > - dest->setIntReg(y+32, src->readIntReg(y+32)); > > + //Microcode reg and pseudo int regs (misc regs in the integer > regfile). > > + for (int y = NumIntArchRegs; y < NumIntArchRegs + NumMicroIntRegs; > ++y) > > + dest->setIntReg(y, src->readIntReg(y)); > > > > //Restore src's GL, CWP > > src->setMiscRegNoEffect(MISCREG_GL, old_gl); > > @@ -379,7 +380,7 @@ > > > > > > // Then loop through the floating point registers. > > - for (int i = 0; i < SparcISA::NumFloatRegs; ++i) { > > + for (int i = 0; i < SparcISA::NumFloatArchRegs; ++i) { > > dest->setFloatRegBits(i, src->readFloatRegBits(i)); > > } > > > > diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc > > --- a/src/sim/syscall_emul.cc > > +++ b/src/sim/syscall_emul.cc > > @@ -723,11 +723,7 @@ > > > > ctc->setPC(tc->readNextPC()); > > ctc->setNextPC(tc->readNextPC() + sizeof(TheISA::MachInst)); > > - > > - // In SPARC, need NNPC too... > > - #if THE_ISA == SPARC_ISA > > - ctc->setNextNPC(tc->readNextNPC() + > sizeof(TheISA::MachInst)); > > - #endif > > + ctc->setNextNPC(tc->readNextNPC() + sizeof(TheISA::MachInst)); > > > > ctc->activate(); > > > > _______________________________________________ > > m5-dev mailing list > > [email protected] > > http://m5sim.org/mailman/listinfo/m5-dev > > > > > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev >
_______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
