patch-2.3.16 linux/arch/arm/mm/fault-armv.c

Next file: linux/arch/arm/mm/init.c
Previous file: linux/arch/arm/mm/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.15/linux/arch/arm/mm/fault-armv.c linux/arch/arm/mm/fault-armv.c
@@ -205,6 +205,7 @@
 	return len;
 }
 
+#ifdef CONFIG_SYSCTL
 /*
  * This needs to be done after sysctl_init, otherwise sys/
  * will be overwritten.
@@ -219,6 +220,9 @@
 		e->read_proc = proc_alignment_read;
 }
 
+__initcall(alignment_init);
+#endif
+
 static int
 do_alignment_exception(struct pt_regs *regs)
 {
@@ -405,8 +409,25 @@
 asmlinkage void
 do_DataAbort(unsigned long addr, int fsr, int error_code, struct pt_regs *regs)
 {
-	if (user_mode(regs))
+	if (user_mode(regs)) {
+		if (addr == regs->ARM_pc) {
+			static int first = 1;
+			if (first) {
+				/*
+				 * I want statistical information on this problem!
+				 */
+				printk(KERN_ERR "Buggy processor (%08X), "
+					"trying to continue.\n"
+					"Please send contents of /proc/cpuinfo "
+					"and this message to linux@arm.linux.org.uk",
+					fsr);
+				first = 0;
+			}
+			return;
+		}
+
 		error_code |= FAULT_CODE_USER;
+	}
 
 #define DIE(signr,nam)\
 		force_sig(signr, current);\

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)