summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Walsh <benjamin.walsh@windriver.com>2016-11-23 16:15:52 -0500
committerAnas Nashif <nashif@linux.intel.com>2016-11-24 02:33:59 +0000
commit82804fe1155f137077bddb655b46e5488a41632f (patch)
tree643e30ec4fd5684099c7747794287678e6100e47
parent672dc9cc89a0b550af1d4810f9d6925e45df8a32 (diff)
arm: fix early boot on Cortex-M0 with init stack
The assembler was passed immediate values that are too large for the limited Cortex-M0 thumb assembly. Load values in registers instead of using immediate values. Change-Id: Ib5541c92dea03e0efb1b88ab91eeb408d151a71b Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
-rw-r--r--arch/arm/core/cortex_m/reset.S5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/core/cortex_m/reset.S b/arch/arm/core/cortex_m/reset.S
index 564d0a2c1..e80d7f5f4 100644
--- a/arch/arm/core/cortex_m/reset.S
+++ b/arch/arm/core/cortex_m/reset.S
@@ -81,7 +81,7 @@ SECTION_SUBSEC_FUNC(TEXT,_reset_section,__start)
#ifdef CONFIG_INIT_STACKS
ldr r0, =_interrupt_stack
- mov r1, #0xaa
+ ldr r1, =0xaa
ldr r2, =CONFIG_ISR_STACK_SIZE
bl memset
#endif
@@ -91,7 +91,8 @@ SECTION_SUBSEC_FUNC(TEXT,_reset_section,__start)
* gets set to _interrupt_stack during nanoInit().
*/
ldr r0, =_interrupt_stack
- adds r0, r0, CONFIG_ISR_STACK_SIZE
+ ldr r1, =CONFIG_ISR_STACK_SIZE
+ adds r0, r0, r1
msr PSP, r0
movs.n r0, #2 /* switch to using PSP (bit1 of CONTROL reg) */
msr CONTROL, r0