arch-arm: Use MAIR_EL2 mem attribute register when in EL0 host

With the old code, the MAIR_EL1 register was checked when inserting
an EL2&0 TLB entry

Change-Id: I064032fb2946777c2f4c50c06a124f828245e18a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
Giacomo Travaglini
2024-01-03 17:35:14 +00:00
parent d42ef792bf
commit 3737e8b6df

View File

@@ -1560,19 +1560,18 @@ TableWalker::memAttrsAArch64(ThreadContext *tc, TlbEntry &te,
uint8_t attrIndx = l_descriptor.attrIndx();
DPRINTF(TLBVerbose, "memAttrsAArch64 AttrIndx:%#x sh:%#x\n", attrIndx, sh);
ExceptionLevel regime = s1TranslationRegime(tc, currState->el);
// Select MAIR
uint64_t mair;
switch (regime) {
case EL0:
case EL1:
switch (currState->regime) {
case TranslationRegime::EL10:
mair = tc->readMiscReg(MISCREG_MAIR_EL1);
break;
case EL2:
case TranslationRegime::EL20:
case TranslationRegime::EL2:
mair = tc->readMiscReg(MISCREG_MAIR_EL2);
break;
case EL3:
case TranslationRegime::EL3:
mair = tc->readMiscReg(MISCREG_MAIR_EL3);
break;
default: