You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.4 KiB
83 lines
2.4 KiB
/*
|
|
* Copyright (c) 2006-2022, RT-Thread Development Team
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Change Logs:
|
|
* Date Author Notes
|
|
* 2010-12-21 onelife Initial creation for EFM32
|
|
* 2011-07-06 onelife Modify to make use the start code in libraries
|
|
* 2012-05-15 onelife Modified to compatible with CMSIS v3
|
|
*/
|
|
|
|
/***************************************************************************//**
|
|
* @addtogroup cortex-m3
|
|
* @{
|
|
*******************************************************************************/
|
|
.syntax unified
|
|
.cpu cortex-m3
|
|
.fpu softvfp
|
|
.thumb
|
|
|
|
/* start address for the initialization values of the .data section.
|
|
defined in linker script */
|
|
.word __etext
|
|
/* start address for the .data section. defined in linker script */
|
|
.word __data_start__
|
|
/* end address for the .data section. defined in linker script */
|
|
.word __data_end__
|
|
/* start address for the .bss section. defined in linker script */
|
|
.word __bss_start__
|
|
/* end address for the .bss section. defined in linker script */
|
|
.word __bss_end__
|
|
|
|
/***************************************************************************//**
|
|
* @brief This is the code that gets called when the processor first
|
|
* starts execution following a reset event. Only the absolutely
|
|
* necessary set is performed, after which the application
|
|
* supplied main() routine is called.
|
|
* @param None
|
|
* @retval None
|
|
*******************************************************************************/
|
|
.thumb
|
|
.thumb_func
|
|
.section .cs3.init,"ax", %progbits
|
|
.globl _start
|
|
.type _start, %function
|
|
_start:
|
|
/* Copy the data segment initializers from flash to SRAM */
|
|
movs r1, #0
|
|
b LoopCopyDataInit
|
|
|
|
CopyDataInit:
|
|
ldr r3, =__etext
|
|
ldr r3, [r3, r1]
|
|
str r3, [r0, r1]
|
|
adds r1, r1, #4
|
|
|
|
LoopCopyDataInit:
|
|
ldr r0, =__data_start__
|
|
ldr r3, =__data_end__
|
|
adds r2, r0, r1
|
|
cmp r2, r3
|
|
bcc CopyDataInit
|
|
ldr r2, =__bss_start__
|
|
b LoopFillZerobss
|
|
|
|
/* Zero fill the bss segment. */
|
|
FillZerobss:
|
|
movs r3, #0
|
|
str r3, [r2], #4
|
|
|
|
LoopFillZerobss:
|
|
ldr r3, = __bss_end__
|
|
cmp r2, r3
|
|
bcc FillZerobss
|
|
/* Call the application's entry point.*/
|
|
bl main
|
|
bx lr
|
|
.size _start, .-_start
|
|
|
|
/***************************************************************************//**
|
|
* @}
|
|
*******************************************************************************/
|
|
|