Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 static struct fsr_info fsr_info[] = {
0003     /*
0004      * The following are the standard ARMv3 and ARMv4 aborts.  ARMv5
0005      * defines these to be "precise" aborts.
0006      */
0007     { do_bad,       SIGSEGV, 0,     "vector exception"         },
0008     { do_bad,       SIGBUS,  BUS_ADRALN,    "alignment exception"          },
0009     { do_bad,       SIGKILL, 0,     "terminal exception"           },
0010     { do_bad,       SIGBUS,  BUS_ADRALN,    "alignment exception"          },
0011     { do_bad,       SIGBUS,  0,     "external abort on linefetch"      },
0012     { do_translation_fault, SIGSEGV, SEGV_MAPERR,   "section translation fault"    },
0013     { do_bad,       SIGBUS,  0,     "external abort on linefetch"      },
0014     { do_page_fault,    SIGSEGV, SEGV_MAPERR,   "page translation fault"       },
0015     { do_bad,       SIGBUS,  0,     "external abort on non-linefetch"  },
0016     { do_bad,       SIGSEGV, SEGV_ACCERR,   "section domain fault"         },
0017     { do_bad,       SIGBUS,  0,     "external abort on non-linefetch"  },
0018     { do_bad,       SIGSEGV, SEGV_ACCERR,   "page domain fault"        },
0019     { do_bad,       SIGBUS,  0,     "external abort on translation"    },
0020     { do_sect_fault,    SIGSEGV, SEGV_ACCERR,   "section permission fault"     },
0021     { do_bad,       SIGBUS,  0,     "external abort on translation"    },
0022     { do_page_fault,    SIGSEGV, SEGV_ACCERR,   "page permission fault"        },
0023     /*
0024      * The following are "imprecise" aborts, which are signalled by bit
0025      * 10 of the FSR, and may not be recoverable.  These are only
0026      * supported if the CPU abort handler supports bit 10.
0027      */
0028     { do_bad,       SIGBUS,  0,     "unknown 16"               },
0029     { do_bad,       SIGBUS,  0,     "unknown 17"               },
0030     { do_bad,       SIGBUS,  0,     "unknown 18"               },
0031     { do_bad,       SIGBUS,  0,     "unknown 19"               },
0032     { do_bad,       SIGBUS,  0,     "lock abort"               }, /* xscale */
0033     { do_bad,       SIGBUS,  0,     "unknown 21"               },
0034     { do_bad,       SIGBUS,  BUS_OBJERR,    "imprecise external abort"     }, /* xscale */
0035     { do_bad,       SIGBUS,  0,     "unknown 23"               },
0036     { do_bad,       SIGBUS,  0,     "dcache parity error"          }, /* xscale */
0037     { do_bad,       SIGBUS,  0,     "unknown 25"               },
0038     { do_bad,       SIGBUS,  0,     "unknown 26"               },
0039     { do_bad,       SIGBUS,  0,     "unknown 27"               },
0040     { do_bad,       SIGBUS,  0,     "unknown 28"               },
0041     { do_bad,       SIGBUS,  0,     "unknown 29"               },
0042     { do_bad,       SIGBUS,  0,     "unknown 30"               },
0043     { do_bad,       SIGBUS,  0,     "unknown 31"               },
0044 };
0045 
0046 static struct fsr_info ifsr_info[] = {
0047     { do_bad,       SIGBUS,  0,     "unknown 0"            },
0048     { do_bad,       SIGBUS,  0,     "unknown 1"            },
0049     { do_bad,       SIGBUS,  0,     "debug event"              },
0050     { do_bad,       SIGSEGV, SEGV_ACCERR,   "section access flag fault"    },
0051     { do_bad,       SIGBUS,  0,     "unknown 4"            },
0052     { do_translation_fault, SIGSEGV, SEGV_MAPERR,   "section translation fault"    },
0053     { do_bad,       SIGSEGV, SEGV_ACCERR,   "page access flag fault"       },
0054     { do_page_fault,    SIGSEGV, SEGV_MAPERR,   "page translation fault"       },
0055     { do_bad,       SIGBUS,  0,     "external abort on non-linefetch"  },
0056     { do_bad,       SIGSEGV, SEGV_ACCERR,   "section domain fault"         },
0057     { do_bad,       SIGBUS,  0,     "unknown 10"               },
0058     { do_bad,       SIGSEGV, SEGV_ACCERR,   "page domain fault"        },
0059     { do_bad,       SIGBUS,  0,     "external abort on translation"    },
0060     { do_sect_fault,    SIGSEGV, SEGV_ACCERR,   "section permission fault"     },
0061     { do_bad,       SIGBUS,  0,     "external abort on translation"    },
0062     { do_page_fault,    SIGSEGV, SEGV_ACCERR,   "page permission fault"        },
0063     { do_bad,       SIGBUS,  0,     "unknown 16"               },
0064     { do_bad,       SIGBUS,  0,     "unknown 17"               },
0065     { do_bad,       SIGBUS,  0,     "unknown 18"               },
0066     { do_bad,       SIGBUS,  0,     "unknown 19"               },
0067     { do_bad,       SIGBUS,  0,     "unknown 20"               },
0068     { do_bad,       SIGBUS,  0,     "unknown 21"               },
0069     { do_bad,       SIGBUS,  0,     "unknown 22"               },
0070     { do_bad,       SIGBUS,  0,     "unknown 23"               },
0071     { do_bad,       SIGBUS,  0,     "unknown 24"               },
0072     { do_bad,       SIGBUS,  0,     "unknown 25"               },
0073     { do_bad,       SIGBUS,  0,     "unknown 26"               },
0074     { do_bad,       SIGBUS,  0,     "unknown 27"               },
0075     { do_bad,       SIGBUS,  0,     "unknown 28"               },
0076     { do_bad,       SIGBUS,  0,     "unknown 29"               },
0077     { do_bad,       SIGBUS,  0,     "unknown 30"               },
0078     { do_bad,       SIGBUS,  0,     "unknown 31"               },
0079 };