mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
ARM: 6268/1: ARMv6K and ARMv7 use fault statuses 3 and 6 as Access Flag fault
Statuses 3 (0b00011) and 6 (0x00110) of DFSR are Access Flags faults on ARMv6K and ARMv7. Let's patch fsr_info[] at runtime if we are on ARMv7 or later. Unfortunately, we don't have runtime check for 'K' extension, so we can't check for it. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
993bf4ec8c
commit
b8ab5397bc
2 changed files with 23 additions and 2 deletions
|
@ -926,8 +926,18 @@ static int __init alignment_init(void)
|
||||||
|
|
||||||
hook_fault_code(1, do_alignment, SIGBUS, BUS_ADRALN,
|
hook_fault_code(1, do_alignment, SIGBUS, BUS_ADRALN,
|
||||||
"alignment exception");
|
"alignment exception");
|
||||||
hook_fault_code(3, do_alignment, SIGBUS, BUS_ADRALN,
|
|
||||||
"alignment exception");
|
/*
|
||||||
|
* ARMv6K and ARMv7 use fault status 3 (0b00011) as Access Flag section
|
||||||
|
* fault, not as alignment error.
|
||||||
|
*
|
||||||
|
* TODO: handle ARMv6K properly. Runtime check for 'K' extension is
|
||||||
|
* needed.
|
||||||
|
*/
|
||||||
|
if (cpu_architecture() <= CPU_ARCH_ARMv6) {
|
||||||
|
hook_fault_code(3, do_alignment, SIGBUS, BUS_ADRALN,
|
||||||
|
"alignment exception");
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -607,6 +607,17 @@ static int __init exceptions_init(void)
|
||||||
"I-cache maintenance fault");
|
"I-cache maintenance fault");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cpu_architecture() >= CPU_ARCH_ARMv7) {
|
||||||
|
/*
|
||||||
|
* TODO: Access flag faults introduced in ARMv6K.
|
||||||
|
* Runtime check for 'K' extension is needed
|
||||||
|
*/
|
||||||
|
hook_fault_code(3, do_bad, SIGSEGV, SEGV_MAPERR,
|
||||||
|
"section access flag fault");
|
||||||
|
hook_fault_code(6, do_bad, SIGSEGV, SEGV_MAPERR,
|
||||||
|
"section access flag fault");
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue