Commit | Line | Data |
---|---|---|
136848d4 CM |
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 | }; |