summaryrefslogtreecommitdiff
path: root/libcpu/arm/rm48x50/stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcpu/arm/rm48x50/stack.c')
-rw-r--r--libcpu/arm/rm48x50/stack.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libcpu/arm/rm48x50/stack.c b/libcpu/arm/rm48x50/stack.c
index faa39b4c13..a11d8896f9 100644
--- a/libcpu/arm/rm48x50/stack.c
+++ b/libcpu/arm/rm48x50/stack.c
@@ -57,6 +57,22 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,
else
*(--stk) = SVCMODE; /* arm mode */
+#ifdef __TI_VFP_SUPPORT__
+ #define VFP_DATA_NR 32
+ {
+ int i;
+
+ for (i = 0; i < VFP_DATA_NR; i++)
+ {
+ *(--stk) = 0;
+ }
+ /* FPSCR TODO: do we need to set the values other than 0? */
+ *(--stk) = 0;
+ /* FPEXC. Enable the FVP by default. */
+ *(--stk) = 0x40000000;
+ }
+#endif
+
/* return task's current stack address */
return (rt_uint8_t *)stk;
}