mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.9 KiB
79 lines
3.9 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
static struct fsr_info fsr_info[] = { |
|
/* |
|
* The following are the standard ARMv3 and ARMv4 aborts. ARMv5 |
|
* defines these to be "precise" aborts. |
|
*/ |
|
{ do_bad, SIGSEGV, 0, "vector exception" }, |
|
{ do_bad, SIGBUS, BUS_ADRALN, "alignment exception" }, |
|
{ do_bad, SIGKILL, 0, "terminal exception" }, |
|
{ do_bad, SIGBUS, BUS_ADRALN, "alignment exception" }, |
|
{ do_bad, SIGBUS, 0, "external abort on linefetch" }, |
|
{ 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" }, |
|
{ do_bad, SIGBUS, 0, "external abort on non-linefetch" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on non-linefetch" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on translation" }, |
|
{ do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on translation" }, |
|
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" }, |
|
/* |
|
* The following are "imprecise" aborts, which are signalled by bit |
|
* 10 of the FSR, and may not be recoverable. These are only |
|
* supported if the CPU abort handler supports bit 10. |
|
*/ |
|
{ do_bad, SIGBUS, 0, "unknown 16" }, |
|
{ do_bad, SIGBUS, 0, "unknown 17" }, |
|
{ do_bad, SIGBUS, 0, "unknown 18" }, |
|
{ do_bad, SIGBUS, 0, "unknown 19" }, |
|
{ do_bad, SIGBUS, 0, "lock abort" }, /* xscale */ |
|
{ do_bad, SIGBUS, 0, "unknown 21" }, |
|
{ do_bad, SIGBUS, BUS_OBJERR, "imprecise external abort" }, /* xscale */ |
|
{ do_bad, SIGBUS, 0, "unknown 23" }, |
|
{ do_bad, SIGBUS, 0, "dcache parity error" }, /* xscale */ |
|
{ do_bad, SIGBUS, 0, "unknown 25" }, |
|
{ do_bad, SIGBUS, 0, "unknown 26" }, |
|
{ do_bad, SIGBUS, 0, "unknown 27" }, |
|
{ do_bad, SIGBUS, 0, "unknown 28" }, |
|
{ do_bad, SIGBUS, 0, "unknown 29" }, |
|
{ do_bad, SIGBUS, 0, "unknown 30" }, |
|
{ do_bad, SIGBUS, 0, "unknown 31" }, |
|
}; |
|
|
|
static struct fsr_info ifsr_info[] = { |
|
{ do_bad, SIGBUS, 0, "unknown 0" }, |
|
{ do_bad, SIGBUS, 0, "unknown 1" }, |
|
{ do_bad, SIGBUS, 0, "debug event" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "section access flag fault" }, |
|
{ do_bad, SIGBUS, 0, "unknown 4" }, |
|
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "page access flag fault" }, |
|
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on non-linefetch" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" }, |
|
{ do_bad, SIGBUS, 0, "unknown 10" }, |
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on translation" }, |
|
{ do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" }, |
|
{ do_bad, SIGBUS, 0, "external abort on translation" }, |
|
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" }, |
|
{ do_bad, SIGBUS, 0, "unknown 16" }, |
|
{ do_bad, SIGBUS, 0, "unknown 17" }, |
|
{ do_bad, SIGBUS, 0, "unknown 18" }, |
|
{ do_bad, SIGBUS, 0, "unknown 19" }, |
|
{ do_bad, SIGBUS, 0, "unknown 20" }, |
|
{ do_bad, SIGBUS, 0, "unknown 21" }, |
|
{ do_bad, SIGBUS, 0, "unknown 22" }, |
|
{ do_bad, SIGBUS, 0, "unknown 23" }, |
|
{ do_bad, SIGBUS, 0, "unknown 24" }, |
|
{ do_bad, SIGBUS, 0, "unknown 25" }, |
|
{ do_bad, SIGBUS, 0, "unknown 26" }, |
|
{ do_bad, SIGBUS, 0, "unknown 27" }, |
|
{ do_bad, SIGBUS, 0, "unknown 28" }, |
|
{ do_bad, SIGBUS, 0, "unknown 29" }, |
|
{ do_bad, SIGBUS, 0, "unknown 30" }, |
|
{ do_bad, SIGBUS, 0, "unknown 31" }, |
|
};
|
|
|