SPARC: Get rid of the state keeping track of register frames.
This commit is contained in:
parent
4633677145
commit
3b01535ec1
2 changed files with 0 additions and 78 deletions
|
@ -53,18 +53,11 @@ string SparcISA::getIntRegName(RegIndex index)
|
|||
|
||||
void IntRegFile::clear()
|
||||
{
|
||||
int x;
|
||||
for (x = 0; x < MaxGL; x++)
|
||||
memset(regGlobals[x], 0, sizeof(IntReg) * RegsPerFrame);
|
||||
for(int x = 0; x < 2 * NWindows; x++)
|
||||
memset(regSegments[x], 0, sizeof(IntReg) * RegsPerFrame);
|
||||
memset(regs, 0, sizeof(IntReg) * NumIntRegs);
|
||||
}
|
||||
|
||||
IntRegFile::IntRegFile()
|
||||
{
|
||||
offset[Globals] = 0;
|
||||
regView[Globals] = regGlobals[0];
|
||||
clear();
|
||||
}
|
||||
|
||||
|
@ -72,20 +65,6 @@ IntReg IntRegFile::readReg(int intReg)
|
|||
{
|
||||
DPRINTF(IntRegs, "Read register %d = 0x%x\n", intReg, regs[intReg]);
|
||||
return regs[intReg];
|
||||
/* XXX Currently not used. When used again regView/offset need to be
|
||||
* serialized!
|
||||
IntReg val;
|
||||
if(intReg < NumIntArchRegs)
|
||||
val = regView[intReg >> FrameOffsetBits][intReg & FrameOffsetMask];
|
||||
else if((intReg -= NumIntArchRegs) < NumMicroIntRegs)
|
||||
val = microRegs[intReg];
|
||||
else
|
||||
panic("Tried to read non-existant integer register %d, %d\n",
|
||||
NumIntArchRegs + NumMicroIntRegs + intReg, intReg);
|
||||
|
||||
DPRINTF(IntRegs, "Read register %d = 0x%x\n", intReg, val);
|
||||
return val;
|
||||
*/
|
||||
}
|
||||
|
||||
void IntRegFile::setReg(int intReg, const IntReg &val)
|
||||
|
@ -96,42 +75,16 @@ void IntRegFile::setReg(int intReg, const IntReg &val)
|
|||
regs[intReg] = val;
|
||||
}
|
||||
return;
|
||||
/* XXX Currently not used. When used again regView/offset need to be
|
||||
* serialized!
|
||||
if(intReg)
|
||||
{
|
||||
DPRINTF(IntRegs, "Wrote register %d = 0x%x\n", intReg, val);
|
||||
if(intReg < NumIntArchRegs)
|
||||
regView[intReg >> FrameOffsetBits][intReg & FrameOffsetMask] = val;
|
||||
else if((intReg -= NumIntArchRegs) < NumMicroIntRegs)
|
||||
microRegs[intReg] = val;
|
||||
else
|
||||
panic("Tried to set non-existant integer register\n");
|
||||
} */
|
||||
}
|
||||
|
||||
void IntRegFile::serialize(std::ostream &os)
|
||||
{
|
||||
SERIALIZE_ARRAY(regs, NumIntRegs);
|
||||
SERIALIZE_ARRAY(microRegs, NumMicroIntRegs);
|
||||
|
||||
/* the below doesn't seem needed unless gabe makes regview work*/
|
||||
unsigned int x;
|
||||
for(x = 0; x < MaxGL; x++)
|
||||
SERIALIZE_ARRAY(regGlobals[x], RegsPerFrame);
|
||||
for(x = 0; x < 2 * NWindows; x++)
|
||||
SERIALIZE_ARRAY(regSegments[x], RegsPerFrame);
|
||||
}
|
||||
|
||||
void IntRegFile::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
{
|
||||
UNSERIALIZE_ARRAY(regs, NumIntRegs);
|
||||
UNSERIALIZE_ARRAY(microRegs, NumMicroIntRegs);
|
||||
|
||||
/* the below doesn't seem needed unless gabe makes regview work*/
|
||||
unsigned int x;
|
||||
for(x = 0; x < MaxGL; x++)
|
||||
UNSERIALIZE_ARRAY(regGlobals[x], RegsPerFrame);
|
||||
for(unsigned int x = 0; x < 2 * NWindows; x++)
|
||||
UNSERIALIZE_ARRAY(regSegments[x], RegsPerFrame);
|
||||
}
|
||||
|
|
|
@ -42,8 +42,6 @@ class Checkpoint;
|
|||
|
||||
namespace SparcISA
|
||||
{
|
||||
class RegFile;
|
||||
|
||||
//This function translates integer register file indices into names
|
||||
std::string getIntRegName(RegIndex);
|
||||
|
||||
|
@ -52,39 +50,10 @@ namespace SparcISA
|
|||
|
||||
class IntRegFile
|
||||
{
|
||||
private:
|
||||
friend class RegFile;
|
||||
protected:
|
||||
//The number of bits needed to index into each 8 register frame
|
||||
static const int FrameOffsetBits = 3;
|
||||
//The number of bits to choose between the 4 sets of 8 registers
|
||||
static const int FrameNumBits = 2;
|
||||
|
||||
//The number of registers per "frame" (8)
|
||||
static const int RegsPerFrame = 1 << FrameOffsetBits;
|
||||
//A mask to get the frame number
|
||||
static const uint64_t FrameNumMask =
|
||||
(FrameNumBits == sizeof(int)) ?
|
||||
(unsigned int)(-1) :
|
||||
(1 << FrameNumBits) - 1;
|
||||
static const uint64_t FrameOffsetMask =
|
||||
(FrameOffsetBits == sizeof(int)) ?
|
||||
(unsigned int)(-1) :
|
||||
(1 << FrameOffsetBits) - 1;
|
||||
|
||||
IntReg regGlobals[MaxGL+1][RegsPerFrame];
|
||||
IntReg regSegments[2 * NWindows][RegsPerFrame];
|
||||
IntReg microRegs[NumMicroIntRegs];
|
||||
IntReg regs[NumIntRegs];
|
||||
|
||||
enum regFrame {Globals, Outputs, Locals, Inputs, NumFrames};
|
||||
|
||||
IntReg * regView[NumFrames];
|
||||
|
||||
static const int RegGlobalOffset = 0;
|
||||
static const int FrameOffset = (MaxGL + 1) * RegsPerFrame;
|
||||
int offset[NumFrames];
|
||||
|
||||
public:
|
||||
|
||||
void clear();
|
||||
|
|
Loading…
Reference in a new issue