diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc index 79d0d88600..8750e7852c 100644 --- a/src/arch/arm/table_walker.cc +++ b/src/arch/arm/table_walker.cc @@ -2114,7 +2114,7 @@ TableWalker::fetchDescriptor(Addr desc_addr, desc_addr, num_bytes, flags, requestorId); req->taskId(context_switch_task_id::DMA); - Fault fault = testWalk(desc_addr, num_bytes, descriptor.domain(), + Fault fault = testWalk(req, descriptor.domain(), lookup_level); if (fault != NoFault) { @@ -2306,13 +2306,13 @@ TableWalker::pendingChange() } Fault -TableWalker::testWalk(Addr pa, Addr size, TlbEntry::DomainType domain, +TableWalker::testWalk(const RequestPtr &walk_req, TlbEntry::DomainType domain, LookupLevel lookup_level) { if (!test) { return NoFault; } else { - return test->walkCheck(pa, size, currState->vaddr, currState->isSecure, + return test->walkCheck(walk_req, currState->vaddr, currState->isSecure, currState->el != EL0, currState->mode, domain, lookup_level); } diff --git a/src/arch/arm/table_walker.hh b/src/arch/arm/table_walker.hh index f85bd63d74..ee56cb81f1 100644 --- a/src/arch/arm/table_walker.hh +++ b/src/arch/arm/table_walker.hh @@ -1206,7 +1206,7 @@ class TableWalker : public ClockedObject void setTestInterface(TlbTestInterface *ti); - Fault testWalk(Addr pa, Addr size, TlbEntry::DomainType domain, + Fault testWalk(const RequestPtr &walk_req, TlbEntry::DomainType domain, LookupLevel lookup_level); }; diff --git a/src/arch/arm/tlb.hh b/src/arch/arm/tlb.hh index 3f8e649f94..01d945d5dc 100644 --- a/src/arch/arm/tlb.hh +++ b/src/arch/arm/tlb.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013, 2016, 2019-2022 Arm Limited + * Copyright (c) 2010-2013, 2016, 2019-2022, 2024 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -84,8 +84,7 @@ class TlbTestInterface /** * Check if a page table walker access should be forced to fail. * - * @param pa Physical address the walker is accessing - * @param size Walker access size + * @param req walk request bearing a valid phys address * @param va Virtual address that initiated the walk * @param is_secure Access from secure state * @param is_priv Access from a privileged mode (i.e., not EL0) @@ -93,7 +92,8 @@ class TlbTestInterface * @param domain Domain type * @param lookup_level Page table walker level */ - virtual Fault walkCheck(Addr pa, Addr size, Addr va, bool is_secure, + virtual Fault walkCheck(const RequestPtr &walk_req, + Addr va, bool is_secure, Addr is_priv, BaseMMU::Mode mode, TlbEntry::DomainType domain, enums::ArmLookupLevel lookup_level) = 0;