7 extern unsigned long _estack;
8 extern char __S_romp[];
10 extern char __START_BSS[];
11 extern char __END_BSS[];
14 extern void __init_registers();
15 extern void __copy_rom_sections_to_ram(void);
16 extern void __call_static_initializers(void);
17 extern void __init_user();
21 extern void mbed_exit(int return_code);
23 void _ExitProcess(int return_code) {
24 mbed_exit(return_code);
27 void __thumb_startup(void) {
31 // Disable the Watchdog because it may reset the core before entering main().
34 // zero-fill the .bss section
35 memset(__START_BSS, 0, (__END_BSS - __START_BSS));
38 __copy_rom_sections_to_ram();
40 // call C++ static initializers
41 __call_static_initializers();
43 // initializations before main, user specific
48 // should never get here
52 void Default_Handler() {
56 /* Weak definitions of handlers point to Default_Handler if not implemented */
57 void NMI_Handler() __attribute__ ((weak, alias("Default_Handler")));
58 void HardFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
59 void SVC_Handler() __attribute__ ((weak, alias("Default_Handler")));
60 void PendSV_Handler() __attribute__ ((weak, alias("Default_Handler")));
61 void SysTick_Handler() __attribute__ ((weak, alias("Default_Handler")));
63 void DMA0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
64 void DMA1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
65 void DMA2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
66 void DMA3_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
67 void MCM_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
68 void FTFL_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
69 void PMC_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
70 void LLW_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
71 void I2C0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
72 void I2C1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
73 void SPI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
74 void SPI1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
75 void UART0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
76 void UART1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
77 void UART2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
78 void ADC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
79 void CMP0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
80 void FTM0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
81 void FTM1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
82 void FTM2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
83 void RTC_Alarm_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
84 void RTC_Seconds_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
85 void PIT_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
86 void USBOTG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
87 void DAC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
88 void TSI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
89 void MCG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
90 void LPTimer_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
91 void PORTA_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
92 void PORTD_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
94 /* The Interrupt Vector Table */
95 void (* const InterruptVector[])() __attribute__ ((section(".vectortable"))) = {
96 /* Processor exceptions */
97 (void(*)(void)) &_estack,
115 DMA0_IRQHandler, /* DMA Channel 0 Transfer Complete and Error */
116 DMA1_IRQHandler, /* DMA Channel 1 Transfer Complete and Error */
117 DMA2_IRQHandler, /* DMA Channel 2 Transfer Complete and Error */
118 DMA3_IRQHandler, /* DMA Channel 3 Transfer Complete and Error */
119 MCM_IRQHandler, /* Normal Interrupt */
120 FTFL_IRQHandler, /* FTFL Interrupt */
121 PMC_IRQHandler, /* PMC Interrupt */
122 LLW_IRQHandler, /* Low Leakage Wake-up */
123 I2C0_IRQHandler, /* I2C0 interrupt */
124 I2C1_IRQHandler, /* I2C1 interrupt */
125 SPI0_IRQHandler, /* SPI0 Interrupt */
126 SPI1_IRQHandler, /* SPI1 Interrupt */
127 UART0_IRQHandler, /* UART0 Status and Error interrupt */
128 UART1_IRQHandler, /* UART1 Status and Error interrupt */
129 UART2_IRQHandler, /* UART2 Status and Error interrupt */
130 ADC0_IRQHandler, /* ADC0 interrupt */
131 CMP0_IRQHandler, /* CMP0 interrupt */
132 FTM0_IRQHandler, /* FTM0 fault, overflow and channels interrupt */
133 FTM1_IRQHandler, /* FTM1 fault, overflow and channels interrupt */
134 FTM2_IRQHandler, /* FTM2 fault, overflow and channels interrupt */
135 RTC_Alarm_IRQHandler, /* RTC Alarm interrupt */
136 RTC_Seconds_IRQHandler, /* RTC Seconds interrupt */
137 PIT_IRQHandler, /* PIT timer all channels interrupt */
138 Default_Handler, /* Reserved interrupt 39/23 */
139 USBOTG_IRQHandler, /* USB interrupt */
140 DAC0_IRQHandler, /* DAC0 interrupt */
141 TSI0_IRQHandler, /* TSI0 Interrupt */
142 MCG_IRQHandler, /* MCG Interrupt */
143 LPTimer_IRQHandler, /* LPTimer interrupt */
144 Default_Handler, /* Reserved interrupt 45/29 */
145 PORTA_IRQHandler, /* Port A interrupt */
146 PORTD_IRQHandler /* Port D interrupt */