[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Add walkBits method to PageTableOps

2021-10-27 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/52008 )


 (

1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.

 )Change subject: arch-arm: Add walkBits method to PageTableOps
..

arch-arm: Add walkBits method to PageTableOps

Change-Id: I84cea3bcc5a3b566b8c26ebd3a54443c96199483
Signed-off-by: Giacomo Travaglini 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/52008
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Andreas Sandberg 
Maintainer: Jason Lowe-Power 
Maintainer: Andreas Sandberg 
---
M src/arch/arm/pagetable.cc
M src/arch/arm/pagetable.hh
2 files changed, 55 insertions(+), 31 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/arch/arm/pagetable.cc b/src/arch/arm/pagetable.cc
index 0834e7b..542610d 100644
--- a/src/arch/arm/pagetable.cc
+++ b/src/arch/arm/pagetable.cc
@@ -51,6 +51,12 @@
 const GrainSize GrainMap_tg1[] =
   { ReservedGrain, Grain16KB, Grain4KB, Grain64KB };

+Addr
+PageTableOps::walkMask(unsigned level) const
+{
+return ~mask(walkBits(level));
+}
+
 bool
 V7LPageTableOps::isValid(pte_t pte, unsigned level) const
 {
@@ -119,14 +125,14 @@
 }
 }

-Addr
-V7LPageTableOps::walkMask(unsigned level) const
+unsigned
+V7LPageTableOps::walkBits(unsigned level) const
 {
 switch (level) {
-case 1: return ~mask(30);
-case 2: return ~mask(21);
-case 3: return ~mask(12);
-default: panic("bad level %d", level);
+  case 1: return 30;
+  case 2: return 21;
+  case 3: return 12;
+  default: panic("bad level %d", level);
 }
 }

@@ -212,15 +218,15 @@
 }
 }

-Addr
-V8PageTableOps4k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps4k::walkBits(unsigned level) const
 {
 switch (level) {
-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);
+  case 0: return 39;
+  case 1: return 30;
+  case 2: return 21;
+  case 3: return 12;
+  default: panic("bad level %d", level);
 }
 }

@@ -323,15 +329,15 @@
 }
 }

-Addr
-V8PageTableOps16k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps16k::walkBits(unsigned level) const
 {
 switch (level) {
-case 0: return ~mask(47);
-case 1: return ~mask(36);
-case 2: return ~mask(25);
-case 3: return ~mask(14);
-default: panic("bad level %d", level);
+  case 0: return 47;
+  case 1: return 36;
+  case 2: return 25;
+  case 3: return 14;
+  default: panic("bad level %d", level);
 }
 }

@@ -428,14 +434,14 @@
 }
 }

-Addr
-V8PageTableOps64k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps64k::walkBits(unsigned level) const
 {
 switch (level) {
-case 1: return ~mask(42);
-case 2: return ~mask(29);
-case 3: return ~mask(16);
-default: panic("bad level %d", level);
+  case 1: return 42;
+  case 2: return 29;
+  case 3: return 16;
+  default: panic("bad level %d", level);
 }
 }

diff --git a/src/arch/arm/pagetable.hh b/src/arch/arm/pagetable.hh
index bf4a5f7..4cfdf2a 100644
--- a/src/arch/arm/pagetable.hh
+++ b/src/arch/arm/pagetable.hh
@@ -98,10 +98,12 @@
 virtual Addr nextLevelPointer(pte_t pte, unsigned level) const = 0;
 virtual Addr index(Addr va, unsigned level, int tsz) const = 0;
 virtual Addr pageMask(pte_t pte, unsigned level) const = 0;
-virtual Addr walkMask(unsigned level) const = 0;
+virtual unsigned walkBits(unsigned level) const = 0;
 virtual LookupLevel firstLevel(uint8_t tsz) const = 0;
 virtual LookupLevel firstS2Level(uint8_t sl0) const = 0;
 virtual LookupLevel lastLevel() const = 0;
+
+Addr walkMask(unsigned level) const;
 };

 struct V7LPageTableOps : public PageTableOps
@@ -112,7 +114,7 @@
 Addr nextLevelPointer(pte_t pte, unsigned level) const override;
 Addr index(Addr va, unsigned level, int tsz) const override;
 Addr pageMask(pte_t pte, unsigned level) const override;
-Addr walkMask(unsigned level) const override;
+unsigned walkBits(unsigned level) const override;
 LookupLevel firstLevel(uint8_t tsz) const override;
 LookupLevel lastLevel() const override;
 };
@@ -125,7 +127,7 @@
 Addr nextLevelPointer(pte_t pte, unsigned level) const override;
 Addr index(Addr va, unsigned level, int tsz) const override;
 Addr pageMask(pte_t pte, unsigned level) const override;
-Addr walkMask(unsigned level) const override;
+unsigned walkBits(unsigned level) const override;
 LookupLevel firstLevel(uint8_t tsz) const 

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Add walkBits method to PageTableOps

2021-10-25 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/52008 )



Change subject: arch-arm: Add walkBits method to PageTableOps
..

arch-arm: Add walkBits method to PageTableOps

Change-Id: I84cea3bcc5a3b566b8c26ebd3a54443c96199483
Signed-off-by: Giacomo Travaglini 
---
M src/arch/arm/pagetable.cc
M src/arch/arm/pagetable.hh
2 files changed, 49 insertions(+), 31 deletions(-)



diff --git a/src/arch/arm/pagetable.cc b/src/arch/arm/pagetable.cc
index 0834e7b..542610d 100644
--- a/src/arch/arm/pagetable.cc
+++ b/src/arch/arm/pagetable.cc
@@ -51,6 +51,12 @@
 const GrainSize GrainMap_tg1[] =
   { ReservedGrain, Grain16KB, Grain4KB, Grain64KB };

+Addr
+PageTableOps::walkMask(unsigned level) const
+{
+return ~mask(walkBits(level));
+}
+
 bool
 V7LPageTableOps::isValid(pte_t pte, unsigned level) const
 {
@@ -119,14 +125,14 @@
 }
 }

-Addr
-V7LPageTableOps::walkMask(unsigned level) const
+unsigned
+V7LPageTableOps::walkBits(unsigned level) const
 {
 switch (level) {
-case 1: return ~mask(30);
-case 2: return ~mask(21);
-case 3: return ~mask(12);
-default: panic("bad level %d", level);
+  case 1: return 30;
+  case 2: return 21;
+  case 3: return 12;
+  default: panic("bad level %d", level);
 }
 }

@@ -212,15 +218,15 @@
 }
 }

-Addr
-V8PageTableOps4k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps4k::walkBits(unsigned level) const
 {
 switch (level) {
-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);
+  case 0: return 39;
+  case 1: return 30;
+  case 2: return 21;
+  case 3: return 12;
+  default: panic("bad level %d", level);
 }
 }

@@ -323,15 +329,15 @@
 }
 }

-Addr
-V8PageTableOps16k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps16k::walkBits(unsigned level) const
 {
 switch (level) {
-case 0: return ~mask(47);
-case 1: return ~mask(36);
-case 2: return ~mask(25);
-case 3: return ~mask(14);
-default: panic("bad level %d", level);
+  case 0: return 47;
+  case 1: return 36;
+  case 2: return 25;
+  case 3: return 14;
+  default: panic("bad level %d", level);
 }
 }

@@ -428,14 +434,14 @@
 }
 }

-Addr
-V8PageTableOps64k::walkMask(unsigned level) const
+unsigned
+V8PageTableOps64k::walkBits(unsigned level) const
 {
 switch (level) {
-case 1: return ~mask(42);
-case 2: return ~mask(29);
-case 3: return ~mask(16);
-default: panic("bad level %d", level);
+  case 1: return 42;
+  case 2: return 29;
+  case 3: return 16;
+  default: panic("bad level %d", level);
 }
 }

diff --git a/src/arch/arm/pagetable.hh b/src/arch/arm/pagetable.hh
index bf4a5f7..4cfdf2a 100644
--- a/src/arch/arm/pagetable.hh
+++ b/src/arch/arm/pagetable.hh
@@ -98,10 +98,12 @@
 virtual Addr nextLevelPointer(pte_t pte, unsigned level) const = 0;
 virtual Addr index(Addr va, unsigned level, int tsz) const = 0;
 virtual Addr pageMask(pte_t pte, unsigned level) const = 0;
-virtual Addr walkMask(unsigned level) const = 0;
+virtual unsigned walkBits(unsigned level) const = 0;
 virtual LookupLevel firstLevel(uint8_t tsz) const = 0;
 virtual LookupLevel firstS2Level(uint8_t sl0) const = 0;
 virtual LookupLevel lastLevel() const = 0;
+
+Addr walkMask(unsigned level) const;
 };

 struct V7LPageTableOps : public PageTableOps
@@ -112,7 +114,7 @@
 Addr nextLevelPointer(pte_t pte, unsigned level) const override;
 Addr index(Addr va, unsigned level, int tsz) const override;
 Addr pageMask(pte_t pte, unsigned level) const override;
-Addr walkMask(unsigned level) const override;
+unsigned walkBits(unsigned level) const override;
 LookupLevel firstLevel(uint8_t tsz) const override;
 LookupLevel lastLevel() const override;
 };
@@ -125,7 +127,7 @@
 Addr nextLevelPointer(pte_t pte, unsigned level) const override;
 Addr index(Addr va, unsigned level, int tsz) const override;
 Addr pageMask(pte_t pte, unsigned level) const override;
-Addr walkMask(unsigned level) const override;
+unsigned walkBits(unsigned level) const override;
 LookupLevel firstLevel(uint8_t tsz) const override;
 LookupLevel firstS2Level(uint8_t sl0) const override;
 LookupLevel lastLevel() const override;
@@ -139,7 +141,7 @@
 Addr nextLevelPointer(pte_t pte, unsigned level) const override;
 Addr index(Addr va, unsigned level, int tsz) const override;
 Addr pageMask(pte_t pte, unsigned level) const override;
-Addr walkMask(unsigned level) const override;
+unsigned walkBits(unsigned level) const override;
 LookupLevel firstLevel(uint8_t tsz) const override;
 LookupLevel