Lines Matching +full:no +full:- +full:pc +full:- +full:write
1 // TODO VM_EXEC flag work-around, cache aliasing
9 * Copyright (C) 2001 - 2010 Tensilica Inc.
29 /* Synchronize this task's top level page-table in vmalloc_fault()
32 struct mm_struct *act_mm = current->active_mm; in vmalloc_fault()
43 pgd = act_mm->pgd + index; in vmalloc_fault()
90 struct mm_struct *mm = current->mm; in do_page_fault()
91 unsigned int exccause = regs->exccause; in do_page_fault()
92 unsigned int address = regs->excvaddr; in do_page_fault()
101 /* We fault-in kernel-space virtual memory on-demand. The in do_page_fault()
109 /* If we're in an interrupt or have no user in do_page_fault()
123 current->comm, current->pid, in do_page_fault()
124 address, exccause, regs->pc, in do_page_fault()
138 if (vma->vm_start <= address) in do_page_fault()
140 if (!(vma->vm_flags & VM_GROWSDOWN)) in do_page_fault()
153 if (!(vma->vm_flags & VM_WRITE)) in do_page_fault()
157 if (!(vma->vm_flags & VM_EXEC)) in do_page_fault()
159 } else /* Allow read even from write-only pages. */ in do_page_fault()
160 if (!(vma->vm_flags & (VM_READ | VM_WRITE))) in do_page_fault()
192 /* No need to mmap_read_unlock(mm) as we would in do_page_fault()
209 current->thread.bad_vaddr = address; in do_page_fault()
210 current->thread.error_code = is_write; in do_page_fault()
235 current->thread.bad_vaddr = address; in do_page_fault()
252 if ((entry = search_exception_tables(regs->pc)) != NULL) { in bad_page_fault()
253 pr_debug("%s: Exception at pc=%#010lx (%lx)\n", in bad_page_fault()
254 current->comm, regs->pc, entry->fixup); in bad_page_fault()
255 current->thread.bad_uaddr = address; in bad_page_fault()
256 regs->pc = entry->fixup; in bad_page_fault()
264 "address %08lx\n pc = %08lx, ra = %08lx\n", in bad_page_fault()
265 address, regs->pc, regs->areg[0]); in bad_page_fault()