[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Add walkBits method to PageTableOps
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
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