SPARC: Get rid of the state keeping track of register frames.

This commit is contained in:
Gabe Black 2009-02-25 10:22:25 -08:00
parent 4633677145
commit 3b01535ec1
2 changed files with 0 additions and 78 deletions

View file

@ -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 &section)
{
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);
}

View file

@ -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();