Clear misc regs at startup.

src/arch/alpha/regfile.hh:
    Define clear functions on the individual reg files.
src/cpu/o3/regfile.hh:
    Be sure to clear the misc reg file at startup.

--HG--
extra : convert_revision : 41e640887f0cf15d778c59a4dcd544d46899b527
This commit is contained in:
Kevin Lim 2006-06-07 14:46:18 -04:00
parent eb0e416998
commit 3e191b1477
2 changed files with 17 additions and 3 deletions

View file

@ -62,6 +62,8 @@ namespace AlphaISA
void unserialize(Checkpoint *cp, const std::string &section); void unserialize(Checkpoint *cp, const std::string &section);
void clear()
{ bzero(regs, sizeof(regs)); }
}; };
class FloatRegFile class FloatRegFile
@ -77,6 +79,8 @@ namespace AlphaISA
void unserialize(Checkpoint *cp, const std::string &section); void unserialize(Checkpoint *cp, const std::string &section);
void clear()
{ bzero(d, sizeof(d)); }
}; };
class MiscRegFile { class MiscRegFile {
@ -102,6 +106,12 @@ namespace AlphaISA
Fault setRegWithEffect(int misc_reg, const MiscReg &val, Fault setRegWithEffect(int misc_reg, const MiscReg &val,
ThreadContext *tc); ThreadContext *tc);
void clear()
{
fpcr = uniq = 0;
lock_flag = 0;
lock_addr = 0;
}
#if FULL_SYSTEM #if FULL_SYSTEM
protected: protected:
typedef uint64_t InternalProcReg; typedef uint64_t InternalProcReg;
@ -171,9 +181,9 @@ namespace AlphaISA
void clear() void clear()
{ {
bzero(&intRegFile, sizeof(intRegFile)); intRegFile.clear();
bzero(&floatRegFile, sizeof(floatRegFile)); floatRegFile.clear();
bzero(&miscRegFile, sizeof(miscRegFile)); miscRegFile.clear();
} }
MiscReg readMiscReg(int miscReg) MiscReg readMiscReg(int miscReg)

View file

@ -299,6 +299,10 @@ PhysRegFile<Impl>::PhysRegFile(unsigned _numPhysicalIntRegs,
intRegFile.resize(numPhysicalIntRegs); intRegFile.resize(numPhysicalIntRegs);
floatRegFile.resize(numPhysicalFloatRegs); floatRegFile.resize(numPhysicalFloatRegs);
for (int i = 0; i < Impl::MaxThreads; ++i) {
miscRegs[i].clear();
}
//memset(intRegFile, 0, sizeof(*intRegFile)); //memset(intRegFile, 0, sizeof(*intRegFile));
//memset(floatRegFile, 0, sizeof(*floatRegFile)); //memset(floatRegFile, 0, sizeof(*floatRegFile));
} }