diff options
author | Stefan O'Rear <sorear@fastmail.com> | 2020-09-03 05:56:46 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2024-02-29 16:36:55 -0500 |
commit | b28c44de8c3131b45588f61569b1711c987ba1c3 (patch) | |
tree | 7d96859d2728bdf84695978b22c53e6563c896c8 /src/thread/riscv32/syscall_cp.s | |
parent | c34a8eedff904b7f3d8479bbec0be534e7a01fbb (diff) | |
download | musl-b28c44de8c3131b45588f61569b1711c987ba1c3.tar.gz |
riscv32: add thread support
Identical to riscv64 except for stack offsets in clone.
Diffstat (limited to 'src/thread/riscv32/syscall_cp.s')
-rw-r--r-- | src/thread/riscv32/syscall_cp.s | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/thread/riscv32/syscall_cp.s b/src/thread/riscv32/syscall_cp.s new file mode 100644 index 00000000..079d1ba0 --- /dev/null +++ b/src/thread/riscv32/syscall_cp.s @@ -0,0 +1,29 @@ +.global __cp_begin +.hidden __cp_begin +.global __cp_end +.hidden __cp_end +.global __cp_cancel +.hidden __cp_cancel +.hidden __cancel +.global __syscall_cp_asm +.hidden __syscall_cp_asm +.type __syscall_cp_asm, %function +__syscall_cp_asm: +__cp_begin: + lw t0, 0(a0) + bnez t0, __cp_cancel + + mv t0, a1 + mv a0, a2 + mv a1, a3 + mv a2, a4 + mv a3, a5 + mv a4, a6 + mv a5, a7 + lw a6, 0(sp) + mv a7, t0 + ecall +__cp_end: + ret +__cp_cancel: + tail __cancel |