arch-arm: Fix XN in TLB permissions

The SIF condition check should be logically ORed with the TLB
entry XN attribute, instead of overriding it.

Change-Id: I70b38d97bbdc82b9f385d40ad06546785fc2c5bb
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32635
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Giacomo Travaglini
2020-08-11 09:37:04 +01:00
parent 31d118ffcc
commit 735cf323b5

View File

@@ -833,7 +833,8 @@ TLB::checkPermissions64(TlbEntry *te, const RequestPtr &req, Mode mode,
bool w = is_write;
bool x = is_fetch;
xn = ArmSystem::haveEL(tc, EL3) && isSecure && te->ns && scr.sif;
if (ArmSystem::haveEL(tc, EL3) && isSecure && te->ns && scr.sif)
xn = true;
// grant_read is used for faults from an atomic instruction that
// both reads and writes from a memory location. From a ISS point