mirror of https://git.musl-libc.org/git/musl
committed by
Rich Felker
4 changed files with 76 additions and 0 deletions
@ -0,0 +1,6 @@ |
|||
.global __set_thread_area |
|||
.type __set_thread_area, %function |
|||
__set_thread_area: |
|||
mv tp, a0 |
|||
li a0, 0 |
|||
ret |
|||
@ -0,0 +1,7 @@ |
|||
.global __unmapself |
|||
.type __unmapself, %function |
|||
__unmapself: |
|||
li a7, 215 # SYS_munmap |
|||
ecall |
|||
li a7, 93 # SYS_exit |
|||
ecall |
|||
@ -0,0 +1,34 @@ |
|||
# __clone(func, stack, flags, arg, ptid, tls, ctid) |
|||
# a0, a1, a2, a3, a4, a5, a6 |
|||
|
|||
# syscall(SYS_clone, flags, stack, ptid, tls, ctid) |
|||
# a7 a0, a1, a2, a3, a4 |
|||
|
|||
.global __clone |
|||
.type __clone, %function |
|||
__clone: |
|||
# Save func and arg to stack |
|||
addi a1, a1, -16 |
|||
sw a0, 0(a1) |
|||
sw a3, 4(a1) |
|||
|
|||
# Call SYS_clone |
|||
mv a0, a2 |
|||
mv a2, a4 |
|||
mv a3, a5 |
|||
mv a4, a6 |
|||
li a7, 220 # SYS_clone |
|||
ecall |
|||
|
|||
beqz a0, 1f |
|||
# Parent |
|||
ret |
|||
|
|||
# Child |
|||
1: lw a1, 0(sp) |
|||
lw a0, 4(sp) |
|||
jalr a1 |
|||
|
|||
# Exit |
|||
li a7, 93 # SYS_exit |
|||
ecall |
|||
@ -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 |
|||
Loading…
Reference in new issue