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

Reply via email to