| /**************************************************************************//** |
| * @file startup_ARMCM0.s |
| * @brief CMSIS Cortex-M4 Core Device Startup File |
| * for CM0 Device Series |
| * @version V1.05 |
| * @date 25. July 2011 |
| * |
| * @note Version CodeSourcery Sourcery G++ Lite (with CS3) |
| * Copyright (C) 2010-2011 ARM Limited. All rights reserved. |
| * |
| * @par |
| * ARM Limited (ARM) is supplying this software for use with Cortex-M |
| * processor based microcontrollers. This file can be freely distributed |
| * within development tools that are supporting such ARM based processors. |
| * |
| * @par |
| * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED |
| * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. |
| * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR |
| * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. |
| * |
| ******************************************************************************/ |
| /* |
| //-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ |
| */ |
| |
| |
| /* |
| // <h> Stack Configuration |
| // <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> |
| // </h> |
| */ |
| |
| .equ Stack_Size, 0x00000400 |
| .section ".stack", "w" |
| .align 3 |
| .globl __cs3_stack_mem |
| .globl __cs3_stack_size |
| __cs3_stack_mem: |
| .if Stack_Size |
| .space Stack_Size |
| .endif |
| .size __cs3_stack_mem, . - __cs3_stack_mem |
| .set __cs3_stack_size, . - __cs3_stack_mem |
| |
| |
| /* |
| // <h> Heap Configuration |
| // <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> |
| // </h> |
| */ |
| |
| .equ Heap_Size, 0x00000000 |
| |
| .section ".heap", "w" |
| .align 3 |
| .globl __cs3_heap_start |
| .globl __cs3_heap_end |
| __cs3_heap_start: |
| .if Heap_Size |
| .space Heap_Size |
| .endif |
| __cs3_heap_end: |
| |
| |
| /* Vector Table */ |
| |
| .section ".cs3.interrupt_vector" |
| .globl __cs3_interrupt_vector_cortex_m |
| .type __cs3_interrupt_vector_cortex_m, %object |
| |
| __cs3_interrupt_vector_cortex_m: |
| .long __cs3_stack /* Top of Stack */ |
| .long __cs3_reset /* Reset Handler */ |
| .long NMI_Handler /* NMI Handler */ |
| .long HardFault_Handler /* Hard Fault Handler */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long SVC_Handler /* SVCall Handler */ |
| .long 0 /* Reserved */ |
| .long 0 /* Reserved */ |
| .long PendSV_Handler /* PendSV Handler */ |
| .long SysTick_Handler /* SysTick Handler */ |
| |
| /* External Interrupts */ |
| .long DEF_IRQHandler /* 0: Default */ |
| |
| |
| .size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m |
| |
| |
| .thumb |
| |
| |
| /* Reset Handler */ |
| |
| .section .cs3.reset,"x",%progbits |
| .thumb_func |
| .globl __cs3_reset_cortex_m |
| .type __cs3_reset_cortex_m, %function |
| __cs3_reset_cortex_m: |
| .fnstart |
| LDR R0, =SystemInit |
| BLX R0 |
| LDR R0,=_start |
| BX R0 |
| .pool |
| .cantunwind |
| .fnend |
| .size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m |
| |
| .section ".text" |
| |
| /* Exception Handlers */ |
| |
| .weak NMI_Handler |
| .type NMI_Handler, %function |
| NMI_Handler: |
| B . |
| .size NMI_Handler, . - NMI_Handler |
| |
| .weak HardFault_Handler |
| .type HardFault_Handler, %function |
| HardFault_Handler: |
| B . |
| .size HardFault_Handler, . - HardFault_Handler |
| |
| .weak SVC_Handler |
| .type SVC_Handler, %function |
| SVC_Handler: |
| B . |
| .size SVC_Handler, . - SVC_Handler |
| |
| .weak PendSV_Handler |
| .type PendSV_Handler, %function |
| PendSV_Handler: |
| B . |
| .size PendSV_Handler, . - PendSV_Handler |
| |
| .weak SysTick_Handler |
| .type SysTick_Handler, %function |
| SysTick_Handler: |
| B . |
| .size SysTick_Handler, . - SysTick_Handler |
| |
| |
| /* IRQ Handlers */ |
| |
| .globl Default_Handler |
| .type Default_Handler, %function |
| Default_Handler: |
| B . |
| .size Default_Handler, . - Default_Handler |
| |
| .macro IRQ handler |
| .weak \handler |
| .set \handler, Default_Handler |
| .endm |
| |
| IRQ DEF_IRQHandler |
| |
| .end |