summaryrefslogtreecommitdiff
path: root/nuttx/arch/sim/src/up_stackframe.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/sim/src/up_stackframe.c')
-rw-r--r--nuttx/arch/sim/src/up_stackframe.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/nuttx/arch/sim/src/up_stackframe.c b/nuttx/arch/sim/src/up_stackframe.c
index f634005cb..3fc481fca 100644
--- a/nuttx/arch/sim/src/up_stackframe.c
+++ b/nuttx/arch/sim/src/up_stackframe.c
@@ -45,6 +45,7 @@
#include <debug.h>
#include <nuttx/arch.h>
+#include <arch/irq.h>
#include "up_internal.h"
@@ -129,5 +130,11 @@ FAR void *up_stack_frame(FAR struct tcb_s *tcb, size_t frame_size)
tcb->adj_stack_ptr = (FAR void *)topaddr;
tcb->adj_stack_size -= frame_size;
+ /* Reset the initial state */
+
+ tcb->xcp.regs[JB_SP] = (uint32_t)tcb->adj_stack_ptr;
+
+ /* And return a pointer to the allocated memory */
+
return (FAR void *)(topaddr + sizeof(uint32_t));
}