Exception.S 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #
  2. # Copyright (c) 2011-2021, Arm Limited. All rights reserved.<BR>
  3. #
  4. # SPDX-License-Identifier: BSD-2-Clause-Patent
  5. #
  6. #
  7. #include <Chipset/AArch64.h>
  8. #include <AsmMacroIoLibV8.h>
  9. #include <Base.h>
  10. #include <AutoGen.h>
  11. .text
  12. //============================================================
  13. //Default Exception Handlers
  14. //============================================================
  15. #define TO_HANDLER \
  16. EL1_OR_EL2(x1) \
  17. 1: mrs x1, elr_el1 /* EL1 Exception Link Register */ ;\
  18. b 3f ;\
  19. 2: mrs x1, elr_el2 /* EL2 Exception Link Register */ ;\
  20. 3: bl ASM_PFX(PeiCommonExceptionEntry) ;
  21. //
  22. // Default Exception handlers: There is no plan to return from any of these exceptions.
  23. // No context saving at all.
  24. //
  25. VECTOR_BASE(PeiVectorTable)
  26. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_SYNC)
  27. _DefaultSyncExceptHandler_t:
  28. mov x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
  29. TO_HANDLER
  30. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_IRQ)
  31. _DefaultIrq_t:
  32. mov x0, #EXCEPT_AARCH64_IRQ
  33. TO_HANDLER
  34. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_FIQ)
  35. _DefaultFiq_t:
  36. mov x0, #EXCEPT_AARCH64_FIQ
  37. TO_HANDLER
  38. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_SERR)
  39. _DefaultSError_t:
  40. mov x0, #EXCEPT_AARCH64_SERROR
  41. TO_HANDLER
  42. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPX_SYNC)
  43. _DefaultSyncExceptHandler_h:
  44. mov x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
  45. TO_HANDLER
  46. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPX_IRQ)
  47. _DefaultIrq_h:
  48. mov x0, #EXCEPT_AARCH64_IRQ
  49. TO_HANDLER
  50. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPX_FIQ)
  51. _DefaultFiq_h:
  52. mov x0, #EXCEPT_AARCH64_FIQ
  53. TO_HANDLER
  54. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPX_SERR)
  55. _DefaultSError_h:
  56. mov x0, #EXCEPT_AARCH64_SERROR
  57. TO_HANDLER
  58. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_SYNC)
  59. _DefaultSyncExceptHandler_LowerA64:
  60. mov x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
  61. TO_HANDLER
  62. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_IRQ)
  63. _DefaultIrq_LowerA64:
  64. mov x0, #EXCEPT_AARCH64_IRQ
  65. TO_HANDLER
  66. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_FIQ)
  67. _DefaultFiq_LowerA64:
  68. mov x0, #EXCEPT_AARCH64_FIQ
  69. TO_HANDLER
  70. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_SERR)
  71. _DefaultSError_LowerA64:
  72. mov x0, #EXCEPT_AARCH64_SERROR
  73. TO_HANDLER
  74. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_SYNC)
  75. _DefaultSyncExceptHandler_LowerA32:
  76. mov x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
  77. TO_HANDLER
  78. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_IRQ)
  79. _DefaultIrq_LowerA32:
  80. mov x0, #EXCEPT_AARCH64_IRQ
  81. TO_HANDLER
  82. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_FIQ)
  83. _DefaultFiq_LowerA32:
  84. mov x0, #EXCEPT_AARCH64_FIQ
  85. TO_HANDLER
  86. VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_SERR)
  87. _DefaultSError_LowerA32:
  88. mov x0, #EXCEPT_AARCH64_SERROR
  89. TO_HANDLER
  90. VECTOR_END(PeiVectorTable)