From d35b3554633cb338e9209d71f56fc62f68462c33 Mon Sep 17 00:00:00 2001 From: Alexander Fedotov Date: Wed, 23 Jan 2019 13:33:14 +0300 Subject: [PATCH] Initialize Stack Pointer by default value in semihosting case and then override if optional value is passed --- libgloss/arm/crt0.S | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S index 48f3d6b1d..c8fea5251 100644 --- a/libgloss/arm/crt0.S +++ b/libgloss/arm/crt0.S @@ -148,11 +148,15 @@ to skip setting sp/sl to 0 here. - Considering M-profile processors, We might want to initialize sp by the first entry of vector table and return 0 to SYS_HEAPINFO - semihosting call, which will be skipped here. */ + semihosting call, which will be skipped here. + - Considering R-profile processors there is no automatic SP init by hardware + so we need to initialize it by default value. */ + ldr r3, .Lstack cmp r1, #0 beq .LC26 - mov sp, r1 + mov r3, r1 .LC26: + mov sp, r3 cmp r2, #0 beq .LC27 /* allow slop for stack overflow handling and small frames */ -- 2.20.1.windows.1