Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fsr-2level.c
Go to the documentation of this file.
1 static struct fsr_info fsr_info[] = {
2  /*
3  * The following are the standard ARMv3 and ARMv4 aborts. ARMv5
4  * defines these to be "precise" aborts.
5  */
6  { do_bad, SIGSEGV, 0, "vector exception" },
7  { do_bad, SIGBUS, BUS_ADRALN, "alignment exception" },
8  { do_bad, SIGKILL, 0, "terminal exception" },
9  { do_bad, SIGBUS, BUS_ADRALN, "alignment exception" },
10  { do_bad, SIGBUS, 0, "external abort on linefetch" },
11  { do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" },
12  { do_bad, SIGBUS, 0, "external abort on linefetch" },
13  { do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
14  { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
15  { do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" },
16  { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
17  { do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" },
18  { do_bad, SIGBUS, 0, "external abort on translation" },
19  { do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" },
20  { do_bad, SIGBUS, 0, "external abort on translation" },
21  { do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" },
22  /*
23  * The following are "imprecise" aborts, which are signalled by bit
24  * 10 of the FSR, and may not be recoverable. These are only
25  * supported if the CPU abort handler supports bit 10.
26  */
27  { do_bad, SIGBUS, 0, "unknown 16" },
28  { do_bad, SIGBUS, 0, "unknown 17" },
29  { do_bad, SIGBUS, 0, "unknown 18" },
30  { do_bad, SIGBUS, 0, "unknown 19" },
31  { do_bad, SIGBUS, 0, "lock abort" }, /* xscale */
32  { do_bad, SIGBUS, 0, "unknown 21" },
33  { do_bad, SIGBUS, BUS_OBJERR, "imprecise external abort" }, /* xscale */
34  { do_bad, SIGBUS, 0, "unknown 23" },
35  { do_bad, SIGBUS, 0, "dcache parity error" }, /* xscale */
36  { do_bad, SIGBUS, 0, "unknown 25" },
37  { do_bad, SIGBUS, 0, "unknown 26" },
38  { do_bad, SIGBUS, 0, "unknown 27" },
39  { do_bad, SIGBUS, 0, "unknown 28" },
40  { do_bad, SIGBUS, 0, "unknown 29" },
41  { do_bad, SIGBUS, 0, "unknown 30" },
42  { do_bad, SIGBUS, 0, "unknown 31" },
43 };
44 
45 static struct fsr_info ifsr_info[] = {
46  { do_bad, SIGBUS, 0, "unknown 0" },
47  { do_bad, SIGBUS, 0, "unknown 1" },
48  { do_bad, SIGBUS, 0, "debug event" },
49  { do_bad, SIGSEGV, SEGV_ACCERR, "section access flag fault" },
50  { do_bad, SIGBUS, 0, "unknown 4" },
51  { do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" },
52  { do_bad, SIGSEGV, SEGV_ACCERR, "page access flag fault" },
53  { do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
54  { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
55  { do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" },
56  { do_bad, SIGBUS, 0, "unknown 10" },
57  { do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" },
58  { do_bad, SIGBUS, 0, "external abort on translation" },
59  { do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" },
60  { do_bad, SIGBUS, 0, "external abort on translation" },
61  { do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" },
62  { do_bad, SIGBUS, 0, "unknown 16" },
63  { do_bad, SIGBUS, 0, "unknown 17" },
64  { do_bad, SIGBUS, 0, "unknown 18" },
65  { do_bad, SIGBUS, 0, "unknown 19" },
66  { do_bad, SIGBUS, 0, "unknown 20" },
67  { do_bad, SIGBUS, 0, "unknown 21" },
68  { do_bad, SIGBUS, 0, "unknown 22" },
69  { do_bad, SIGBUS, 0, "unknown 23" },
70  { do_bad, SIGBUS, 0, "unknown 24" },
71  { do_bad, SIGBUS, 0, "unknown 25" },
72  { do_bad, SIGBUS, 0, "unknown 26" },
73  { do_bad, SIGBUS, 0, "unknown 27" },
74  { do_bad, SIGBUS, 0, "unknown 28" },
75  { do_bad, SIGBUS, 0, "unknown 29" },
76  { do_bad, SIGBUS, 0, "unknown 30" },
77  { do_bad, SIGBUS, 0, "unknown 31" },
78 };