arch-arm: reg access permissions highest EL helper
This patch implements a helper function to filter a register access permissions by the highest EL implemented by the system. This filtering is convenient to follow the architecture pseudocode. Change-Id: Iedfb2d8624c926f2f0a9326f8b1b073ea9424ab9 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24663 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Giacomo Travaglini
parent
6cff0dd218
commit
465f7d0f56
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2019 ARM Limited
|
||||
* Copyright (c) 2010-2020 ARM Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -2190,6 +2190,18 @@ ISA::zeroSveVecRegUpperPart(VecRegContainer &vc, unsigned eCount)
|
||||
}
|
||||
}
|
||||
|
||||
ISA::MiscRegLUTEntryInitializer::chain
|
||||
ISA::MiscRegLUTEntryInitializer::highest(ArmSystem *const sys) const
|
||||
{
|
||||
switch (FullSystem ? sys->highestEL() : EL1) {
|
||||
case EL0:
|
||||
case EL1: priv(); break;
|
||||
case EL2: hyp(); break;
|
||||
case EL3: mon(); break;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
} // namespace ArmISA
|
||||
|
||||
ArmISA::ISA *
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, 2012-2019 ARM Limited
|
||||
* Copyright (c) 2010, 2012-2020 ARM Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -357,6 +357,7 @@ namespace ArmISA
|
||||
user(0);
|
||||
return *this;
|
||||
}
|
||||
chain highest(ArmSystem *const sys) const;
|
||||
MiscRegLUTEntryInitializer(struct MiscRegLUTEntry &e,
|
||||
std::bitset<NUM_MISCREG_INFOS> &i)
|
||||
: entry(e),
|
||||
|
||||
Reference in New Issue
Block a user