tlb.cc (11395:032bc62120eb) | tlb.cc (11495:1f04f97c014d) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2010-2013 ARM Limited | 2 * Copyright (c) 2010-2013, 2016 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 704 unchanged lines hidden (view full) --- 715 panic("Unknown permissions %#x\n", ap); 716 } 717 } 718 719 bool hapAbt = is_write ? !(hap & 2) : !(hap & 1); 720 bool xn = te->xn || (isWritable && sctlr.wxn) || 721 (ap == 3 && sctlr.uwxn && is_priv); 722 if (is_fetch && (abt || xn || | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 704 unchanged lines hidden (view full) --- 715 panic("Unknown permissions %#x\n", ap); 716 } 717 } 718 719 bool hapAbt = is_write ? !(hap & 2) : !(hap & 1); 720 bool xn = te->xn || (isWritable && sctlr.wxn) || 721 (ap == 3 && sctlr.uwxn && is_priv); 722 if (is_fetch && (abt || xn || |
723 (te->longDescFormat && te->pxn && !is_priv) || | 723 (te->longDescFormat && te->pxn && is_priv) || |
724 (isSecure && te->ns && scr.sif))) { 725 permsFaults++; 726 DPRINTF(TLB, "TLB Fault: Prefetch abort on permission check. AP:%d " 727 "priv:%d write:%d ns:%d sif:%d sctlr.afe: %d \n", 728 ap, is_priv, is_write, te->ns, scr.sif,sctlr.afe); 729 return std::make_shared<PrefetchAbort>( 730 vaddr, 731 ArmFault::PermissionLL + te->lookupLevel, --- 716 unchanged lines hidden --- | 724 (isSecure && te->ns && scr.sif))) { 725 permsFaults++; 726 DPRINTF(TLB, "TLB Fault: Prefetch abort on permission check. AP:%d " 727 "priv:%d write:%d ns:%d sif:%d sctlr.afe: %d \n", 728 ap, is_priv, is_write, te->ns, scr.sif,sctlr.afe); 729 return std::make_shared<PrefetchAbort>( 730 vaddr, 731 ArmFault::PermissionLL + te->lookupLevel, --- 716 unchanged lines hidden --- |