Looking further, it seems that there has been confusion on NumIntRegs
v. NumArchIntRegs on Jaidev's implementation.

Wrgpr and Rdgpr are functions for the sole purpose of having shadow
set register compatibility.

Those functions need to take whatever the source register value and
then use a control register to compute which shadow set to get to. The
shadow set needs to be computed by getting the offset and adding it to
the source register value.

So in short, change that NumIntReg to NumArchIntRegs in both the rdgpr
and wrgpr instructions and we should be fine.

In terms of testing the result, well, I'm not sure every single
instruction gets stressed in the MIPS Linux boot. This implementation
was to get every single instruction in the MIPS ISA 32 specification
as "MIPS-compliant" as possible but there isnt a full suite of test
cases that I can pull from. The tests that were ran to verify this
code were MIPS in-house regressions so I couldnt possibly get those.

What has to happen is that the other regressions we have just need to
be compiled for MIPS and we should be good to go. Things have changed
in O3 so I cant say for sure it would work given how delay slots must
work for MIPS in O3. However, it's kind of a time-sync in terms of
"what's the next thing to do" because as well as the regressions for
MIPS, there is also the inorder model, O3 compatibility and there is
also inserting a booting MIPS Linux code into the tree.

On Mon, Sep 29, 2008 at 5:48 PM, nathan binkert <[EMAIL PROTECTED]> wrote:
>> OK, so I agree that the else clause is looking superfluous and with
>> the comment "probably written by ..." then it definitely has no place.
>>
>> So if the compiler warning is caused by writing past the out of bounds
>> value then the fix would be to just delete the else clause since
>> inside of the original if condition it seems that shadow sets have
>> been taken care of.
> Well, the problem is that if you look at the wrpgrp and rdpgpr code in
> the decoder.isa, that code will generate requests that are out of
> bounds if SRSCtl_PSS is ever greater than zero.  Furthermore, the code
> in readReg and setReg can also generate an out of bound reference.
> Look where NumIntRegs is multipled by currShadowSet.  If you get into
> this part of the code and currShadowSet is nonzero, then it will also
> be out of bounds.  I'm guessing that the right thing to do (in
> addition to removing the else clause) in both cases is replace
> NumIntRegs with NumIntArchRegs.  However, I did not write this code, I
> don't know this code, and I don't have any way of testing the result.
>
>> As for MIPS regressions, I am wondering about those myself since no
>> doubt this has been tested with more than a "hello world" app and the
>> work left off with MIPS close to booting Linux.
> It would be wonderful if you could either hunt down some regressions
> or create some.  Is there more code at MIPS that we could get?
>
>  Nate
> _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>



-- 
----------
Korey L Sewell
Graduate Student - PhD Candidate
Computer Science & Engineering
University of Michigan
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to