]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_M7_SAME70_Xplained_AtmelStudio/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c
Rename DummyTCB_t to StaticTCB_t.
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAME70_Xplained_AtmelStudio / src / ASF / sam / utils / cmsis / same70 / source / templates / gcc / startup_same70.c
diff --git a/FreeRTOS/Demo/CORTEX_M7_SAME70_Xplained_AtmelStudio/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c b/FreeRTOS/Demo/CORTEX_M7_SAME70_Xplained_AtmelStudio/src/ASF/sam/utils/cmsis/same70/source/templates/gcc/startup_same70.c
new file mode 100644 (file)
index 0000000..7eab202
--- /dev/null
@@ -0,0 +1,351 @@
+/**\r
+ * \file\r
+ *\r
+ * Copyright (c) 2015 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ *    this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ *    this list of conditions and the following disclaimer in the documentation\r
+ *    and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ *    Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+/*\r
+ * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>\r
+ */\r
+\r
+#include "same70.h"\r
+\r
+#if __FPU_USED /* CMSIS defined value to indicate usage of FPU */\r
+#include "fpu.h"\r
+#endif\r
+\r
+/* Initialize segments */\r
+extern uint32_t _sfixed;\r
+extern uint32_t _efixed;\r
+extern uint32_t _etext;\r
+extern uint32_t _srelocate;\r
+extern uint32_t _erelocate;\r
+extern uint32_t _szero;\r
+extern uint32_t _ezero;\r
+extern uint32_t _sstack;\r
+extern uint32_t _estack;\r
+\r
+/** \cond DOXYGEN_SHOULD_SKIP_THIS */\r
+int main(void);\r
+/** \endcond */\r
+\r
+void __libc_init_array(void);\r
+\r
+/* Default empty handler */\r
+void Dummy_Handler(void);\r
+\r
+/* Cortex-M7 core handlers */\r
+void NMI_Handler        ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void HardFault_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MemManage_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void BusFault_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SVC_Handler        ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void DebugMon_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PendSV_Handler     ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SysTick_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+\r
+/* Peripherals handlers */\r
+void SUPC_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RSTC_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RTC_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RTT_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void WDT_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PMC_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EFC_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART0_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART1_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOA_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOB_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_PIOC_INSTANCE_\r
+void PIOC_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_PIOC_INSTANCE_ */\r
+void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOD_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_PIOE_INSTANCE_\r
+void PIOE_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_PIOE_INSTANCE_ */\r
+#ifdef _SAME70_HSMCI_INSTANCE_\r
+void HSMCI_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_HSMCI_INSTANCE_ */\r
+void TWIHS0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIHS1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SPI0_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SSC_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC0_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC1_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC2_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC3_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC4_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC5_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+void AFEC0_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_DACC_INSTANCE_\r
+void DACC_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_DACC_INSTANCE_ */\r
+void PWM0_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ICM_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ACC_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USBHS_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MCAN0_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MCAN1_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GMAC_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AFEC1_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TWIHS2_INSTANCE_\r
+void TWIHS2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TWIHS2_INSTANCE_ */\r
+void SPI1_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void QSPI_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART2_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART3_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART4_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC6_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC7_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC8_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+void TC9_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC10_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC11_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AES_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TRNG_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void XDMAC_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ISI_Handler    ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PWM1_Handler   ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_SDRAMC_INSTANCE_\r
+void SDRAMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_SDRAMC_INSTANCE_ */\r
+void RSWDT_Handler  ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+\r
+/* Exception Table */\r
+__attribute__ ((section(".vectors")))\r
+const DeviceVectors exception_table = {\r
+\r
+        /* Configure Initial Stack Pointer, using linker-generated symbols */\r
+        .pvStack = (void*) (&_estack),\r
+\r
+        .pfnReset_Handler      = (void*) Reset_Handler,\r
+        .pfnNMI_Handler        = (void*) NMI_Handler,\r
+        .pfnHardFault_Handler  = (void*) HardFault_Handler,\r
+        .pfnMemManage_Handler  = (void*) MemManage_Handler,\r
+        .pfnBusFault_Handler   = (void*) BusFault_Handler,\r
+        .pfnUsageFault_Handler = (void*) UsageFault_Handler,\r
+        .pfnReserved1_Handler  = (void*) (0UL),          /* Reserved */\r
+        .pfnReserved2_Handler  = (void*) (0UL),          /* Reserved */\r
+        .pfnReserved3_Handler  = (void*) (0UL),          /* Reserved */\r
+        .pfnReserved4_Handler  = (void*) (0UL),          /* Reserved */\r
+        .pfnSVC_Handler        = (void*) SVC_Handler,\r
+        .pfnDebugMon_Handler   = (void*) DebugMon_Handler,\r
+        .pfnReserved5_Handler  = (void*) (0UL),          /* Reserved */\r
+        .pfnPendSV_Handler     = (void*) PendSV_Handler,\r
+        .pfnSysTick_Handler    = (void*) SysTick_Handler,\r
+\r
+        /* Configurable interrupts */\r
+        .pfnSUPC_Handler   = (void*) SUPC_Handler,   /* 0  Supply Controller */\r
+        .pfnRSTC_Handler   = (void*) RSTC_Handler,   /* 1  Reset Controller */\r
+        .pfnRTC_Handler    = (void*) RTC_Handler,    /* 2  Real Time Clock */\r
+        .pfnRTT_Handler    = (void*) RTT_Handler,    /* 3  Real Time Timer */\r
+        .pfnWDT_Handler    = (void*) WDT_Handler,    /* 4  Watchdog Timer */\r
+        .pfnPMC_Handler    = (void*) PMC_Handler,    /* 5  Power Management Controller */\r
+        .pfnEFC_Handler    = (void*) EFC_Handler,    /* 6  Enhanced Embedded Flash Controller */\r
+        .pfnUART0_Handler  = (void*) UART0_Handler,  /* 7  UART 0 */\r
+        .pfnUART1_Handler  = (void*) UART1_Handler,  /* 8  UART 1 */\r
+        .pvReserved9       = (void*) (0UL),          /* 9  Reserved */\r
+        .pfnPIOA_Handler   = (void*) PIOA_Handler,   /* 10 Parallel I/O Controller A */\r
+        .pfnPIOB_Handler   = (void*) PIOB_Handler,   /* 11 Parallel I/O Controller B */\r
+#ifdef _SAME70_PIOC_INSTANCE_\r
+        .pfnPIOC_Handler   = (void*) PIOC_Handler,   /* 12 Parallel I/O Controller C */\r
+#else\r
+        .pvReserved12      = (void*) (0UL),          /* 12 Reserved */\r
+#endif /* _SAME70_PIOC_INSTANCE_ */\r
+        .pfnUSART0_Handler = (void*) USART0_Handler, /* 13 USART 0 */\r
+        .pfnUSART1_Handler = (void*) USART1_Handler, /* 14 USART 1 */\r
+        .pfnUSART2_Handler = (void*) USART2_Handler, /* 15 USART 2 */\r
+        .pfnPIOD_Handler   = (void*) PIOD_Handler,   /* 16 Parallel I/O Controller D */\r
+#ifdef _SAME70_PIOE_INSTANCE_\r
+        .pfnPIOE_Handler   = (void*) PIOE_Handler,   /* 17 Parallel I/O Controller E */\r
+#else\r
+        .pvReserved17      = (void*) (0UL),          /* 17 Reserved */\r
+#endif /* _SAME70_PIOE_INSTANCE_ */\r
+#ifdef _SAME70_HSMCI_INSTANCE_\r
+        .pfnHSMCI_Handler  = (void*) HSMCI_Handler,  /* 18 Multimedia Card Interface */\r
+#else\r
+        .pvReserved18      = (void*) (0UL),          /* 18 Reserved */\r
+#endif /* _SAME70_HSMCI_INSTANCE_ */\r
+        .pfnTWIHS0_Handler = (void*) TWIHS0_Handler, /* 19 Two Wire Interface 0 HS */\r
+        .pfnTWIHS1_Handler = (void*) TWIHS1_Handler, /* 20 Two Wire Interface 1 HS */\r
+        .pfnSPI0_Handler   = (void*) SPI0_Handler,   /* 21 Serial Peripheral Interface 0 */\r
+        .pfnSSC_Handler    = (void*) SSC_Handler,    /* 22 Synchronous Serial Controller */\r
+        .pfnTC0_Handler    = (void*) TC0_Handler,    /* 23 Timer/Counter 0 */\r
+        .pfnTC1_Handler    = (void*) TC1_Handler,    /* 24 Timer/Counter 1 */\r
+        .pfnTC2_Handler    = (void*) TC2_Handler,    /* 25 Timer/Counter 2 */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+        .pfnTC3_Handler    = (void*) TC3_Handler,    /* 26 Timer/Counter 3 */\r
+#else\r
+        .pvReserved26      = (void*) (0UL),          /* 26 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+        .pfnTC4_Handler    = (void*) TC4_Handler,    /* 27 Timer/Counter 4 */\r
+#else\r
+        .pvReserved27      = (void*) (0UL),          /* 27 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+        .pfnTC5_Handler    = (void*) TC5_Handler,    /* 28 Timer/Counter 5 */\r
+#else\r
+        .pvReserved28      = (void*) (0UL),          /* 28 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+        .pfnAFEC0_Handler  = (void*) AFEC0_Handler,  /* 29 Analog Front End 0 */\r
+#ifdef _SAME70_DACC_INSTANCE_\r
+        .pfnDACC_Handler   = (void*) DACC_Handler,   /* 30 Digital To Analog Converter */\r
+#else\r
+        .pvReserved30      = (void*) (0UL),          /* 30 Reserved */\r
+#endif /* _SAME70_DACC_INSTANCE_ */\r
+        .pfnPWM0_Handler   = (void*) PWM0_Handler,   /* 31 Pulse Width Modulation 0 */\r
+        .pfnICM_Handler    = (void*) ICM_Handler,    /* 32 Integrity Check Monitor */\r
+        .pfnACC_Handler    = (void*) ACC_Handler,    /* 33 Analog Comparator */\r
+        .pfnUSBHS_Handler  = (void*) USBHS_Handler,  /* 34 USB Host / Device Controller */\r
+        .pfnMCAN0_Handler  = (void*) MCAN0_Handler,  /* 35 MCAN Controller 0 */\r
+        .pvReserved36      = (void*) (0UL),          /* 36 Reserved */\r
+        .pfnMCAN1_Handler  = (void*) MCAN1_Handler,  /* 37 MCAN Controller 1 */\r
+        .pvReserved38      = (void*) (0UL),          /* 38 Reserved */\r
+        .pfnGMAC_Handler   = (void*) GMAC_Handler,   /* 39 Ethernet MAC */\r
+        .pfnAFEC1_Handler  = (void*) AFEC1_Handler,  /* 40 Analog Front End 1 */\r
+#ifdef _SAME70_TWIHS2_INSTANCE_\r
+        .pfnTWIHS2_Handler = (void*) TWIHS2_Handler, /* 41 Two Wire Interface 2 HS */\r
+#else\r
+        .pvReserved41      = (void*) (0UL),          /* 41 Reserved */\r
+#endif /* _SAME70_TWIHS2_INSTANCE_ */\r
+        .pfnSPI1_Handler   = (void*) SPI1_Handler,   /* 42 Serial Peripheral Interface 1 */\r
+        .pfnQSPI_Handler   = (void*) QSPI_Handler,   /* 43 Quad I/O Serial Peripheral Interface */\r
+        .pfnUART2_Handler  = (void*) UART2_Handler,  /* 44 UART 2 */\r
+        .pfnUART3_Handler  = (void*) UART3_Handler,  /* 45 UART 3 */\r
+        .pfnUART4_Handler  = (void*) UART4_Handler,  /* 46 UART 4 */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+        .pfnTC6_Handler    = (void*) TC6_Handler,    /* 47 Timer/Counter 6 */\r
+#else\r
+        .pvReserved47      = (void*) (0UL),          /* 47 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+        .pfnTC7_Handler    = (void*) TC7_Handler,    /* 48 Timer/Counter 7 */\r
+#else\r
+        .pvReserved48      = (void*) (0UL),          /* 48 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+        .pfnTC8_Handler    = (void*) TC8_Handler,    /* 49 Timer/Counter 8 */\r
+#else\r
+        .pvReserved49      = (void*) (0UL),          /* 49 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+        .pfnTC9_Handler    = (void*) TC9_Handler,    /* 50 Timer/Counter 9 */\r
+        .pfnTC10_Handler   = (void*) TC10_Handler,   /* 51 Timer/Counter 10 */\r
+        .pfnTC11_Handler   = (void*) TC11_Handler,   /* 52 Timer/Counter 11 */\r
+        .pvReserved53      = (void*) (0UL),          /* 53 Reserved */\r
+        .pvReserved54      = (void*) (0UL),          /* 54 Reserved */\r
+        .pvReserved55      = (void*) (0UL),          /* 55 Reserved */\r
+        .pfnAES_Handler    = (void*) AES_Handler,    /* 56 AES */\r
+        .pfnTRNG_Handler   = (void*) TRNG_Handler,   /* 57 True Random Generator */\r
+        .pfnXDMAC_Handler  = (void*) XDMAC_Handler,  /* 58 DMA */\r
+        .pfnISI_Handler    = (void*) ISI_Handler,    /* 59 Camera Interface */\r
+        .pfnPWM1_Handler   = (void*) PWM1_Handler,   /* 60 Pulse Width Modulation 1 */\r
+        .pvReserved61      = (void*) (0UL),          /* 61 Reserved */\r
+#ifdef _SAME70_SDRAMC_INSTANCE_\r
+        .pfnSDRAMC_Handler = (void*) SDRAMC_Handler, /* 62 SDRAM Controller */\r
+#else\r
+        .pvReserved62      = (void*) (0UL),          /* 62 Reserved */\r
+#endif /* _SAME70_SDRAMC_INSTANCE_ */\r
+        .pfnRSWDT_Handler  = (void*) RSWDT_Handler   /* 63 Reinforced Secure Watchdog Timer */\r
+};\r
+\r
+/**\r
+ * \brief This is the code that gets called on processor reset.\r
+ * To initialize the device, and call the main() routine.\r
+ */\r
+void Reset_Handler(void)\r
+{\r
+        uint32_t *pSrc, *pDest;\r
+\r
+        /* Initialize the relocate segment */\r
+        pSrc = &_etext;\r
+        pDest = &_srelocate;\r
+\r
+        if (pSrc != pDest) {\r
+                for (; pDest < &_erelocate;) {\r
+                        *pDest++ = *pSrc++;\r
+                }\r
+        }\r
+\r
+        /* Clear the zero segment */\r
+        for (pDest = &_szero; pDest < &_ezero;) {\r
+                *pDest++ = 0;\r
+        }\r
+\r
+        /* Set the vector table base address */\r
+        pSrc = (uint32_t *) & _sfixed;\r
+        SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);\r
+\r
+#if __FPU_USED\r
+       fpu_enable();\r
+#endif\r
+\r
+        /* Initialize the C library */\r
+        __libc_init_array();\r
+\r
+        /* Branch to main function */\r
+        main();\r
+\r
+        /* Infinite loop */\r
+        while (1);\r
+}\r
+\r
+/**\r
+ * \brief Default interrupt handler for unused IRQs.\r
+ */\r
+void Dummy_Handler(void)\r
+{\r
+        while (1) {\r
+        }\r
+}\r