arch-arm: Add isStage2 qualifier to the LongDecriptor

We are currently using the LongDecriptor for both stage1
and stage2 translations. There are several cases where
the bitfield meaning changes depending on the translation
stage.

Change-Id: Ic33d9ef225a57fd79ce2b4bf47896aeb6bdd8d9c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
This commit is contained in:
Giacomo Travaglini
2024-01-19 13:20:30 +00:00
parent 9cce68ca71
commit 49ca08b01a
2 changed files with 5 additions and 1 deletions

View File

@@ -843,6 +843,7 @@ TableWalker::processWalkLPAE()
currState->longDesc.lookupLevel = start_lookup_level;
currState->longDesc.aarch64 = false;
currState->longDesc.grainSize = Grain4KB;
currState->longDesc.isStage2 = isStage2;
fetchDescriptor(
desc_addr, currState->longDesc,
@@ -1095,6 +1096,7 @@ TableWalker::processWalkAArch64()
currState->longDesc.aarch64 = true;
currState->longDesc.grainSize = tg;
currState->longDesc.physAddrRange = _physAddrRange;
currState->longDesc.isStage2 = isStage2;
fetchDescriptor(desc_addr, currState->longDesc,
sizeof(uint64_t), flag, start_lookup_level,

View File

@@ -436,7 +436,7 @@ class TableWalker : public ClockedObject
LongDescriptor()
: data(0), _dirty(false), aarch64(false), grainSize(Grain4KB),
physAddrRange(0)
physAddrRange(0), isStage2(false)
{}
/** The raw bits of the entry */
@@ -454,6 +454,8 @@ class TableWalker : public ClockedObject
uint8_t physAddrRange;
bool isStage2;
uint8_t*
getRawPtr() override
{