I have a problem with register renaming stage.
At some point in function "DefaultRename<Impl>::renameDestRegs(DynInstPtr
&inst, ThreadID tid)" a physical register is chosen to be assigned to an
architectural register which is out of range. More specifically, number of
Physical Integer registers is 256 while at some point register # 288 is
chosen to be assigned to Arch Int Reg.
As far as I realized, there is a free list class which is a container for
the free registers. I made sure that at the beginning only registers 40-255
are put in the free list. I am not sure how and where in the code possibly
register 288 is added to the the free list. But, I am still suspicious this
happens because I have not found any range checking in the code yet that can
detect such case. So, even if the problem exists it might have not been
detected.
I am modifying the code and I need to use the assigned Phys Register number.
Apparently my code initializes data structures according to "Number of
Physical Registers" and does not accept register 288 as argument.

Any idea about if this is possible and where I should investigate the source
of the fault.

Thanks,
Navid.
_______________________________________________
gem5-users mailing list
gem5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to