summaryrefslogtreecommitdiff
path: root/tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c')
-rw-r--r--tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c147
1 files changed, 147 insertions, 0 deletions
diff --git a/tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c b/tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c
new file mode 100644
index 0000000000..49a3a37359
--- /dev/null
+++ b/tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/TOOLCHAIN_GCC_CW_EWL/startup_MKL25Z4.c
@@ -0,0 +1,147 @@
+#include <string.h>
+#include <stdlib.h>
+
+#include "cmsis.h"
+
+// Linker Script
+extern unsigned long _estack;
+extern char __S_romp[];
+
+extern char __START_BSS[];
+extern char __END_BSS[];
+
+// CRT0
+extern void __init_registers();
+extern void __copy_rom_sections_to_ram(void);
+extern void __call_static_initializers(void);
+extern void __init_user();
+
+// User/mbed Defined
+extern int main();
+extern void mbed_exit(int return_code);
+
+void _ExitProcess(int return_code) {
+ mbed_exit(return_code);
+}
+
+void __thumb_startup(void) {
+ // Setup registers
+ __init_registers();
+
+ // Disable the Watchdog because it may reset the core before entering main().
+ SIM->COPC = 0x0;
+
+ // zero-fill the .bss section
+ memset(__START_BSS, 0, (__END_BSS - __START_BSS));
+
+ if (__S_romp != 0L)
+ __copy_rom_sections_to_ram();
+
+ // call C++ static initializers
+ __call_static_initializers();
+
+ // initializations before main, user specific
+ __init_user();
+
+ exit(main());
+
+ // should never get here
+ while (1);
+}
+
+void Default_Handler() {
+ __asm("bkpt");
+}
+
+/* Weak definitions of handlers point to Default_Handler if not implemented */
+void NMI_Handler() __attribute__ ((weak, alias("Default_Handler")));
+void HardFault_Handler() __attribute__ ((weak, alias("Default_Handler")));
+void SVC_Handler() __attribute__ ((weak, alias("Default_Handler")));
+void PendSV_Handler() __attribute__ ((weak, alias("Default_Handler")));
+void SysTick_Handler() __attribute__ ((weak, alias("Default_Handler")));
+
+void DMA0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void DMA1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void DMA2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void DMA3_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void MCM_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void FTFL_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void PMC_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void LLW_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void I2C0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void I2C1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void SPI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void SPI1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void UART0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void UART1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void UART2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void ADC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void CMP0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void FTM0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void FTM1_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void FTM2_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void RTC_Alarm_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void RTC_Seconds_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void PIT_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void USBOTG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void DAC0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void TSI0_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void MCG_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void LPTimer_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void PORTA_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+void PORTD_IRQHandler() __attribute__ ((weak, alias("Default_Handler")));
+
+/* The Interrupt Vector Table */
+void (* const InterruptVector[])() __attribute__ ((section(".vectortable"))) = {
+ /* Processor exceptions */
+ (void(*)(void)) &_estack,
+ __thumb_startup,
+ NMI_Handler,
+ HardFault_Handler,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ SVC_Handler,
+ 0,
+ 0,
+ PendSV_Handler,
+ SysTick_Handler,
+
+ /* Interrupts */
+ DMA0_IRQHandler, /* DMA Channel 0 Transfer Complete and Error */
+ DMA1_IRQHandler, /* DMA Channel 1 Transfer Complete and Error */
+ DMA2_IRQHandler, /* DMA Channel 2 Transfer Complete and Error */
+ DMA3_IRQHandler, /* DMA Channel 3 Transfer Complete and Error */
+ MCM_IRQHandler, /* Normal Interrupt */
+ FTFL_IRQHandler, /* FTFL Interrupt */
+ PMC_IRQHandler, /* PMC Interrupt */
+ LLW_IRQHandler, /* Low Leakage Wake-up */
+ I2C0_IRQHandler, /* I2C0 interrupt */
+ I2C1_IRQHandler, /* I2C1 interrupt */
+ SPI0_IRQHandler, /* SPI0 Interrupt */
+ SPI1_IRQHandler, /* SPI1 Interrupt */
+ UART0_IRQHandler, /* UART0 Status and Error interrupt */
+ UART1_IRQHandler, /* UART1 Status and Error interrupt */
+ UART2_IRQHandler, /* UART2 Status and Error interrupt */
+ ADC0_IRQHandler, /* ADC0 interrupt */
+ CMP0_IRQHandler, /* CMP0 interrupt */
+ FTM0_IRQHandler, /* FTM0 fault, overflow and channels interrupt */
+ FTM1_IRQHandler, /* FTM1 fault, overflow and channels interrupt */
+ FTM2_IRQHandler, /* FTM2 fault, overflow and channels interrupt */
+ RTC_Alarm_IRQHandler, /* RTC Alarm interrupt */
+ RTC_Seconds_IRQHandler, /* RTC Seconds interrupt */
+ PIT_IRQHandler, /* PIT timer all channels interrupt */
+ Default_Handler, /* Reserved interrupt 39/23 */
+ USBOTG_IRQHandler, /* USB interrupt */
+ DAC0_IRQHandler, /* DAC0 interrupt */
+ TSI0_IRQHandler, /* TSI0 Interrupt */
+ MCG_IRQHandler, /* MCG Interrupt */
+ LPTimer_IRQHandler, /* LPTimer interrupt */
+ Default_Handler, /* Reserved interrupt 45/29 */
+ PORTA_IRQHandler, /* Port A interrupt */
+ PORTD_IRQHandler /* Port D interrupt */
+};