Lines Matching +full:no +full:- +full:pc +full:- +full:write

1 // SPDX-License-Identifier: GPL-2.0
29 signo = current->thread.signo; in send_fault_sig()
30 si_code = current->thread.code; in send_fault_sig()
31 addr = (void __user *)current->thread.faddr; in send_fault_sig()
38 return -1; in send_fault_sig()
64 * bit 0 == 0 means no page found, 1 means protection fault
65 * bit 1 == 0 means read, 1 means write
73 struct mm_struct *mm = current->mm; in do_page_fault()
78 pr_debug("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n", in do_page_fault()
79 regs->sr, regs->pc, address, error_code, mm ? mm->pgd : NULL); in do_page_fault()
82 * If we're in an interrupt or have no user in do_page_fault()
98 if (vma->vm_start <= address) in do_page_fault()
100 if (!(vma->vm_flags & VM_GROWSDOWN)) in do_page_fault()
105 pre-decrement on the stack and that doesn't show up in do_page_fault()
121 default: /* 3: write, present */ in do_page_fault()
123 case 2: /* write, not present */ in do_page_fault()
124 if (!(vma->vm_flags & VM_WRITE)) in do_page_fault()
168 * No need to mmap_read_unlock(mm) as we would in do_page_fault()
191 current->thread.signo = SIGBUS; in do_page_fault()
192 current->thread.faddr = address; in do_page_fault()
196 current->thread.signo = SIGBUS; in do_page_fault()
197 current->thread.code = BUS_ADRERR; in do_page_fault()
198 current->thread.faddr = address; in do_page_fault()
204 current->thread.signo = SIGSEGV; in do_page_fault()
205 current->thread.code = SEGV_MAPERR; in do_page_fault()
206 current->thread.faddr = address; in do_page_fault()
210 current->thread.signo = SIGSEGV; in do_page_fault()
211 current->thread.code = SEGV_ACCERR; in do_page_fault()
212 current->thread.faddr = address; in do_page_fault()