Lines Matching +full:no +full:- +full:pc +full:- +full:write
1 // SPDX-License-Identifier: GPL-2.0
47 next_mm->context[smp_processor_id()] = mmc; in __load_new_mm_context()
49 pcb = ¤t_thread_info()->pcb; in __load_new_mm_context()
50 pcb->asn = mmc & HARDWARE_ASN_MASK; in __load_new_mm_context()
51 pcb->ptbr = ((unsigned long) next_mm->pgd - IDENT_ADDR) >> PAGE_SHIFT; in __load_new_mm_context()
64 * 2 = fault-on-read
65 * 3 = fault-on-execute
66 * 4 = fault-on-write
69 * -1 = instruction fetch
80 (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
81 (r) <= 18 ? (r)+10 : (r)-10])
88 struct mm_struct *mm = current->mm; in do_page_fault()
99 __get_user(insn, (unsigned int __user *)regs->pc); in do_page_fault()
103 regs->pc += 4; in do_page_fault()
108 /* If we're in an interrupt context, or have no user context, in do_page_fault()
120 down_read(&mm->mmap_sem); in do_page_fault()
124 if (vma->vm_start <= address) in do_page_fault()
126 if (!(vma->vm_flags & VM_GROWSDOWN)) in do_page_fault()
136 if (!(vma->vm_flags & VM_EXEC)) in do_page_fault()
139 /* Allow reads even for write-only mappings */ in do_page_fault()
140 if (!(vma->vm_flags & (VM_READ | VM_WRITE))) in do_page_fault()
143 if (!(vma->vm_flags & VM_WRITE)) in do_page_fault()
168 current->maj_flt++; in do_page_fault()
170 current->min_flt++; in do_page_fault()
174 /* No need to up_read(&mm->mmap_sem) as we would in do_page_fault()
183 up_read(&mm->mmap_sem); in do_page_fault()
190 up_read(&mm->mmap_sem); in do_page_fault()
197 if ((fixup = search_exception_tables(regs->pc)) != 0) { in do_page_fault()
199 newpc = fixup_exception(dpf_reg, fixup, regs->pc); in do_page_fault()
200 regs->pc = newpc; in do_page_fault()
208 die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16); in do_page_fault()
214 up_read(&mm->mmap_sem); in do_page_fault()
221 up_read(&mm->mmap_sem); in do_page_fault()
238 /* Synchronize this task's top level page-table in do_page_fault()
243 pgd = current->active_mm->pgd + index; in do_page_fault()