summaryrefslogtreecommitdiff
path: root/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S
diff options
context:
space:
mode:
Diffstat (limited to 'platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S')
-rw-r--r--platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S321
1 files changed, 321 insertions, 0 deletions
diff --git a/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S b/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S
new file mode 100644
index 0000000..15965bb
--- /dev/null
+++ b/platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.S
@@ -0,0 +1,321 @@
+/* ---------------------------------------------------------------------------------------*/
+/* @file: startup_MCIMX7D_M4.s */
+/* @purpose: CMSIS Cortex-M4 Core Device Startup File */
+/* IMX7D_M4 */
+/* @version: 0.1 */
+/* @date: 2015-04-06 */
+/* @build: b54573 */
+/* ---------------------------------------------------------------------------------------*/
+/* */
+/* Copyright (c) 2015 , Freescale Semiconductor, Inc. */
+/* 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 __StackTop /* Top of Stack */
+ .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 /* SVCall Handler*/
+ .long DebugMon_Handler /* Debug Monitor Handler*/
+ .long 0 /* Reserved*/
+ .long PendSV_Handler /* PendSV Handler*/
+ .long SysTick_Handler /* SysTick Handler*/
+
+ /* External Interrupts*/
+ .long DefaultISR /* 16*/
+ .long DefaultISR /* 17*/
+ .long DefaultISR /* 18*/
+ .long DefaultISR /* 19*/
+ .long DefaultISR /* 20*/
+ .long DefaultISR /* 21*/
+ .long DefaultISR /* 22*/
+ .long DefaultISR /* 23*/
+ .long DefaultISR /* 24*/
+ .long DefaultISR /* 25*/
+ .long WDOG3_Handler /* WDOG3 Handler*/
+ .long SEMA4_Handler /* SEMA4_Handler*/
+ .long DefaultISR /* 28*/
+ .long DefaultISR /* 29*/
+ .long DefaultISR /* 30*/
+ .long DefaultISR /* 31*/
+ .long UART6_Handler /* UART6 Handler*/
+ .long DefaultISR /* 33*/
+ .long DefaultISR /* 34*/
+ .long DefaultISR /* 35*/
+ .long DefaultISR /* 36*/
+ .long DefaultISR /* 37*/
+ .long DefaultISR /* 38*/
+ .long DefaultISR /* 39*/
+ .long DefaultISR /* 40*/
+ .long DefaultISR /* 41*/
+ .long UART1_Handler /* UART1 Handler*/
+ .long UART2_Handler /* UART2 Handler*/
+ .long UART3_Handler /* UART3 Handler*/
+ .long UART4_Handler /* UART4 Handler*/
+ .long UART5_Handler /* UART5 Handler*/
+ .long eCSPI1_Handler /* eCSPI1 Handler*/
+ .long eCSPI2_Handler /* eCSPI2 Handler*/
+ .long eCSPI3_Handler /* eCSPI3 Handler*/
+ .long eCSPI4_Handler /* eCSPI4 Handler*/
+ .long I2C1_Handler /* I2C1 Handler*/
+ .long I2C2_Handler /* I2C2 Handler*/
+ .long I2C3_Handler /* I2C3 Handler*/
+ .long I2C4_Handler /* I2C4 Handler*/
+ .long DefaultISR /* 55*/
+ .long DefaultISR /* 56*/
+ .long DefaultISR /* 57*/
+ .long DefaultISR /* 58*/
+ .long DefaultISR /* 59*/
+ .long DefaultISR /* 60*/
+ .long DefaultISR /* 61*/
+ .long DefaultISR /* 62*/
+ .long DefaultISR /* 63*/
+ .long DefaultISR /* 64*/
+ .long DefaultISR /* 65*/
+ .long DefaultISR /* 66*/
+ .long DefaultISR /* 67*/
+ .long GPT4_Handler /* GPT4 handler*/
+ .long GPT3_Handler /* GPT3 handler*/
+ .long GPT2_Handler /* GPT2 handler*/
+ .long GPT1_Handler /* GPT1 handler*/
+ .long GPIO1_INT7_Handler /* Active HIGH Interrupt from INT7 from GPIO*/
+ .long GPIO1_INT6_Handler /* Active HIGH Interrupt from INT6 from GPIO*/
+ .long GPIO1_INT5_Handler /* Active HIGH Interrupt from INT5 from GPIO*/
+ .long GPIO1_INT4_Handler /* Active HIGH Interrupt from INT4 from GPIO*/
+ .long GPIO1_INT3_Handler /* Active HIGH Interrupt from INT3 from GPIO*/
+ .long GPIO1_INT2_Handler /* Active HIGH Interrupt from INT2 from GPIO*/
+ .long GPIO1_INT1_Handler /* Active HIGH Interrupt from INT1 from GPIO*/
+ .long GPIO1_INT0_Handler /* Active HIGH Interrupt from INT0 from GPIO*/
+ .long GPIO1_INT15_0_Handler /* Combined interrupt indication for GPIO1 signal 0 throughout 15*/
+ .long GPIO1_INT31_16_Handler /* Combined interrupt indication for GPIO1 signal 16 throughout 31*/
+ .long GPIO2_INT15_0_Handler /* Combined interrupt indication for GPIO2 signal 0 throughout 15*/
+ .long GPIO2_INT31_16_Handler /* Combined interrupt indication for GPIO2 signal 16 throughout 31*/
+ .long GPIO3_INT15_0_Handler /* Combined interrupt indication for GPIO3 signal 0 throughout 15*/
+ .long GPIO3_INT31_16_Handler /* Combined interrupt indication for GPIO3 signal 16 throughout 31*/
+ .long GPIO4_INT15_0_Handler /* Combined interrupt indication for GPIO4 signal 0 throughout 15*/
+ .long GPIO4_INT31_16_Handler /* Combined interrupt indication for GPIO4 signal 16 throughout 31*/
+ .long GPIO5_INT15_0_Handler /* Combined interrupt indication for GPIO5 signal 0 throughout 15*/
+ .long GPIO5_INT31_16_Handler /* Combined interrupt indication for GPIO5 signal 16 throughout 31*/
+ .long GPIO6_INT15_0_Handler /* Combined interrupt indication for GPIO6 signal 0 throughout 15*/
+ .long GPIO6_INT31_16_Handler /* Combined interrupt indication for GPIO6 signal 16 throughout 31*/
+ .long GPIO7_INT15_0_Handler /* Combined interrupt indication for GPIO7 signal 0 throughout 15*/
+ .long GPIO7_INT31_16_Handler /* Combined interrupt indication for GPIO7 signal 16 throughout 31*/
+ .long DefaultISR /* 94*/
+ .long DefaultISR /* 95*/
+ .long DefaultISR /* 96*/
+ .long DefaultISR /* 97*/
+ .long DefaultISR /* 98*/
+ .long DefaultISR /* 99*/
+ .long DefaultISR /* 100*/
+ .long DefaultISR /* 101*/
+ .long DefaultISR /* 102*/
+ .long DefaultISR /* 103*/
+ .long DefaultISR /* 104*/
+ .long DefaultISR /* 105*/
+ .long DefaultISR /* 106*/
+ .long DefaultISR /* 107*/
+ .long DefaultISR /* 108*/
+ .long DefaultISR /* 109*/
+ .long DefaultISR /* 110*/
+ .long DefaultISR /* 111*/
+ .long DefaultISR /* 112*/
+ .long MU_Handler /* MU Handler*/
+ .long ADC1_Handler /* ADC1 Handler*/
+ .long ADC2_Handler /* ADC2 Handler*/
+ .long DefaultISR /* 116*/
+ .long DefaultISR /* 117*/
+ .long DefaultISR /* 118*/
+ .long DefaultISR /* 119*/
+ .long DefaultISR /* 120*/
+ .long DefaultISR /* 121*/
+ .long DefaultISR /* 122*/
+ .long DefaultISR /* 123*/
+ .long DefaultISR /* 124*/
+ .long DefaultISR /* 125*/
+ .long FLEXCAN1_Handler /* FLEXCAN1 Handler*/
+ .long FLEXCAN2_Handler /* FLEXCAN2 Handler*/
+ .long DefaultISR /* 128*/
+ .long DefaultISR /* 129*/
+ .long DefaultISR /* 130*/
+ .long DefaultISR /* 131*/
+ .long DefaultISR /* 132*/
+ .long DefaultISR /* 133*/
+ .long DefaultISR /* 134*/
+ .long DefaultISR /* 135*/
+ .long DefaultISR /* 136*/
+ .long DefaultISR /* 137*/
+ .long DefaultISR /* 138*/
+ .long DefaultISR /* 139*/
+ .long DefaultISR /* 140*/
+ .long DefaultISR /* 141*/
+ .long UART7_Handler /* UART7 Handler*/
+ .long DefaultISR /* 143*/
+
+ .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:
+ cpsid i /* Mask interrupts */
+#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 WDOG3_Handler
+ def_irq_handler SEMA4_Handler
+ def_irq_handler UART6_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 eCSPI1_Handler
+ def_irq_handler eCSPI2_Handler
+ def_irq_handler eCSPI3_Handler
+ def_irq_handler eCSPI4_Handler
+ def_irq_handler I2C1_Handler
+ def_irq_handler I2C2_Handler
+ def_irq_handler I2C3_Handler
+ def_irq_handler I2C4_Handler
+ def_irq_handler GPT4_Handler
+ def_irq_handler GPT3_Handler
+ def_irq_handler GPT2_Handler
+ def_irq_handler GPT1_Handler
+ def_irq_handler GPIO1_INT7_Handler
+ def_irq_handler GPIO1_INT6_Handler
+ def_irq_handler GPIO1_INT5_Handler
+ def_irq_handler GPIO1_INT4_Handler
+ def_irq_handler GPIO1_INT3_Handler
+ def_irq_handler GPIO1_INT2_Handler
+ def_irq_handler GPIO1_INT1_Handler
+ def_irq_handler GPIO1_INT0_Handler
+ def_irq_handler GPIO1_INT15_0_Handler
+ def_irq_handler GPIO1_INT31_16_Handler
+ def_irq_handler GPIO2_INT15_0_Handler
+ def_irq_handler GPIO2_INT31_16_Handler
+ def_irq_handler GPIO3_INT15_0_Handler
+ def_irq_handler GPIO3_INT31_16_Handler
+ def_irq_handler GPIO4_INT15_0_Handler
+ def_irq_handler GPIO4_INT31_16_Handler
+ def_irq_handler GPIO5_INT15_0_Handler
+ def_irq_handler GPIO5_INT31_16_Handler
+ def_irq_handler GPIO6_INT15_0_Handler
+ def_irq_handler GPIO6_INT31_16_Handler
+ def_irq_handler GPIO7_INT15_0_Handler
+ def_irq_handler GPIO7_INT31_16_Handler
+ def_irq_handler MU_Handler
+ def_irq_handler ADC1_Handler
+ def_irq_handler ADC2_Handler
+ def_irq_handler FLEXCAN1_Handler
+ def_irq_handler FLEXCAN2_Handler
+ def_irq_handler UART7_Handler
+ .end