fsr-2level.c 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // SPDX-License-Identifier: GPL-2.0
  2. static struct fsr_info fsr_info[] = {
  3. /*
  4. * The following are the standard ARMv3 and ARMv4 aborts. ARMv5
  5. * defines these to be "precise" aborts.
  6. */
  7. { do_bad, SIGSEGV, 0, "vector exception" },
  8. { do_bad, SIGBUS, BUS_ADRALN, "alignment exception" },
  9. { do_bad, SIGKILL, 0, "terminal exception" },
  10. { do_bad, SIGBUS, BUS_ADRALN, "alignment exception" },
  11. { do_bad, SIGBUS, 0, "external abort on linefetch" },
  12. { do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" },
  13. { do_bad, SIGBUS, 0, "external abort on linefetch" },
  14. { do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
  15. { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
  16. { do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" },
  17. { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
  18. { do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" },
  19. { do_bad, SIGBUS, 0, "external abort on translation" },
  20. { do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" },
  21. { do_bad, SIGBUS, 0, "external abort on translation" },
  22. { do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" },
  23. /*
  24. * The following are "imprecise" aborts, which are signalled by bit
  25. * 10 of the FSR, and may not be recoverable. These are only
  26. * supported if the CPU abort handler supports bit 10.
  27. */
  28. { do_bad, SIGBUS, 0, "unknown 16" },
  29. { do_bad, SIGBUS, 0, "unknown 17" },
  30. { do_bad, SIGBUS, 0, "unknown 18" },
  31. { do_bad, SIGBUS, 0, "unknown 19" },
  32. { do_bad, SIGBUS, 0, "lock abort" }, /* xscale */
  33. { do_bad, SIGBUS, 0, "unknown 21" },
  34. { do_bad, SIGBUS, BUS_OBJERR, "imprecise external abort" }, /* xscale */
  35. { do_bad, SIGBUS, 0, "unknown 23" },
  36. { do_bad, SIGBUS, 0, "dcache parity error" }, /* xscale */
  37. { do_bad, SIGBUS, 0, "unknown 25" },
  38. { do_bad, SIGBUS, 0, "unknown 26" },
  39. { do_bad, SIGBUS, 0, "unknown 27" },
  40. { do_bad, SIGBUS, 0, "unknown 28" },
  41. { do_bad, SIGBUS, 0, "unknown 29" },
  42. { do_bad, SIGBUS, 0, "unknown 30" },
  43. { do_bad, SIGBUS, 0, "unknown 31" },
  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. };