Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 993bf4ec authored by Kirill A. Shutemov's avatar Kirill A. Shutemov Committed by Russell King
Browse files

ARM: 6256/1: Check arch version and modify fsr_info[] depends on it at runtime

parent 33a9c41b
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -475,12 +475,7 @@ static struct fsr_info {
	{ do_bad,		SIGBUS,	 BUS_ADRALN,	"alignment exception"		   },
	{ do_bad,		SIGKILL, 0,		"terminal exception"		   },
	{ do_bad,		SIGBUS,	 BUS_ADRALN,	"alignment exception"		   },
/* Do we need runtime check ? */
#if __LINUX_ARM_ARCH__ < 6
	{ do_bad,		SIGBUS,	 0,		"external abort on linefetch"	   },
#else
	{ do_translation_fault,	SIGSEGV, SEGV_MAPERR,	"I-cache maintenance fault"	   },
#endif
	{ do_translation_fault,	SIGSEGV, SEGV_MAPERR,	"section translation fault"	   },
	{ do_bad,		SIGBUS,	 0,		"external abort on linefetch"	   },
	{ do_page_fault,	SIGSEGV, SEGV_MAPERR,	"page translation fault"	   },
@@ -605,3 +600,14 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)
	arm_notify_die("", regs, &info, ifsr, 0);
}

static int __init exceptions_init(void)
{
	if (cpu_architecture() >= CPU_ARCH_ARMv6) {
		hook_fault_code(4, do_translation_fault, SIGSEGV, SEGV_MAPERR,
				"I-cache maintenance fault");
	}

	return 0;
}

arch_initcall(exceptions_init);