diff options
author | Stefan O'Rear <sorear@fastmail.com> | 2020-09-03 05:54:44 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2024-02-29 16:36:55 -0500 |
commit | c34a8eedff904b7f3d8479bbec0be534e7a01fbb (patch) | |
tree | a7fe3d205d4ca457dc6947d3360a98ba61d8dcbf /src/signal | |
parent | 11eee89e14ca7ea2ccc02385c3ab7875fb572d46 (diff) | |
download | musl-c34a8eedff904b7f3d8479bbec0be534e7a01fbb.tar.gz musl-c34a8eedff904b7f3d8479bbec0be534e7a01fbb.tar.xz musl-c34a8eedff904b7f3d8479bbec0be534e7a01fbb.zip |
riscv32: add setjmp/longjmp and sigreturn
Largely copied from riscv64 but required recalculation of offsets.
Diffstat (limited to 'src/signal')
-rw-r--r-- | src/signal/riscv32/restore.s | 8 | ||||
-rw-r--r-- | src/signal/riscv32/sigsetjmp.s | 23 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/signal/riscv32/restore.s b/src/signal/riscv32/restore.s new file mode 100644 index 00000000..40012c75 --- /dev/null +++ b/src/signal/riscv32/restore.s @@ -0,0 +1,8 @@ +.global __restore +.type __restore, %function +__restore: +.global __restore_rt +.type __restore_rt, %function +__restore_rt: + li a7, 139 # SYS_rt_sigreturn + ecall diff --git a/src/signal/riscv32/sigsetjmp.s b/src/signal/riscv32/sigsetjmp.s new file mode 100644 index 00000000..c1caeab1 --- /dev/null +++ b/src/signal/riscv32/sigsetjmp.s @@ -0,0 +1,23 @@ +.global sigsetjmp +.global __sigsetjmp +.type sigsetjmp, %function +.type __sigsetjmp, %function +sigsetjmp: +__sigsetjmp: + bnez a1, 1f + tail setjmp +1: + + sw ra, 152(a0) + sw s0, 164(a0) + mv s0, a0 + + call setjmp + + mv a1, a0 + mv a0, s0 + lw s0, 164(a0) + lw ra, 152(a0) + +.hidden __sigsetjmp_tail + tail __sigsetjmp_tail |