···122122 wrusp(usp);123123}124124125125-#ifdef CONFIG_MMU126126-extern int handle_kernel_fault(struct pt_regs *regs);127127-#else128128-static inline int handle_kernel_fault(struct pt_regs *regs)129129-{130130- /* Any fault in kernel is fatal on non-mmu */131131- return 0;132132-}133133-#endif134134-135125/* Forward declaration, a strange C thing */136126struct task_struct;137127
···3131#define MOVES "move"3232#endif33333434-/*3535- * The exception table consists of pairs of addresses: the first is the3636- * address of an instruction that is allowed to fault, and the second is3737- * the address at which the program should continue. No registers are3838- * modified, so it is entirely up to the continuation code to figure out3939- * what to do.4040- *4141- * All the routines below use bits of fixup code that are out of line4242- * with the main instruction path. This means when everything is well,4343- * we don't even have to jump over them. Further, they do not intrude4444- * on our cache or tlb entries.4545- */4646-4747-struct exception_table_entry4848-{4949- unsigned long insn, fixup;5050-};5151-5234extern int __put_user_bad(void);5335extern int __get_user_bad(void);5436
-19
arch/m68k/include/asm/uaccess_no.h
···2323}24242525/*2626- * The exception table consists of pairs of addresses: the first is the2727- * address of an instruction that is allowed to fault, and the second is2828- * the address at which the program should continue. No registers are2929- * modified, so it is entirely up to the continuation code to figure out3030- * what to do.3131- *3232- * All the routines below use bits of fixup code that are out of line3333- * with the main instruction path. This means when everything is well,3434- * we don't even have to jump over them. Further, they do not intrude3535- * on our cache or tlb entries.3636- */3737-3838-struct exception_table_entry3939-{4040- unsigned long insn, fixup;4141-};4242-4343-4444-/*4526 * These are the main single-value transfer routines. They automatically4627 * use the right size if we just have the right pointer type.4728 */
···10161016 /* traced a trapping instruction on a 68020/30,10171017 * real exception will be executed afterwards.10181018 */10191019- } else if (!handle_kernel_fault(&fp->ptregs))10201020- bad_super_trap(fp);10191019+ return;10201020+ }10211021+#ifdef CONFIG_MMU10221022+ if (fixup_exception(&fp->ptregs))10231023+ return;10241024+#endif10251025+ bad_super_trap(fp);10211026 return;10221027 }10231028
+1-1
arch/m68k/mm/fault.c
···3232 force_sig_info(siginfo.si_signo,3333 &siginfo, current);3434 } else {3535- if (handle_kernel_fault(regs))3535+ if (fixup_exception(regs))3636 return -1;37373838 //if (siginfo.si_signo == SIGBUS)