Home | History | Annotate | Download | only in AArch64
      1 #
      2 #  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
      3 #
      4 #  This program and the accompanying materials
      5 #  are licensed and made available under the terms and conditions of the BSD License
      6 #  which accompanies this distribution.  The full text of the license may be found at
      7 #  http://opensource.org/licenses/bsd-license.php
      8 #
      9 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 #
     12 #
     13 
     14 #include <Chipset/AArch64.h>
     15 #include <AsmMacroIoLibV8.h>
     16 #include <Base.h>
     17 #include <AutoGen.h>
     18 
     19 .text
     20 
     21 //============================================================
     22 //Default Exception Handlers
     23 //============================================================
     24 
     25 #define TO_HANDLER                                              \
     26    EL1_OR_EL2(x1)                                               \
     27 1: mrs  x1, elr_el1    /* EL1 Exception Link Register */       ;\
     28    b    3f                                                     ;\
     29 2: mrs  x1, elr_el2    /* EL2 Exception Link Register */       ;\
     30 3: bl   ASM_PFX(PeiCommonExceptionEntry)                       ;
     31 
     32 
     33 //
     34 // Default Exception handlers: There is no plan to return from any of these exceptions.
     35 // No context saving at all.
     36 //
     37 
     38 VECTOR_BASE(PeiVectorTable)
     39 
     40 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_SYNC)
     41 _DefaultSyncExceptHandler_t:
     42   mov  x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
     43   TO_HANDLER
     44 
     45 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_IRQ)
     46 _DefaultIrq_t:
     47   mov  x0, #EXCEPT_AARCH64_IRQ
     48   TO_HANDLER
     49 
     50 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_FIQ)
     51 _DefaultFiq_t:
     52   mov  x0, #EXCEPT_AARCH64_FIQ
     53   TO_HANDLER
     54 
     55 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SP0_SERR)
     56 _DefaultSError_t:
     57   mov  x0, #EXCEPT_AARCH64_SERROR
     58   TO_HANDLER
     59 
     60 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPx_SYNC)
     61 _DefaultSyncExceptHandler_h:
     62   mov  x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
     63   TO_HANDLER
     64 
     65 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPx_IRQ)
     66 _DefaultIrq_h:
     67   mov  x0, #EXCEPT_AARCH64_IRQ
     68   TO_HANDLER
     69 
     70 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPx_FIQ)
     71 _DefaultFiq_h:
     72   mov  x0, #EXCEPT_AARCH64_FIQ
     73   TO_HANDLER
     74 
     75 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_CUR_SPx_SERR)
     76 _DefaultSError_h:
     77   mov  x0, #EXCEPT_AARCH64_SERROR
     78   TO_HANDLER
     79 
     80 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_SYNC)
     81 _DefaultSyncExceptHandler_LowerA64:
     82   mov  x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
     83   TO_HANDLER
     84 
     85 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_IRQ)
     86 _DefaultIrq_LowerA64:
     87   mov  x0, #EXCEPT_AARCH64_IRQ
     88   TO_HANDLER
     89 
     90 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_FIQ)
     91 _DefaultFiq_LowerA64:
     92   mov  x0, #EXCEPT_AARCH64_FIQ
     93   TO_HANDLER
     94 
     95 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A64_SERR)
     96 _DefaultSError_LowerA64:
     97   mov  x0, #EXCEPT_AARCH64_SERROR
     98   TO_HANDLER
     99 
    100 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_SYNC)
    101 _DefaultSyncExceptHandler_LowerA32:
    102   mov  x0, #EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS
    103   TO_HANDLER
    104 
    105 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_IRQ)
    106 _DefaultIrq_LowerA32:
    107   mov  x0, #EXCEPT_AARCH64_IRQ
    108   TO_HANDLER
    109 
    110 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_FIQ)
    111 _DefaultFiq_LowerA32:
    112   mov  x0, #EXCEPT_AARCH64_FIQ
    113   TO_HANDLER
    114 
    115 VECTOR_ENTRY(PeiVectorTable, ARM_VECTOR_LOW_A32_SERR)
    116 _DefaultSError_LowerA32:
    117   mov  x0, #EXCEPT_AARCH64_SERROR
    118   TO_HANDLER
    119 
    120 VECTOR_END(PeiVectorTable)
    121