[rv]修正signal退出后用户态sp少8的问题 (#9080)

This commit is contained in:
heyuanjie87
2024-06-24 21:36:32 +08:00
committed by GitHub
parent 5e04d8b3c1
commit a5a89c439f
5 changed files with 8 additions and 3 deletions
+2
View File
@@ -44,9 +44,11 @@
li s10, (SSTATUS_SPP)
or s11, s11, s10
PUSH_8 s11
addi sp, sp, -8
.endm
.macro RESTORE_CONTEXT
addi sp, sp, 8
POP_8 s11
csrw sstatus, s11
POP_8 s11
+1
View File
@@ -52,6 +52,7 @@ void *_rt_hw_stack_init(rt_ubase_t *sp, rt_ubase_t ra, rt_ubase_t sstatus)
(*--sp) = 0; /* s10 */
(*--sp) = 0; /* s11 */
(*--sp) = sstatus; /* sstatus */
--sp; /* align to 16bytes */
return (void *)sp;
}
+2 -2
View File
@@ -23,8 +23,8 @@
#error "Not supported XLEN"
#endif
/* 33 general register */
#define CTX_GENERAL_REG_NR 33
/* 33 general register + 1 padding */
#define CTX_GENERAL_REG_NR 34
#ifdef ENABLE_FPU
/* 32 fpu register */
+1
View File
@@ -47,6 +47,7 @@ struct rt_hw_stack_frame
rt_ubase_t t5; /* x30 - t5 - temporary register 5 */
rt_ubase_t t6; /* x31 - t6 - temporary register 6 */
rt_ubase_t user_sp_exc_stack; /* sscratch - user mode sp/exception stack */
rt_ubase_t __padding; /* align to 16bytes */
#ifdef ENABLE_FPU
rt_ubase_t f[CTX_FPU_REG_NR]; /* f0~f31 */
#endif