| /**************************************************************************//** |
| * @file startup_ARMCM0.s |
| * @brief CMSIS Cortex-M0 Core Device Startup File |
| * for CM0 Device Series |
| * @version V1.04 |
| * @date 14. January 2011 |
| *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ |
| * |
| ******************************************************************************/ |
| |
| /*****************************************************************************/ |
| /* Version: CodeSourcery Sourcery G++ Lite (with CS3) */ |
| /*****************************************************************************/ |
| |
| |
| /* |
| // <h> Stack Configuration |
| // <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> |
| // </h> |
| */ |
| |
| .equ Stack_Size, 0x00000100 |
| .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, 0x00001000 |
| |
| .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 |