1 /*
2  * Copyright (c) 2009-2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Licensed under the Apache License, Version 2.0 (the License); you may
7  * not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 /*
20  * This file is derivative of CMSIS V5.6.0 startup_ARMv81MML.c
21  * Git SHA: b5f0603d6a584d1724d952fd8b0737458b90d62b
22  */
23 
24 #include "tfm_hal_device_header.h"
25 
26 /*----------------------------------------------------------------------------
27   External References
28  *----------------------------------------------------------------------------*/
29 extern uint32_t __INITIAL_SP;
30 extern uint32_t __STACK_LIMIT;
31 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
32 extern uint64_t __STACK_SEAL;
33 #endif
34 
35 extern void Error_Handler(void);
36 extern __NO_RETURN void __PROGRAM_START(void);
37 
38 /*----------------------------------------------------------------------------
39   Internal References
40  *----------------------------------------------------------------------------*/
41 __NO_RETURN void Reset_Handler (void);
42 
43 /*----------------------------------------------------------------------------
44   Exception / Interrupt Handler
45  *----------------------------------------------------------------------------*/
46 #define DEFAULT_IRQ_HANDLER(handler_name)  \
47 __NO_RETURN void __WEAK handler_name(void); \
48 void handler_name(void) { \
49     while(1); \
50 }
51 
52 /* Exceptions */
53 DEFAULT_IRQ_HANDLER(NMI_Handler)
54 DEFAULT_IRQ_HANDLER(HardFault_Handler)
55 DEFAULT_IRQ_HANDLER(MemManage_Handler)
56 DEFAULT_IRQ_HANDLER(BusFault_Handler)
57 DEFAULT_IRQ_HANDLER(UsageFault_Handler)
58 DEFAULT_IRQ_HANDLER(SecureFault_Handler)
59 DEFAULT_IRQ_HANDLER(SVC_Handler)
60 DEFAULT_IRQ_HANDLER(DebugMon_Handler)
61 DEFAULT_IRQ_HANDLER(PendSV_Handler)
62 DEFAULT_IRQ_HANDLER(SysTick_Handler)
63 
64 DEFAULT_IRQ_HANDLER(WWDG_IRQHandler)
65 DEFAULT_IRQ_HANDLER(PVD_AVD_IRQHandler)
66 DEFAULT_IRQ_HANDLER(RTC_IRQHandler)
67 DEFAULT_IRQ_HANDLER(RTC_IRQHandler_S)
68 DEFAULT_IRQ_HANDLER(TAMP_IRQHandler)
69 DEFAULT_IRQ_HANDLER(RAMCFG_IRQHandler)
70 DEFAULT_IRQ_HANDLER(FLASH_IRQHandler)
71 DEFAULT_IRQ_HANDLER(FLASH_IRQHandler_S)
72 DEFAULT_IRQ_HANDLER(GTZC_IRQHandler)
73 DEFAULT_IRQ_HANDLER(RCC_IRQHandler)
74 DEFAULT_IRQ_HANDLER(RCC_IRQHandler_S)
75 DEFAULT_IRQ_HANDLER(EXTI0_IRQHandler)
76 DEFAULT_IRQ_HANDLER(EXTI1_IRQHandler)
77 DEFAULT_IRQ_HANDLER(EXTI2_IRQHandler)
78 DEFAULT_IRQ_HANDLER(EXTI3_IRQHandler)
79 DEFAULT_IRQ_HANDLER(EXTI4_IRQHandler)
80 DEFAULT_IRQ_HANDLER(EXTI5_IRQHandler)
81 DEFAULT_IRQ_HANDLER(EXTI6_IRQHandler)
82 DEFAULT_IRQ_HANDLER(EXTI7_IRQHandler)
83 DEFAULT_IRQ_HANDLER(EXTI8_IRQHandler)
84 DEFAULT_IRQ_HANDLER(EXTI9_IRQHandler)
85 DEFAULT_IRQ_HANDLER(EXTI10_IRQHandler)
86 DEFAULT_IRQ_HANDLER(EXTI11_IRQHandler)
87 DEFAULT_IRQ_HANDLER(EXTI12_IRQHandler)
88 DEFAULT_IRQ_HANDLER(EXTI13_IRQHandler)
89 DEFAULT_IRQ_HANDLER(EXTI14_IRQHandler)
90 DEFAULT_IRQ_HANDLER(EXTI15_IRQHandler)
91 DEFAULT_IRQ_HANDLER(IWDG_IRQHandler)
92 #ifdef STM32U585xx
93 DEFAULT_IRQ_HANDLER(SAES_IRQHandler)
94 #endif
95 DEFAULT_IRQ_HANDLER(GPDMA1_Channel0_IRQHandler)
96 DEFAULT_IRQ_HANDLER(GPDMA1_Channel1_IRQHandler)
97 DEFAULT_IRQ_HANDLER(GPDMA1_Channel2_IRQHandler)
98 DEFAULT_IRQ_HANDLER(GPDMA1_Channel3_IRQHandler)
99 DEFAULT_IRQ_HANDLER(GPDMA1_Channel4_IRQHandler)
100 DEFAULT_IRQ_HANDLER(GPDMA1_Channel5_IRQHandler)
101 DEFAULT_IRQ_HANDLER(GPDMA1_Channel6_IRQHandler)
102 DEFAULT_IRQ_HANDLER(GPDMA1_Channel7_IRQHandler)
103 DEFAULT_IRQ_HANDLER(ADC1_IRQHandler)
104 DEFAULT_IRQ_HANDLER(DAC1_IRQHandler)
105 DEFAULT_IRQ_HANDLER(FDCAN1_IT0_IRQHandler)
106 DEFAULT_IRQ_HANDLER(FDCAN1_IT1_IRQHandler)
107 DEFAULT_IRQ_HANDLER(TIM1_BRK_IRQHandler)
108 DEFAULT_IRQ_HANDLER(TIM1_UP_IRQHandler)
109 DEFAULT_IRQ_HANDLER(TIM1_TRG_COM_IRQHandler)
110 DEFAULT_IRQ_HANDLER(TIM1_CC_IRQHandler)
111 DEFAULT_IRQ_HANDLER(TIM2_IRQHandler)
112 DEFAULT_IRQ_HANDLER(TIM3_IRQHandler)
113 DEFAULT_IRQ_HANDLER(TIM4_IRQHandler)
114 DEFAULT_IRQ_HANDLER(TIM5_IRQHandler)
115 DEFAULT_IRQ_HANDLER(TIM6_IRQHandler)
116 DEFAULT_IRQ_HANDLER(TIM7_IRQHandler)
117 DEFAULT_IRQ_HANDLER(TIM8_BRK_IRQHandler)
118 DEFAULT_IRQ_HANDLER(TIM8_UP_IRQHandler)
119 DEFAULT_IRQ_HANDLER(TIM8_TRG_COM_IRQHandler)
120 DEFAULT_IRQ_HANDLER(TIM8_CC_IRQHandler)
121 DEFAULT_IRQ_HANDLER(I2C1_EV_IRQHandler)
122 DEFAULT_IRQ_HANDLER(I2C1_ER_IRQHandler)
123 DEFAULT_IRQ_HANDLER(I2C2_EV_IRQHandler)
124 DEFAULT_IRQ_HANDLER(I2C2_ER_IRQHandler)
125 DEFAULT_IRQ_HANDLER(SPI1_IRQHandler)
126 DEFAULT_IRQ_HANDLER(SPI2_IRQHandler)
127 DEFAULT_IRQ_HANDLER(USART1_IRQHandler)
128 DEFAULT_IRQ_HANDLER(USART2_IRQHandler)
129 DEFAULT_IRQ_HANDLER(USART3_IRQHandler)
130 DEFAULT_IRQ_HANDLER(UART4_IRQHandler)
131 DEFAULT_IRQ_HANDLER(UART5_IRQHandler)
132 DEFAULT_IRQ_HANDLER(LPUART1_IRQHandler)
133 DEFAULT_IRQ_HANDLER(LPTIM1_IRQHandler)
134 DEFAULT_IRQ_HANDLER(LPTIM2_IRQHandler)
135 DEFAULT_IRQ_HANDLER(TIM15_IRQHandler)
136 DEFAULT_IRQ_HANDLER(TIM16_IRQHandler)
137 DEFAULT_IRQ_HANDLER(TIM17_IRQHandler)
138 DEFAULT_IRQ_HANDLER(COMP_IRQHandler)
139 DEFAULT_IRQ_HANDLER(OTG_FS_IRQHandler)
140 DEFAULT_IRQ_HANDLER(CRS_IRQHandler)
141 DEFAULT_IRQ_HANDLER(FMC_IRQHandler)
142 DEFAULT_IRQ_HANDLER(OCTOSPI1_IRQHandler)
143 DEFAULT_IRQ_HANDLER(PWR_S3WU_IRQHandler)
144 DEFAULT_IRQ_HANDLER(SDMMC1_IRQHandler)
145 DEFAULT_IRQ_HANDLER(SDMMC2_IRQHandler)
146 
147 DEFAULT_IRQ_HANDLER(DMA2_Channel1_IRQHandler)
148 DEFAULT_IRQ_HANDLER(GPDMA1_Channel8_IRQHandler)
149 DEFAULT_IRQ_HANDLER(GPDMA1_Channel9_IRQHandler)
150 DEFAULT_IRQ_HANDLER(GPDMA1_Channel10_IRQHandler)
151 DEFAULT_IRQ_HANDLER(GPDMA1_Channel11_IRQHandler)
152 DEFAULT_IRQ_HANDLER(GPDMA1_Channel12_IRQHandler)
153 DEFAULT_IRQ_HANDLER(GPDMA1_Channel13_IRQHandler)
154 DEFAULT_IRQ_HANDLER(GPDMA1_Channel14_IRQHandler)
155 DEFAULT_IRQ_HANDLER(GPDMA1_Channel15_IRQHandler)
156 DEFAULT_IRQ_HANDLER(I2C3_EV_IRQHandler)
157 DEFAULT_IRQ_HANDLER(I2C3_ER_IRQHandler)
158 DEFAULT_IRQ_HANDLER(SAI1_IRQHandler)
159 DEFAULT_IRQ_HANDLER(SAI2_IRQHandler)
160 DEFAULT_IRQ_HANDLER(TSC_IRQHandler)
161 #ifdef STM32U585xx
162 DEFAULT_IRQ_HANDLER(AES_IRQHandler)
163 #endif
164 DEFAULT_IRQ_HANDLER(RNG_IRQHandler)
165 DEFAULT_IRQ_HANDLER(FPU_IRQHandler)
166 DEFAULT_IRQ_HANDLER(HASH_IRQHandler)
167 #ifdef STM32U585xx
168 DEFAULT_IRQ_HANDLER(PKA_IRQHandler)
169 #endif
170 DEFAULT_IRQ_HANDLER(LPTIM3_IRQHandler)
171 DEFAULT_IRQ_HANDLER(SPI3_IRQHandler)
172 DEFAULT_IRQ_HANDLER(I2C4_ER_IRQHandler)
173 DEFAULT_IRQ_HANDLER(I2C4_EV_IRQHandler)
174 DEFAULT_IRQ_HANDLER(MDF1_FLT0_IRQHandler)
175 DEFAULT_IRQ_HANDLER(MDF1_FLT1_IRQHandler)
176 DEFAULT_IRQ_HANDLER(MDF1_FLT2_IRQHandler)
177 DEFAULT_IRQ_HANDLER(MDF1_FLT3_IRQHandler)
178 DEFAULT_IRQ_HANDLER(UCPD1_IRQHandler)
179 DEFAULT_IRQ_HANDLER(ICACHE_IRQHandler)
180 #ifdef STM32U585xx
181 DEFAULT_IRQ_HANDLER(OTFDEC1_IRQHandler)
182 DEFAULT_IRQ_HANDLER(OTFDEC2_IRQHandler)
183 #endif
184 DEFAULT_IRQ_HANDLER(LPTIM4_IRQHandler)
185 DEFAULT_IRQ_HANDLER(DCACHE1_IRQHandler)
186 DEFAULT_IRQ_HANDLER(ADF1_IRQHandler)
187 DEFAULT_IRQ_HANDLER(ADC4_IRQHandler)
188 DEFAULT_IRQ_HANDLER(LPDMA1_Channel0_IRQHandler)
189 DEFAULT_IRQ_HANDLER(LPDMA1_Channel1_IRQHandler)
190 DEFAULT_IRQ_HANDLER(LPDMA1_Channel2_IRQHandler)
191 DEFAULT_IRQ_HANDLER(LPDMA1_Channel3_IRQHandler)
192 DEFAULT_IRQ_HANDLER(DMA2D_IRQHandler)
193 DEFAULT_IRQ_HANDLER(DCMI_PSSI_IRQHandler)
194 DEFAULT_IRQ_HANDLER(OCTOSPI2_IRQHandler)
195 DEFAULT_IRQ_HANDLER(MDF1_FLT4_IRQHandler)
196 DEFAULT_IRQ_HANDLER(MDF1_FLT5_IRQHandler)
197 DEFAULT_IRQ_HANDLER(CORDIC_IRQHandler)
198 DEFAULT_IRQ_HANDLER(FMAC_IRQHandler)
199 
200 /*----------------------------------------------------------------------------
201   Exception / Interrupt Vector table
202  *----------------------------------------------------------------------------*/
203 
204 #if defined ( __GNUC__ )
205 #pragma GCC diagnostic push
206 #pragma GCC diagnostic ignored "-Wpedantic"
207 #endif
208 
209 extern const VECTOR_TABLE_Type __VECTOR_TABLE[];
210        const VECTOR_TABLE_Type __VECTOR_TABLE[] __VECTOR_TABLE_ATTRIBUTE = {
211   (VECTOR_TABLE_Type)(&__INITIAL_SP),/*      Initial Stack Pointer */
212   Reset_Handler,                    /*      Reset Handler */
213   NMI_Handler,                      /* -14: NMI Handler */
214   Error_Handler,                    /* -13: Hard Fault Handler */
215   Error_Handler,                    /* -12: MPU Fault Handler */
216   Error_Handler,                    /* -11: Bus Fault Handler */
217   UsageFault_Handler,               /* -10: Usage Fault Handler */
218   SecureFault_Handler,              /*  -9: Secure Fault Handler */
219   0,                                /*      Reserved */
220   0,                                /*      Reserved */
221   0,                                /*      Reserved */
222   SVC_Handler,                      /*  -5: SVCall Handler */
223   DebugMon_Handler,                 /*  -4: Debug Monitor Handler */
224   0,                                /*      Reserved */
225   PendSV_Handler,                   /*  -2: PendSV Handler */
226   SysTick_Handler,                  /*  -1: SysTick Handler */
227   WWDG_IRQHandler,                  /*   0: Window WatchDog */
228   PVD_AVD_IRQHandler,               /*   1: PVD/AVD through EXTI Line detection Interrupt */
229   RTC_IRQHandler,                   /*   2: RTC non-secure interrupt */
230   RTC_IRQHandler_S,                 /*   3: RTC secure interrupt */
231   Error_Handler,                    /*   4: Tamper non-secure interrupt  */
232   RAMCFG_IRQHandler,                /*   5: RAMCFG global */
233   FLASH_IRQHandler,                 /*   6: FLASH non-secure global interrupt */
234   FLASH_IRQHandler_S,               /*   7: FLASH secure global interrupt */
235   GTZC_IRQHandler,                  /*   8: Global TrustZone Controller interrupt */
236   RCC_IRQHandler,                   /*   9: RCC non-secure global interrupts */
237   RCC_IRQHandler_S,                 /*  10: RCC secure global interrupts */
238   EXTI0_IRQHandler,                 /*  11: EXTI Line0 */
239   EXTI1_IRQHandler,                 /*  12: EXTI Line1 */
240   EXTI2_IRQHandler,                 /*  13: EXTI Line2 */
241   EXTI3_IRQHandler,                 /*  14: EXTI Line3 */
242   EXTI4_IRQHandler,                 /*  15: EXTI Line4 */
243   EXTI5_IRQHandler,                 /*  16: EXTI Line5 */
244   EXTI6_IRQHandler,                 /*  17: EXTI Line6 */
245   EXTI7_IRQHandler,                 /*  18: EXTI Line7 */
246   EXTI8_IRQHandler,                 /*  19: EXTI Line8 */
247   EXTI9_IRQHandler,                 /*  20: EXTI Line9 */
248   EXTI10_IRQHandler,                /*  21: EXTI Line10 */
249   EXTI11_IRQHandler,                /*  22: EXTI Line11 */
250   EXTI12_IRQHandler,                /*  23: EXTI Line12 */
251   EXTI13_IRQHandler,                /*  24: EXTI Line13 */
252   EXTI14_IRQHandler,                /*  25: EXTI Line14 */
253   EXTI15_IRQHandler,                /*  26: EXTI Line15 */
254   IWDG_IRQHandler,                  /*  27: IWDG global interrupt */
255 #ifdef STM32U585xx
256   SAES_IRQHandler,                  /*  28:Secure AES global interrupt */
257 #else
258   0,                                /*  28: Reserved */
259 #endif
260   GPDMA1_Channel0_IRQHandler,       /*  29: GPDMA1 Channel 0 global interrupt */
261   GPDMA1_Channel1_IRQHandler,       /*  30: GPDMA1 Channel 1 global interrupt */
262   GPDMA1_Channel2_IRQHandler,       /*  31: GPDMA1 Channel 2 global interrupt */
263   GPDMA1_Channel3_IRQHandler,       /*  32: GPDMA1 Channel 3 global interrupt */
264   GPDMA1_Channel4_IRQHandler,       /*  33: GPDMA1 Channel 4 global interrupt */
265   GPDMA1_Channel5_IRQHandler,       /*  34: GPDMA1 Channel 5 global interrupt */
266   GPDMA1_Channel6_IRQHandler,       /*  35: GPDMA1 Channel 6 global interrupt */
267   GPDMA1_Channel7_IRQHandler,       /*  36: GPDMA1 Channel 7 global interrupt */
268   ADC1_IRQHandler,                  /*  37: ADC1 global interrupt  */
269   DAC1_IRQHandler,                  /*  38: DAC1 global interrupt */
270   FDCAN1_IT0_IRQHandler,            /*  39: FDCAN1 Interrupt 0 */
271   FDCAN1_IT1_IRQHandler,            /*  40: FDCAN1 Interrupt 1 */
272   TIM1_BRK_IRQHandler,              /*  41: TIM1 Break */
273   TIM1_UP_IRQHandler,               /*  42: TIM1 Update */
274   TIM1_TRG_COM_IRQHandler,          /*  43: TIM1 Trigger and Commutation */
275   TIM1_CC_IRQHandler,               /*  44: TIM1 Capture Compare */
276   TIM2_IRQHandler,                  /*  45: TIM2 */
277   TIM3_IRQHandler,                  /*  46: TIM3 */
278   TIM4_IRQHandler,                  /*  47: TIM4 */
279   TIM5_IRQHandler,                  /*  48: TIM5 */
280   TIM6_IRQHandler,                  /*  49: TIM6 */
281   TIM7_IRQHandler,                  /*  50: TIM7 */
282   TIM8_BRK_IRQHandler,              /*  51: TIM8 Break */
283   TIM8_UP_IRQHandler,               /*  52: TIM8 Update */
284   TIM8_TRG_COM_IRQHandler,          /*  53: TIM8 Trigger and Commutation */
285   TIM8_CC_IRQHandler,               /*  54: TIM8 Capture Compare */
286   I2C1_EV_IRQHandler,               /*  55: I2C1 Event */
287   I2C1_ER_IRQHandler,               /*  56: I2C1 Error */
288   I2C2_EV_IRQHandler,               /*  57: I2C2 Event */
289   I2C2_ER_IRQHandler,               /*  58: I2C2 Error */
290   SPI1_IRQHandler,                  /*  59: SPI1 */
291   SPI2_IRQHandler,                  /*  60: SPI2 */
292   USART1_IRQHandler,                /*  61: USART1 */
293   USART2_IRQHandler,                /*  62: USART2 */
294   USART3_IRQHandler,                /*  63: USART3 */
295   UART4_IRQHandler,                 /*  64: UART4 */
296   UART5_IRQHandler,                 /*  65: UART5 */
297   LPUART1_IRQHandler,               /*  66: LP UART1 */
298   LPTIM1_IRQHandler,                /*  67: LP TIM1 */
299   LPTIM2_IRQHandler,                /*  68: LP TIM2 */
300   TIM15_IRQHandler,                 /*  69: TIM15 */
301   TIM16_IRQHandler,                 /*  70: TIM16 */
302   TIM17_IRQHandler,                 /*  71: TIM17 */
303   COMP_IRQHandler,                  /*  72: COMP1&2 */
304   OTG_FS_IRQHandler,                /*  73: USB OTG FS global interrupt */
305   CRS_IRQHandler,                   /*  74: CRS */
306   FMC_IRQHandler,                   /*  75: FMC */
307   OCTOSPI1_IRQHandler,              /*  76: OctoSPI1 global interrupt */
308   PWR_S3WU_IRQHandler,              /*  77: PWR wake up from Stop3 interrupt */
309   SDMMC1_IRQHandler,                /*  78: SDMMC1 global interrupt */
310   SDMMC2_IRQHandler,                /*  79: SDMMC2 global interrupt*/
311   GPDMA1_Channel8_IRQHandler,       /*  80: GPDMA1 Channel 8 global interrupt*/
312   GPDMA1_Channel9_IRQHandler,       /*  81: GPDMA1 Channel 9 global interrupt*/
313   GPDMA1_Channel10_IRQHandler,      /*  82: GPDMA1 Channel 10 global interrupt*/
314   GPDMA1_Channel11_IRQHandler,      /*  83: GPDMA1 Channel 11 global interrupt*/
315   GPDMA1_Channel12_IRQHandler,      /*  84: GPDMA1 Channel 12 global interrupt*/
316   GPDMA1_Channel13_IRQHandler,      /*  85: GPDMA1 Channel 13 global interrupt*/
317   GPDMA1_Channel14_IRQHandler,      /*  86: GPDMA1 Channel 14 global interrupt*/
318   GPDMA1_Channel15_IRQHandler,      /*  87: GPDMA1 Channel 15 global interrupt*/
319   I2C3_EV_IRQHandler,               /*  88: I2C3 event */
320   I2C3_ER_IRQHandler,               /*  89: I2C3 error */
321   SAI1_IRQHandler,                  /*  90: Serial Audio Interface 1 global interrupt */
322   SAI2_IRQHandler,                  /*  91: Serial Audio Interface 2 global interrupt */
323   TSC_IRQHandler,                   /*  92: Touch Sense Controller global interrupt */
324 #ifdef STM32U585xx
325   AES_IRQHandler,                   /*  93: AES global interrupt */
326 #else
327   0,                                /*  93: Reserved */
328 #endif
329   RNG_IRQHandler,                   /*  94: RNG global interrupt */
330   FPU_IRQHandler,                   /*  95: FPU */
331   HASH_IRQHandler,                  /*  96: HASH global interrupt */
332 #ifdef STM32U585xx
333   PKA_IRQHandler,                   /*  97: PKA global interrupt */
334 #else
335   0,                                /*  97: Reserved */
336 #endif
337   LPTIM3_IRQHandler,                /*  98: LP TIM3 */
338   SPI3_IRQHandler,                  /*  99: SPI3 */
339   I2C4_ER_IRQHandler,               /* 100: I2C4 error */
340   I2C4_EV_IRQHandler,               /* 101: I2C4 event */
341   MDF1_FLT0_IRQHandler,             /* 102: MDF1 Filter 0 global interrupt */
342   MDF1_FLT1_IRQHandler,             /* 103: MDF1 Filter 1 global interrupt */
343   MDF1_FLT2_IRQHandler,             /* 104: MDF1 Filter 2 global interrupt */
344   MDF1_FLT3_IRQHandler,             /* 105: MDF1 Filter 3 global interrupt */
345   UCPD1_IRQHandler,                 /* 106: UCPD1 global interrupt */
346   ICACHE_IRQHandler,                /* 107: Instruction cache global interrupt*/
347 #ifdef STM32U585xx
348   OTFDEC1_IRQHandler,               /* 108: OTFDEC1 global interrupt */
349   OTFDEC2_IRQHandler,               /* 108: OTFDEC2 global interrupt */
350 #else
351   0,                                /* 108: Reserved */
352   0,                                /* 109: Reserved */
353 #endif
354   LPTIM4_IRQHandler,                /* 110: LPTIM4 global interrupt */
355   DCACHE1_IRQHandler,               /* 111: Data cache global interrupt */
356   ADF1_IRQHandler,                  /* 112: ADF interrupt */
357   ADC4_IRQHandler,                  /* 113: ADC4 (12bits) global interrupt */
358   LPDMA1_Channel0_IRQHandler,       /* 114: LPDMA1 SmartRun Channel 0 global interrupt */
359   LPDMA1_Channel1_IRQHandler,       /* 115: LPDMA1 SmartRun Channel 0 global interrupt */
360   LPDMA1_Channel2_IRQHandler,       /* 116: LPDMA1 SmartRun Channel 0 global interrupt */
361   LPDMA1_Channel3_IRQHandler,       /* 117: LPDMA1 SmartRun Channel 0 global interrupt */
362   DMA2D_IRQHandler,                 /* 118: DMA2D global interrupt */
363   DCMI_PSSI_IRQHandler,             /* 119: DCMI/PSSI global interrupt */
364   OCTOSPI2_IRQHandler,              /* 120: OCTOSPI2 global interrupt */
365   MDF1_FLT4_IRQHandler,             /* 121: MDF1 Filter 4 global interrupt */
366   MDF1_FLT5_IRQHandler,             /* 122: MDF1 Filter 5 global interrupt */
367   CORDIC_IRQHandler,                /* 123: CORDIC global interrupt */
368   FMAC_IRQHandler,                  /* 124: FMAC global interrupt  */
369 };
370 
371 #if defined ( __GNUC__ )
372 #pragma GCC diagnostic pop
373 #endif
374 
375 /*----------------------------------------------------------------------------
376   Reset Handler called on controller reset
377  *----------------------------------------------------------------------------*/
Reset_Handler(void)378 void Reset_Handler(void)
379 {
380     __set_PSP((uint32_t)(&__INITIAL_SP));
381 
382     __set_MSPLIM((uint32_t)(&__STACK_LIMIT));
383     __set_PSPLIM((uint32_t)(&__STACK_LIMIT));
384 
385 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
386     __TZ_set_STACKSEAL_S((uint32_t *)(&__STACK_SEAL));
387 #endif
388   __IO uint32_t tmp;
389   /* disable IRQ is removed, to support tamper interrupt from the beginning */
390   /*__disable_irq();*/
391   /* Tamp IRQ prio is set to highest , and IRQ is enabled */
392   NVIC_SetPriority(TAMP_IRQn, 0);
393   NVIC_EnableIRQ(TAMP_IRQn);
394   SCB->VTOR = (uint32_t) &__VECTOR_TABLE[0];
395   /* Program AIRCR with PRIS = 1*/
396   tmp = SCB->AIRCR;
397   SCB->AIRCR = (~tmp & SCB_AIRCR_VECTKEYSTAT_Msk) |
398   SCB_AIRCR_PRIS_Msk | (tmp & ~SCB_AIRCR_VECTKEY_Msk);
399 
400   /* Lock Secure Vector Table and AIRCR*/
401   /* Enable SYSCFG interface clock */
402   RCC->APB3ENR |= RCC_APB3ENR_SYSCFGEN;
403   /* Delay after an RCC peripheral clock enabling */
404   tmp = RCC->APB3ENR;
405   (void)tmp;
406   SYSCFG->CSLCKR |= SYSCFG_CSLCKR_LOCKSVTAIRCR;
407   SystemInit();   /* CMSIS System Initialization */
408   __PROGRAM_START();                        /* Enter PreMain (C library entry point) */
409 }
410