dev-arm: Fix SMMUv3 walkMasks in page table ops

The masks did not include the high bits above the active addressing
bits.
This could cause overlapping issues when using high addresses.
(Translated with TTBR1)

Change-Id: Ib705558aac456c1b3f069e1bd3ccdd9229a1c1d2
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23764
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
diff --git a/src/dev/arm/smmu_v3_ptops.cc b/src/dev/arm/smmu_v3_ptops.cc
index 05c8bc0..569b59e 100644
--- a/src/dev/arm/smmu_v3_ptops.cc
+++ b/src/dev/arm/smmu_v3_ptops.cc
@@ -114,9 +114,9 @@
 V7LPageTableOps::walkMask(unsigned level) const
 {
     switch (level) {
-        case 1: return mask(39, 30);
-        case 2: return mask(39, 21);
-        case 3: return mask(39, 12);
+        case 1: return ~mask(30);
+        case 2: return ~mask(21);
+        case 3: return ~mask(12);
         default: panic("bad level %d", level);
     }
 }
@@ -207,10 +207,10 @@
 V8PageTableOps4k::walkMask(unsigned level) const
 {
     switch (level) {
-        case 0: return mask(47, 39);
-        case 1: return mask(47, 30);
-        case 2: return mask(47, 21);
-        case 3: return mask(47, 12);
+        case 0: return ~mask(39);
+        case 1: return ~mask(30);
+        case 2: return ~mask(21);
+        case 3: return ~mask(12);
         default: panic("bad level %d", level);
     }
 }
@@ -401,9 +401,9 @@
 V8PageTableOps64k::walkMask(unsigned level) const
 {
     switch (level) {
-        case 1: return mask(47, 42);
-        case 2: return mask(47, 29);
-        case 3: return mask(47, 16);
+        case 1: return ~mask(42);
+        case 2: return ~mask(29);
+        case 3: return ~mask(16);
         default: panic("bad level %d", level);
     }
 }