summaryrefslogtreecommitdiff
path: root/platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S
diff options
context:
space:
mode:
Diffstat (limited to 'platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S')
-rw-r--r--platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S338
1 files changed, 338 insertions, 0 deletions
diff --git a/platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S b/platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S
new file mode 100644
index 0000000..cce90ad
--- /dev/null
+++ b/platform/devices/VF6XX/startup/gcc/startup_VF6XX_M4.S
@@ -0,0 +1,338 @@
+/* ---------------------------------------------------------------------------------------*/
+/* @file: startup_VF6XX_M4.s */
+/* @purpose: CMSIS Cortex-M4 Core Device Startup File */
+/* VF6XX_M4 */
+/* ---------------------------------------------------------------------------------------*/
+/* */
+/* Copyright (c) 2015, Freescale Semiconductor, Inc. */
+/* Copyright (c) 2016, Toradex AG */
+/* All rights reserved. */
+/* */
+/* Redistribution and use in source and binary forms, with or without modification, */
+/* are permitted provided that the following conditions are met: */
+/* */
+/* o Redistributions of source code must retain the above copyright notice, this list */
+/* of conditions and the following disclaimer. */
+/* */
+/* o Redistributions in binary form must reproduce the above copyright notice, this */
+/* list of conditions and the following disclaimer in the documentation and/or */
+/* other materials provided with the distribution. */
+/* */
+/* o Neither the name of Freescale Semiconductor, Inc. nor the names of its */
+/* contributors may be used to endorse or promote products derived from this */
+/* software without specific prior written permission. */
+/* */
+/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
+/* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
+/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
+/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
+/* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
+/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
+/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
+/* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
+/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
+/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+/*****************************************************************************/
+/* Version: GCC for ARM Embedded Processors */
+/*****************************************************************************/
+
+ .word __etext
+ .word __data_start__
+ .word __data_end__
+ .word __bss_end__
+
+
+ .syntax unified
+ .arch armv7-m
+
+ .section .isr_vector, "a"
+ .align 2
+ .globl __isr_vector
+__isr_vector:
+ .long __stack /* Initial Stack pointer */
+ .long Reset_Handler /* Reset Handler */
+ .long NMI_Handler /* NMI Handler */
+ .long HardFault_Handler /* Hard Fault Handler */
+ .long MemManage_Handler /* MPU Fault Handler */
+ .long BusFault_Handler /* Bus Fault Handler */
+ .long UsageFault_Handler /* Usage Fault Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long SVC_Handler /* SV Call */
+ .long DebugMon_Handler /* Debug Monitor Handler */
+ .long 0 /* Reserved */
+ .long PendSV_Handler /* PendableSrvReq Handler */
+ .long SysTick_Handler /* Sys Tick Handler */
+
+/* External Interrupts */
+ .long CPU2CPUInt0_Handler
+ .long CPU2CPUInt1_Handler
+ .long CPU2CPUInt2_Handler
+ .long CPU2CPUInt3_Handler
+ .long DIRECTED0_SEMA4_Handler
+ .long DIRECTED1_MCM_Handler
+ .long DIRECTED2_Handler
+ .long DIRECTED3_Handler
+ .long DMA0_Handler
+ .long DMA0_ERROR_Handler
+ .long DMA1_Handler
+ .long DMA1_ERROR_Handler
+ .long 0
+ .long 0
+ .long MSCM_ECC0_Handler
+ .long MSCM_ECC1_Handler
+ .long CSU_ALARM_Handler
+ .long 0
+ .long MSCM_ACTZS_Handler
+ .long 0
+ .long WDOG_A5_Handler
+ .long WDOG_M4_Handler
+ .long WDOG_SNVS_Handler
+ .long CP1_BOOT_FAIL_Handler
+ .long QSPI0_Handler
+ .long QSPI1_Handler
+ .long DDRMC_Handler
+ .long SDHC0_Handler
+ .long SDHC1_Handler
+ .long 0
+ .long DCU0_Handler
+ .long DCU1_Handler
+ .long VIU_Handler
+ .long 0
+ .long 0
+ .long RLE_Handler
+ .long SEG_LCD_Handler
+ .long 0
+ .long 0
+ .long PIT_Handler
+ .long LPTIMER0_Handler
+ .long 0
+ .long FLEXTIMER0_Handler
+ .long FLEXTIMER1_Handler
+ .long FLEXTIMER3_Handler
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long USBPHY0_Handler
+ .long USBPHY1_Handler
+ .long 0
+ .long ADC0_Handler
+ .long ADC1_Handler
+ .long DAC0_Handler
+ .long DAC1_Handler
+ .long 0
+ .long FLEXCAN0_Handler
+ .long FLEXCAN1_Handler
+ .long 0
+ .long UART0_Handler
+ .long UART1_Handler
+ .long UART2_Handler
+ .long UART3_Handler
+ .long UART4_Handler
+ .long UART5_Handler
+ .long SPI0_Handler
+ .long SPI1_Handler
+ .long SPI2_Handler
+ .long SPI3_Handler
+ .long I2C0_Handler
+ .long I2C1_Handler
+ .long I2C2_Handler
+ .long I2C3_Handler
+ .long USBC0_Handler
+ .long USBC1_Handler
+ .long 0
+ .long ENET0_Handler
+ .long ENET1_Handler
+ .long ENET0_1588_Handler
+ .long ENET1_1588_Handler
+ .long ENET_SWITCH_Handler
+ .long NFC_Handler
+ .long SAI0_Handler
+ .long SAI1_Handler
+ .long SAI2_Handler
+ .long SAI3_Handler
+ .long ESAI_BIFIFO_Handler
+ .long SPDIF_Handler
+ .long ASRC_Handler
+ .long VREG_Handler
+ .long WKPU0_Handler
+ .long 0
+ .long CCM_FXOSC_Handler
+ .long CCM_Handler
+ .long SRC_Handler
+ .long PDB_Handler
+ .long EWM_Handler
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long GPIO0_Handler
+ .long GPIO1_Handler
+ .long GPIO2_Handler
+ .long GPIO3_Handler
+ .long GPIO4_Handler
+ .size __isr_vector, . - __isr_vector
+
+
+ .text
+ .thumb
+
+/* Reset Handler */
+ .thumb_func
+ .align 2
+ .globl Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ /*
+ * For Vybrid we need to set the stack pointer manually
+ * since the boot ROM has its own stack
+ */
+ ldr sp,=__stack;
+ cpsid i
+#ifndef __NO_SYSTEM_INIT
+ bl SystemInit
+#endif
+ /* data copy */
+ ldr r0,=__DATA_ROM
+ subs r0,r0,#0x1
+ ldr r1,=__data_start__
+ subs r1,r1,#0x1
+ ldr r2,=__data_end__
+ subs r3,r2,r1
+ b Copy_init_data
+ Loop_copy_init_data:
+ adds r1,r1,#0x1
+ adds r0,r0,#0x1
+ ldrb r4,[r0]
+ str r4,[r1]
+
+ Copy_init_data:
+ subs r3,r3,#0x1
+ cmp r3,#0x0
+ bne Loop_copy_init_data
+
+ cpsie i /* Unmask interrupts */
+ bl _start
+ .pool
+ .size Reset_Handler, . - Reset_Handler
+
+ .align 1
+ .thumb_func
+ .weak DefaultISR
+ .type DefaultISR, %function
+DefaultISR:
+ b DefaultISR
+ .size DefaultISR, . - DefaultISR
+
+/* Macro to define default handlers. Default handler
+ * will be weak symbol and just dead loops. They can be
+ * overwritten by other handlers */
+ .macro def_irq_handler handler_name
+ .weak \handler_name
+ .set \handler_name, DefaultISR
+ .endm
+
+/* Exception Handlers */
+ def_irq_handler NMI_Handler
+ def_irq_handler HardFault_Handler
+ def_irq_handler MemManage_Handler
+ def_irq_handler BusFault_Handler
+ def_irq_handler UsageFault_Handler
+ def_irq_handler SVC_Handler
+ def_irq_handler DebugMon_Handler
+ def_irq_handler PendSV_Handler
+ def_irq_handler SysTick_Handler
+ def_irq_handler CPU2CPUInt0_Handler
+ def_irq_handler CPU2CPUInt1_Handler
+ def_irq_handler CPU2CPUInt2_Handler
+ def_irq_handler CPU2CPUInt3_Handler
+ def_irq_handler DIRECTED0_SEMA4_Handler
+ def_irq_handler DIRECTED1_MCM_Handler
+ def_irq_handler DIRECTED2_Handler
+ def_irq_handler DIRECTED3_Handler
+ def_irq_handler DMA0_Handler
+ def_irq_handler DMA0_ERROR_Handler
+ def_irq_handler DMA1_Handler
+ def_irq_handler DMA1_ERROR_Handler
+ def_irq_handler MSCM_ECC0_Handler
+ def_irq_handler MSCM_ECC1_Handler
+ def_irq_handler CSU_ALARM_Handler
+ def_irq_handler MSCM_ACTZS_Handler
+ def_irq_handler WDOG_A5_Handler
+ def_irq_handler WDOG_M4_Handler
+ def_irq_handler WDOG_SNVS_Handler
+ def_irq_handler CP1_BOOT_FAIL_Handler
+ def_irq_handler QSPI0_Handler
+ def_irq_handler QSPI1_Handler
+ def_irq_handler DDRMC_Handler
+ def_irq_handler SDHC0_Handler
+ def_irq_handler SDHC1_Handler
+ def_irq_handler DCU0_Handler
+ def_irq_handler DCU1_Handler
+ def_irq_handler VIU_Handler
+ def_irq_handler RLE_Handler
+ def_irq_handler SEG_LCD_Handler
+ def_irq_handler PIT_Handler
+ def_irq_handler LPTIMER0_Handler
+ def_irq_handler FLEXTIMER0_Handler
+ def_irq_handler FLEXTIMER1_Handler
+ def_irq_handler FLEXTIMER2_Handler
+ def_irq_handler FLEXTIMER3_Handler
+ def_irq_handler USBPHY0_Handler
+ def_irq_handler USBPHY1_Handler
+ def_irq_handler ADC0_Handler
+ def_irq_handler ADC1_Handler
+ def_irq_handler DAC0_Handler
+ def_irq_handler DAC1_Handler
+ def_irq_handler FLEXCAN0_Handler
+ def_irq_handler FLEXCAN1_Handler
+ def_irq_handler UART0_Handler
+ def_irq_handler UART1_Handler
+ def_irq_handler UART2_Handler
+ def_irq_handler UART3_Handler
+ def_irq_handler UART4_Handler
+ def_irq_handler UART5_Handler
+ def_irq_handler SPI0_Handler
+ def_irq_handler SPI1_Handler
+ def_irq_handler SPI2_Handler
+ def_irq_handler SPI3_Handler
+ def_irq_handler I2C0_Handler
+ def_irq_handler I2C1_Handler
+ def_irq_handler I2C2_Handler
+ def_irq_handler I2C3_Handler
+ def_irq_handler USBC0_Handler
+ def_irq_handler USBC1_Handler
+ def_irq_handler ENET0_Handler
+ def_irq_handler ENET1_Handler
+ def_irq_handler ENET0_1588_Handler
+ def_irq_handler ENET1_1588_Handler
+ def_irq_handler ENET_SWITCH_Handler
+ def_irq_handler NFC_Handler
+ def_irq_handler SAI0_Handler
+ def_irq_handler SAI1_Handler
+ def_irq_handler SAI2_Handler
+ def_irq_handler SAI3_Handler
+ def_irq_handler ESAI_BIFIFO_Handler
+ def_irq_handler SPDIF_Handler
+ def_irq_handler ASRC_Handler
+ def_irq_handler VREG_Handler
+ def_irq_handler WKPU0_Handler
+ def_irq_handler CCM_FXOSC_Handler
+ def_irq_handler CCM_Handler
+ def_irq_handler SRC_Handler
+ def_irq_handler PDB_Handler
+ def_irq_handler EWM_Handler
+ def_irq_handler GPIO0_Handler
+ def_irq_handler GPIO1_Handler
+ def_irq_handler GPIO2_Handler
+ def_irq_handler GPIO3_Handler
+ def_irq_handler GPIO4_Handler
+ .end