Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>2023-03-03 15:45:40 +0300
committerRichard Earnshaw <rearnsha@arm.com>2023-03-03 16:20:29 +0300
commitb782dcb2b363974da249c94adedd95d218d89bef (patch)
treeadc6af5c8882a0883cd3b309278cfed5fae02c97
parent68db1fa7babf9c9c19b36fa4cf4bb747190c0769 (diff)
arm: Fix the SP used in setting stack limit for standalone application.
Move the instruction that saves SP before the mode check so that applications that start in USER mode correctly set the stack limit.
-rw-r--r--libgloss/arm/crt0.S3
-rw-r--r--newlib/libc/sys/arm/crt0.S3
2 files changed, 2 insertions, 4 deletions
diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S
index 78515180b..79ae1e251 100644
--- a/libgloss/arm/crt0.S
+++ b/libgloss/arm/crt0.S
@@ -149,13 +149,12 @@
#if (__ARM_ARCH_PROFILE != 'M')
/* Following code is compatible for both ARM and Thumb ISA. */
mrs r4, CPSR
+ mov r3, sp /* Save input SP value. */
/* Test mode bits - in User of all are 0. */
tst r4, #(CPSR_M_MASK)
/* "eq" means r4 AND #0x0F is 0. */
beq .Lskip_cpu_modes
- mov r3, sp /* Save input SP value. */
-
/* FIQ mode, interrupts disabled. */
mov r1, #(CPSR_M_FIQ|CPSR_M_32BIT|CPSR_I_MASK|CPSR_F_MASK)
msr CPSR_c, r1
diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S
index 6b01d8a88..121246cfa 100644
--- a/newlib/libc/sys/arm/crt0.S
+++ b/newlib/libc/sys/arm/crt0.S
@@ -149,13 +149,12 @@
#if (__ARM_ARCH_PROFILE != 'M')
/* Following code is compatible for both ARM and Thumb ISA. */
mrs r4, CPSR
+ mov r3, sp /* Save input SP value. */
/* Test mode bits - in User of all are 0. */
tst r4, #(CPSR_M_MASK)
/* "eq" means r4 AND #0x0F is 0. */
beq .Lskip_cpu_modes
- mov r3, sp /* Save input SP value. */
-
/* FIQ mode, interrupts disabled. */
mov r1, #(CPSR_M_FIQ|CPSR_M_32BIT|CPSR_I_MASK|CPSR_F_MASK)
msr CPSR_c, r1