summaryrefslogtreecommitdiff
path: root/libcpu/arm/cortex-a/stack.c
diff options
context:
space:
mode:
authorHubretXie <[email protected]>2019-04-02 16:07:28 +0800
committerGitHub <[email protected]>2019-04-02 16:07:28 +0800
commitdc2ee97e66d63f408798956ca52398a953a3691a (patch)
tree809490db47a5e764c196a6b91d5f4d3daa108afe /libcpu/arm/cortex-a/stack.c
parent1e16a1ef23135d54b8e8972909b9c64fa815ed9d (diff)
parent762cdcc2721673c643b8864de534336d21ca129e (diff)
Merge pull request #1 from RT-Thread/master
SYNC
Diffstat (limited to 'libcpu/arm/cortex-a/stack.c')
-rw-r--r--libcpu/arm/cortex-a/stack.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libcpu/arm/cortex-a/stack.c b/libcpu/arm/cortex-a/stack.c
index 1d3ebcb9e6..d76b8a428a 100644
--- a/libcpu/arm/cortex-a/stack.c
+++ b/libcpu/arm/cortex-a/stack.c
@@ -50,13 +50,17 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,
*(--stk) = 0xdeadbeef; /* r2 */
*(--stk) = 0xdeadbeef; /* r1 */
*(--stk) = (rt_uint32_t)parameter; /* r0 : argument */
-
/* cpsr */
if ((rt_uint32_t)tentry & 0x01)
*(--stk) = SVCMODE | 0x20; /* thumb mode */
else
*(--stk) = SVCMODE; /* arm mode */
+#ifdef RT_USING_LWP
+ *(--stk) = 0; /* user lr */
+ *(--stk) = 0; /* user sp*/
+#endif
+
/* return task's current stack address */
return (rt_uint8_t *)stk;
}