summaryrefslogtreecommitdiff
path: root/libcpu/aarch64/common/stack.c
diff options
context:
space:
mode:
authorGUI <[email protected]>2023-07-15 15:21:23 +0800
committerGitHub <[email protected]>2023-07-15 15:21:23 +0800
commitb424169e1742c1b19d039f9871dd3c672ea7b729 (patch)
tree28c70f79ec67a9810e284030afb5b00dc5c3b258 /libcpu/aarch64/common/stack.c
parent2741bec8f714564bf5c394febb140484371ac275 (diff)
AArch64: fixup fpu storage's size in stack and append Q16 ~ Q31 (#7815)
Signed-off-by: GuEe-GUI <[email protected]>
Diffstat (limited to 'libcpu/aarch64/common/stack.c')
-rw-r--r--libcpu/aarch64/common/stack.c41
1 files changed, 8 insertions, 33 deletions
diff --git a/libcpu/aarch64/common/stack.c b/libcpu/aarch64/common/stack.c
index acb07dba6e..18d6271a79 100644
--- a/libcpu/aarch64/common/stack.c
+++ b/libcpu/aarch64/common/stack.c
@@ -1,11 +1,12 @@
/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
+ * Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-05-12 RT-Thread init
+ * 2023-07-13 GuEe-GUI append fpu: Q16 ~ Q31
*/
#include <board.h>
#include <rtthread.h>
@@ -32,38 +33,12 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter,
stk = (rt_ubase_t *)stack_addr;
- *(--stk) = (rt_ubase_t)0; /* Q0 */
- *(--stk) = (rt_ubase_t)0; /* Q0 */
- *(--stk) = (rt_ubase_t)0; /* Q1 */
- *(--stk) = (rt_ubase_t)0; /* Q1 */
- *(--stk) = (rt_ubase_t)0; /* Q2 */
- *(--stk) = (rt_ubase_t)0; /* Q2 */
- *(--stk) = (rt_ubase_t)0; /* Q3 */
- *(--stk) = (rt_ubase_t)0; /* Q3 */
- *(--stk) = (rt_ubase_t)0; /* Q4 */
- *(--stk) = (rt_ubase_t)0; /* Q4 */
- *(--stk) = (rt_ubase_t)0; /* Q5 */
- *(--stk) = (rt_ubase_t)0; /* Q5 */
- *(--stk) = (rt_ubase_t)0; /* Q6 */
- *(--stk) = (rt_ubase_t)0; /* Q6 */
- *(--stk) = (rt_ubase_t)0; /* Q7 */
- *(--stk) = (rt_ubase_t)0; /* Q7 */
- *(--stk) = (rt_ubase_t)0; /* Q8 */
- *(--stk) = (rt_ubase_t)0; /* Q8 */
- *(--stk) = (rt_ubase_t)0; /* Q9 */
- *(--stk) = (rt_ubase_t)0; /* Q9 */
- *(--stk) = (rt_ubase_t)0; /* Q10 */
- *(--stk) = (rt_ubase_t)0; /* Q10 */
- *(--stk) = (rt_ubase_t)0; /* Q11 */
- *(--stk) = (rt_ubase_t)0; /* Q11 */
- *(--stk) = (rt_ubase_t)0; /* Q12 */
- *(--stk) = (rt_ubase_t)0; /* Q12 */
- *(--stk) = (rt_ubase_t)0; /* Q13 */
- *(--stk) = (rt_ubase_t)0; /* Q13 */
- *(--stk) = (rt_ubase_t)0; /* Q14 */
- *(--stk) = (rt_ubase_t)0; /* Q14 */
- *(--stk) = (rt_ubase_t)0; /* Q15 */
- *(--stk) = (rt_ubase_t)0; /* Q15 */
+ for (int i = 0; i < 32; ++i)
+ {
+ stk -= sizeof(rt_uint128_t) / sizeof(rt_ubase_t);
+
+ *(rt_uint128_t *)stk = (rt_uint128_t) { 0 };
+ }
*(--stk) = (rt_ubase_t)0; /* X1 */
*(--stk) = (rt_ubase_t)parameter; /* X0 */