7 #include <linux/sched.h>
8 #include <linux/kernel.h>
12 #define __EXTERN_INLINE inline
13 #include <asm/mmu_context.h>
14 #include <asm/tlbflush.h>
15 #undef __EXTERN_INLINE
17 #include <linux/signal.h>
18 #include <linux/errno.h>
19 #include <linux/string.h>
20 #include <linux/types.h>
21 #include <linux/ptrace.h>
22 #include <linux/mman.h>
25 #include <linux/module.h>
27 #include <asm/uaccess.h>
80 (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
81 (r) <= 18 ? (r)+8 : (r)-10])
92 unsigned int flags = (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
93 (cause > 0 ? FAULT_FLAG_WRITE : 0));
101 if ((insn >> 21 & 0x1f) == 0x1f &&
103 (1ul << (insn >> 26) & 0x30f00001400ul)) {
114 #ifdef CONFIG_ALPHA_LARGE_VMALLOC
126 if (!(vma->
vm_flags & VM_GROWSDOWN))
140 if (!(vma->
vm_flags & (VM_READ | VM_WRITE)))
152 if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(
current))
155 if (
unlikely(fault & VM_FAULT_ERROR)) {
156 if (fault & VM_FAULT_OOM)
158 else if (fault & VM_FAULT_SIGBUS)
163 if (flags & FAULT_FLAG_ALLOW_RETRY) {
164 if (fault & VM_FAULT_MAJOR)
168 if (fault & VM_FAULT_RETRY) {
169 flags &= ~FAULT_FLAG_ALLOW_RETRY;
204 "virtual address %016lx\n", address);
205 die_if_kernel(
"Oops", regs, cause, (
unsigned long*)regs - 16);
224 info.si_addr = (
void __user *) address;
234 info.si_addr = (
void __user *) address;
238 #ifdef CONFIG_ALPHA_LARGE_VMALLOC