diff --git a/bsp/lm3s8962/Libraries/startup/gcc/start_gcc.S b/bsp/lm3s8962/Libraries/startup/gcc/start_gcc.S index 3a4abbe3c39e08ce2a50f78d663fecd42ece0ee6..53d5471f5c1e2d48dcd2ce4487dfb95ffb9871e6 100644 --- a/bsp/lm3s8962/Libraries/startup/gcc/start_gcc.S +++ b/bsp/lm3s8962/Libraries/startup/gcc/start_gcc.S @@ -1,9 +1,4 @@ -.section .bss.init -.equ Stack_Size, 0x00000200 -.space Stack_Size -Initial_spTop: - - .syntax unified + .syntax unified .cpu cortex-m3 .fpu softvfp .thumb @@ -32,13 +27,13 @@ defined in linker script */ * @retval : None */ - .section .text.Reset_Handler + .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* restore original stack pointer */ - LDR r0, =Initial_spTop - MSR msp, r0 + ldr sp, =_estack /* set stack pointer */ + /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit @@ -98,7 +93,7 @@ Infinite_Loop: g_pfnVectors: - .word Initial_spTop + .word _estack .word Reset_Handler .word Default_Handler //NMI_Handler .word HardFault_Handler diff --git a/bsp/lm3s8962/lm3s_rom.ld b/bsp/lm3s8962/lm3s_rom.ld index 5572ae4186c456afdc362c83fbeca12aac614f5b..d4a2f968d0edfea91a8709172003cf8bbb61a14d 100644 --- a/bsp/lm3s8962/lm3s_rom.ld +++ b/bsp/lm3s8962/lm3s_rom.ld @@ -10,6 +10,7 @@ MEMORY DATA (rw) : ORIGIN = 0x20000000, LENGTH = 0x00010000 } ENTRY(Reset_Handler) +_system_stack_size = 0x200; SECTIONS { @@ -72,6 +73,13 @@ SECTIONS _edata = . ; } >DATA + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + __bss_start = .; .bss : { @@ -85,9 +93,6 @@ SECTIONS . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _ebss = . ; - _estack = .; - - *(.bss.init) } > DATA __bss_end = .; diff --git a/bsp/lm3s9b9x/Libraries/startup/gcc/start_gcc.S b/bsp/lm3s9b9x/Libraries/startup/gcc/start_gcc.S index 3a4abbe3c39e08ce2a50f78d663fecd42ece0ee6..53d5471f5c1e2d48dcd2ce4487dfb95ffb9871e6 100644 --- a/bsp/lm3s9b9x/Libraries/startup/gcc/start_gcc.S +++ b/bsp/lm3s9b9x/Libraries/startup/gcc/start_gcc.S @@ -1,9 +1,4 @@ -.section .bss.init -.equ Stack_Size, 0x00000200 -.space Stack_Size -Initial_spTop: - - .syntax unified + .syntax unified .cpu cortex-m3 .fpu softvfp .thumb @@ -32,13 +27,13 @@ defined in linker script */ * @retval : None */ - .section .text.Reset_Handler + .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* restore original stack pointer */ - LDR r0, =Initial_spTop - MSR msp, r0 + ldr sp, =_estack /* set stack pointer */ + /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit @@ -98,7 +93,7 @@ Infinite_Loop: g_pfnVectors: - .word Initial_spTop + .word _estack .word Reset_Handler .word Default_Handler //NMI_Handler .word HardFault_Handler diff --git a/bsp/lm3s9b9x/lm3s_rom.ld b/bsp/lm3s9b9x/lm3s_rom.ld index 5572ae4186c456afdc362c83fbeca12aac614f5b..d4a2f968d0edfea91a8709172003cf8bbb61a14d 100644 --- a/bsp/lm3s9b9x/lm3s_rom.ld +++ b/bsp/lm3s9b9x/lm3s_rom.ld @@ -10,6 +10,7 @@ MEMORY DATA (rw) : ORIGIN = 0x20000000, LENGTH = 0x00010000 } ENTRY(Reset_Handler) +_system_stack_size = 0x200; SECTIONS { @@ -72,6 +73,13 @@ SECTIONS _edata = . ; } >DATA + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + __bss_start = .; .bss : { @@ -85,9 +93,6 @@ SECTIONS . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _ebss = . ; - _estack = .; - - *(.bss.init) } > DATA __bss_end = .; diff --git a/bsp/mb9bf500r/CMSIS/start_gcc.S b/bsp/mb9bf500r/CMSIS/start_gcc.S index 20a4e131f6a341f75546e7f6119cdbc3ce7d8ae2..b1a93e52bef4ae2ddb19249d94ae0291bfd10c9d 100644 --- a/bsp/mb9bf500r/CMSIS/start_gcc.S +++ b/bsp/mb9bf500r/CMSIS/start_gcc.S @@ -12,12 +12,7 @@ * 2011-07-01 lgnq first version */ -.section .bss.init -.equ Stack_Size, 0x00000200 -.space Stack_Size -Initial_spTop: - - .syntax unified + .syntax unified .cpu cortex-m3 .fpu softvfp .thumb @@ -48,13 +43,13 @@ defined in linker script */ * @retval : None */ - .section .text.Reset_Handler + .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* restore original stack pointer */ - LDR r0, =Initial_spTop - MSR msp, r0 + ldr sp, =_estack /* set stack pointer */ + /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit @@ -107,13 +102,12 @@ Infinite_Loop: * 0x0000.0000. * ******************************************************************************/ - .section .isr_vector,"a",%progbits + .section .isr_vector,"a",%progbits .type g_pfnVectors, %object .size g_pfnVectors, .-g_pfnVectors - - + g_pfnVectors: - .word Initial_spTop + .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler diff --git a/bsp/mb9bf500r/fm3_rom.ld b/bsp/mb9bf500r/fm3_rom.ld index 67f1a973b3982d7697ab4ae503fd184025f62ff0..3d0151d23b405acb70b13aba726604ce3823ca9d 100644 --- a/bsp/mb9bf500r/fm3_rom.ld +++ b/bsp/mb9bf500r/fm3_rom.ld @@ -5,6 +5,7 @@ MEMORY DATA (rw) : ORIGIN = 0x1FFFC000, LENGTH = 0x0000C000 } ENTRY(Reset_Handler) +_system_stack_size = 0x200; SECTIONS { @@ -70,6 +71,13 @@ SECTIONS _edata = . ; } >DATA + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + __bss_start = .; .bss : { @@ -84,9 +92,6 @@ SECTIONS . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _ebss = . ; - _estack = .; - - *(.bss.init) } > DATA __bss_end = .;