cpu: Remove the default implementation of (get|set)RegFlat.
This was originally intended to call back into the original readIntReg, setIntReg, etc, but now that *those* are implemented by calling into getRegFlat, setRegFlat, etc, that's a circular dependency and makes that implementation unusable. Change-Id: I4135f0d8721f5f9d724be590767bed0023a9de20 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49698 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -197,83 +197,6 @@ ThreadContext::setRegFlat(const RegId ®, RegVal val)
|
||||
setRegFlat(reg, &val);
|
||||
}
|
||||
|
||||
void
|
||||
ThreadContext::getRegFlat(const RegId ®, void *val) const
|
||||
{
|
||||
const RegIndex idx = reg.index();
|
||||
const RegClassType type = reg.classValue();
|
||||
switch (type) {
|
||||
case IntRegClass:
|
||||
*(RegVal *)val = readIntRegFlat(idx);
|
||||
break;
|
||||
case FloatRegClass:
|
||||
*(RegVal *)val = readFloatRegFlat(idx);
|
||||
break;
|
||||
case VecRegClass:
|
||||
*(TheISA::VecRegContainer *)val = readVecRegFlat(idx);
|
||||
break;
|
||||
case VecElemClass:
|
||||
*(RegVal *)val = readVecElemFlat(idx);
|
||||
break;
|
||||
case VecPredRegClass:
|
||||
*(TheISA::VecPredRegContainer *)val = readVecPredRegFlat(idx);
|
||||
break;
|
||||
case CCRegClass:
|
||||
*(RegVal *)val = readCCRegFlat(idx);
|
||||
break;
|
||||
case MiscRegClass:
|
||||
panic("MiscRegs should not be read with getReg.");
|
||||
default:
|
||||
panic("Unrecognized register class type %d.", type);
|
||||
}
|
||||
}
|
||||
|
||||
void *
|
||||
ThreadContext::getWritableRegFlat(const RegId ®)
|
||||
{
|
||||
const RegIndex idx = reg.index();
|
||||
const RegClassType type = reg.classValue();
|
||||
switch (type) {
|
||||
case VecRegClass:
|
||||
return &getWritableVecRegFlat(idx);
|
||||
case VecPredRegClass:
|
||||
return &getWritableVecPredRegFlat(idx);
|
||||
default:
|
||||
panic("Unrecognized register class type %d.", type);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ThreadContext::setRegFlat(const RegId ®, const void *val)
|
||||
{
|
||||
const RegIndex idx = reg.index();
|
||||
const RegClassType type = reg.classValue();
|
||||
switch (type) {
|
||||
case IntRegClass:
|
||||
setIntRegFlat(idx, *(RegVal *)val);
|
||||
break;
|
||||
case FloatRegClass:
|
||||
setFloatRegFlat(idx, *(RegVal *)val);
|
||||
break;
|
||||
case VecRegClass:
|
||||
setVecRegFlat(idx, *(TheISA::VecRegContainer *)val);
|
||||
break;
|
||||
case VecElemClass:
|
||||
setVecElemFlat(idx, *(RegVal *)val);
|
||||
break;
|
||||
case VecPredRegClass:
|
||||
setVecPredRegFlat(idx, *(TheISA::VecPredRegContainer *)val);
|
||||
break;
|
||||
case CCRegClass:
|
||||
setCCRegFlat(idx, *(RegVal *)val);
|
||||
break;
|
||||
case MiscRegClass:
|
||||
panic("MiscRegs should not be read with getReg.");
|
||||
default:
|
||||
panic("Unrecognized register class type %d.", type);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
serialize(const ThreadContext &tc, CheckpointOut &cp)
|
||||
{
|
||||
|
||||
@@ -335,11 +335,11 @@ class ThreadContext : public PCEventScope
|
||||
*/
|
||||
|
||||
virtual RegVal getRegFlat(const RegId ®) const;
|
||||
virtual void getRegFlat(const RegId ®, void *val) const;
|
||||
virtual void *getWritableRegFlat(const RegId ®);
|
||||
virtual void getRegFlat(const RegId ®, void *val) const = 0;
|
||||
virtual void *getWritableRegFlat(const RegId ®) = 0;
|
||||
|
||||
virtual void setRegFlat(const RegId ®, RegVal val);
|
||||
virtual void setRegFlat(const RegId ®, const void *val);
|
||||
virtual void setRegFlat(const RegId ®, const void *val) = 0;
|
||||
|
||||
RegVal
|
||||
readIntRegFlat(RegIndex idx) const
|
||||
|
||||
Reference in New Issue
Block a user