fault.c (73e86cb03cf2ec0aa3789dc8621c6d53619cac5e) | fault.c (af29678fe785ad79e7386e97b57093482f0dd7c4) |
---|---|
1/* 2 * Based on arch/arm/mm/fault.c 3 * 4 * Copyright (C) 1995 Linus Torvalds 5 * Copyright (C) 1995-2004 Russell King 6 * Copyright (C) 2012 ARM Ltd. 7 * 8 * This program is free software; you can redistribute it and/or modify --- 169 unchanged lines hidden (view full) --- 178 pte = pte_offset_map(pmd, addr); 179 pr_cont(", *pte=%016llx", pte_val(*pte)); 180 pte_unmap(pte); 181 } while(0); 182 183 pr_cont("\n"); 184} 185 | 1/* 2 * Based on arch/arm/mm/fault.c 3 * 4 * Copyright (C) 1995 Linus Torvalds 5 * Copyright (C) 1995-2004 Russell King 6 * Copyright (C) 2012 ARM Ltd. 7 * 8 * This program is free software; you can redistribute it and/or modify --- 169 unchanged lines hidden (view full) --- 178 pte = pte_offset_map(pmd, addr); 179 pr_cont(", *pte=%016llx", pte_val(*pte)); 180 pte_unmap(pte); 181 } while(0); 182 183 pr_cont("\n"); 184} 185 |
186#ifdef CONFIG_ARM64_HW_AFDBM | |
187/* 188 * This function sets the access flags (dirty, accessed), as well as write 189 * permission, and only to a more permissive setting. 190 * 191 * It needs to cope with hardware update of the accessed/dirty state by other 192 * agents in the system and can safely skip the __sync_icache_dcache() call as, 193 * like set_pte_at(), the PTE is never changed from no-exec to exec here. 194 * --- 25 unchanged lines hidden (view full) --- 220 pteval |= pte_val(entry); 221 pteval ^= PTE_RDONLY; 222 pteval = cmpxchg_relaxed(&pte_val(*ptep), old_pteval, pteval); 223 } while (pteval != old_pteval); 224 225 flush_tlb_fix_spurious_fault(vma, address); 226 return 1; 227} | 186/* 187 * This function sets the access flags (dirty, accessed), as well as write 188 * permission, and only to a more permissive setting. 189 * 190 * It needs to cope with hardware update of the accessed/dirty state by other 191 * agents in the system and can safely skip the __sync_icache_dcache() call as, 192 * like set_pte_at(), the PTE is never changed from no-exec to exec here. 193 * --- 25 unchanged lines hidden (view full) --- 219 pteval |= pte_val(entry); 220 pteval ^= PTE_RDONLY; 221 pteval = cmpxchg_relaxed(&pte_val(*ptep), old_pteval, pteval); 222 } while (pteval != old_pteval); 223 224 flush_tlb_fix_spurious_fault(vma, address); 225 return 1; 226} |
228#endif | |
229 230static bool is_el1_instruction_abort(unsigned int esr) 231{ 232 return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_CUR; 233} 234 235static inline bool is_permission_fault(unsigned int esr, struct pt_regs *regs, 236 unsigned long addr) --- 620 unchanged lines hidden --- | 227 228static bool is_el1_instruction_abort(unsigned int esr) 229{ 230 return ESR_ELx_EC(esr) == ESR_ELx_EC_IABT_CUR; 231} 232 233static inline bool is_permission_fault(unsigned int esr, struct pt_regs *regs, 234 unsigned long addr) --- 620 unchanged lines hidden --- |