Skip to content

Commit 06ad67d

Browse files
authored
[rv]信号处理进入用户态前恢复gp (RT-Thread#9072)
* [rv/virt/stackframe.h]添加GP寄存器保存偏移量宏 * 【rv/c906/stackframe.h]定义GP寄存器存储偏移量 * [rv]信号处理切换到用户态前恢复gp
1 parent af5bd68 commit 06ad67d

File tree

3 files changed

+5
-0
lines changed

3 files changed

+5
-0
lines changed

components/lwp/arch/risc-v/rv64/lwp_gcc.S

+3
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ arch_thread_signal_enter:
174174
/* dummy a2 */
175175
mv a2, a1
176176

177+
/* restore user GP */
178+
LOAD gp, FRAME_OFF_GP(s3)
179+
177180
/**
178181
* handler(signo, psi, ucontext);
179182
*/

libcpu/risc-v/t-head/c906/stackframe.h

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#define BYTES(idx) ((idx) * REGBYTES)
1717
#define FRAME_OFF_SSTATUS BYTES(2)
1818
#define FRAME_OFF_SP BYTES(32)
19+
#define FRAME_OFF_GP BYTES(3)
1920

2021
#include "cpuport.h"
2122
#include "encoding.h"

libcpu/risc-v/virt64/stackframe.h

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#define BYTES(idx) ((idx) * REGBYTES)
2222
#define FRAME_OFF_SSTATUS BYTES(2)
2323
#define FRAME_OFF_SP BYTES(32)
24+
#define FRAME_OFF_GP BYTES(3)
2425

2526
#ifdef __ASSEMBLY__
2627

0 commit comments

Comments
 (0)