fsr-2level.c 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. static struct fsr_info ifsr_info[] = {
  45. { do_bad, SIGBUS, 0, "unknown 0" },
  46. { do_bad, SIGBUS, 0, "unknown 1" },
  47. { do_bad, SIGBUS, 0, "debug event" },
  48. { do_bad, SIGSEGV, SEGV_ACCERR, "section access flag fault" },
  49. { do_bad, SIGBUS, 0, "unknown 4" },
  50. { do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" },
  51. { do_bad, SIGSEGV, SEGV_ACCERR, "page access flag fault" },
  52. { do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
  53. { do_bad, SIGBUS, 0, "external abort on non-linefetch" },
  54. { do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" },
  55. { do_bad, SIGBUS, 0, "unknown 10" },
  56. { do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" },
  57. { do_bad, SIGBUS, 0, "external abort on translation" },
  58. { do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" },
  59. { do_bad, SIGBUS, 0, "external abort on translation" },
  60. { do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" },
  61. { do_bad, SIGBUS, 0, "unknown 16" },
  62. { do_bad, SIGBUS, 0, "unknown 17" },
  63. { do_bad, SIGBUS, 0, "unknown 18" },
  64. { do_bad, SIGBUS, 0, "unknown 19" },
  65. { do_bad, SIGBUS, 0, "unknown 20" },
  66. { do_bad, SIGBUS, 0, "unknown 21" },
  67. { do_bad, SIGBUS, 0, "unknown 22" },
  68. { do_bad, SIGBUS, 0, "unknown 23" },
  69. { do_bad, SIGBUS, 0, "unknown 24" },
  70. { do_bad, SIGBUS, 0, "unknown 25" },
  71. { do_bad, SIGBUS, 0, "unknown 26" },
  72. { do_bad, SIGBUS, 0, "unknown 27" },
  73. { do_bad, SIGBUS, 0, "unknown 28" },
  74. { do_bad, SIGBUS, 0, "unknown 29" },
  75. { do_bad, SIGBUS, 0, "unknown 30" },
  76. { do_bad, SIGBUS, 0, "unknown 31" },
  77. };