tlb.cc (13889:b329d40d4e78) | tlb.cc (13968:55d001a9732d) |
---|---|
1/* 2 * Copyright (c) 2010-2013, 2016-2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 572 unchanged lines hidden (view full) --- 581 else 582 vaddr = vaddr_tainted; 583 Request::Flags flags = req->getFlags(); 584 585 bool is_fetch = (mode == Execute); 586 bool is_write = (mode == Write); 587 588 if (!is_fetch) { | 1/* 2 * Copyright (c) 2010-2013, 2016-2019 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 572 unchanged lines hidden (view full) --- 581 else 582 vaddr = vaddr_tainted; 583 Request::Flags flags = req->getFlags(); 584 585 bool is_fetch = (mode == Execute); 586 bool is_write = (mode == Write); 587 588 if (!is_fetch) { |
589 assert(flags & MustBeOne); | 589 assert(flags & MustBeOne || req->isPrefetch()); |
590 if (sctlr.a || !(flags & AllowUnaligned)) { 591 if (vaddr & mask(flags & AlignmentMask)) { 592 // LPAE is always disabled in SE mode 593 return std::make_shared<DataAbort>( 594 vaddr_tainted, 595 TlbEntry::DomainType::NoAccess, is_write, 596 ArmFault::AlignmentFault, isStage2, 597 ArmFault::VmsaTran); --- 435 unchanged lines hidden (view full) --- 1033 if ((req->isInstFetch() && (!sctlr.i)) || 1034 ((!req->isInstFetch()) && (!sctlr.c))){ 1035 if (!req->isCacheMaintenance()) { 1036 req->setFlags(Request::UNCACHEABLE); 1037 } 1038 req->setFlags(Request::STRICT_ORDER); 1039 } 1040 if (!is_fetch) { | 590 if (sctlr.a || !(flags & AllowUnaligned)) { 591 if (vaddr & mask(flags & AlignmentMask)) { 592 // LPAE is always disabled in SE mode 593 return std::make_shared<DataAbort>( 594 vaddr_tainted, 595 TlbEntry::DomainType::NoAccess, is_write, 596 ArmFault::AlignmentFault, isStage2, 597 ArmFault::VmsaTran); --- 435 unchanged lines hidden (view full) --- 1033 if ((req->isInstFetch() && (!sctlr.i)) || 1034 ((!req->isInstFetch()) && (!sctlr.c))){ 1035 if (!req->isCacheMaintenance()) { 1036 req->setFlags(Request::UNCACHEABLE); 1037 } 1038 req->setFlags(Request::STRICT_ORDER); 1039 } 1040 if (!is_fetch) { |
1041 assert(flags & MustBeOne); | 1041 assert(flags & MustBeOne || req->isPrefetch()); |
1042 if (sctlr.a || !(flags & AllowUnaligned)) { 1043 if (vaddr & mask(flags & AlignmentMask)) { 1044 alignFaults++; 1045 return std::make_shared<DataAbort>( 1046 vaddr_tainted, 1047 TlbEntry::DomainType::NoAccess, is_write, 1048 ArmFault::AlignmentFault, isStage2, 1049 tranMethod); --- 542 unchanged lines hidden --- | 1042 if (sctlr.a || !(flags & AllowUnaligned)) { 1043 if (vaddr & mask(flags & AlignmentMask)) { 1044 alignFaults++; 1045 return std::make_shared<DataAbort>( 1046 vaddr_tainted, 1047 TlbEntry::DomainType::NoAccess, is_write, 1048 ArmFault::AlignmentFault, isStage2, 1049 tranMethod); --- 542 unchanged lines hidden --- |