arch-arm: Fix XN in TLB permissions
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Tue, 11 Aug 2020 08:37:04 +0000 (09:37 +0100)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 14 Aug 2020 13:07:41 +0000 (13:07 +0000)
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>
src/arch/arm/tlb.cc

index f67475bf36fc468514882b255f6ccb763079db9a..4d54b54b7eeb2b6754cfc56521dc103d05cf9093 100644 (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