1static 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
45static 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};
79