fastmodel: Handle "special" vector regs without calling into IRIS.

These registers don't have an architectural equivalent, but they may
need to be accessed by generic code, for instance the code that
checkpoints a thread context.

Change-Id: I4a18f44f2c09e379a4629c8e3eb8070b5c01918e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23784
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:
Gabe Black
2019-11-05 15:48:48 -08:00
parent eec8ac1595
commit 1a71417b89

View File

@@ -190,6 +190,11 @@ const ArmISA::VecRegContainer &
ArmThreadContext::readVecReg(const RegId &reg_id) const
{
const RegIndex idx = reg_id.index();
// Ignore accesses to registers which aren't architected. gem5 defines a
// few extra registers which it uses internally in the implementation of
// some instructions.
if (idx >= vecRegIds.size())
return vecRegs.at(idx);
ArmISA::VecRegContainer &reg = vecRegs.at(idx);
iris::ResourceReadResult result;