mailing list of musl libc
 help / color / mirror / code / Atom feed
3e1e37a47a279bff2c61853d0a44f4d54bf44b3a blob 2024 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
#__clone(func, stack, flags, arg, ptid, tls, ctid)
#         a0,    a1,   a2,    a3,  a4,  a5,   a6
# sys_clone3(struct clone_args *cl_args, size_t size)
#                                 a0             a1

.global    __clone
.hidden __clone
.type    __clone,@function
__clone:
    # Save function pointer and argument pointer on new thread stack
    addi.d    $a1, $a1, -16
    st.d    $a0, $a1, 0    # save function pointer
    st.d    $a3, $a1, 8    # save argument pointer

    li.d    $t0, ~0x004000ff  # mask CSIGNAL and CLONE_DETACHED
    and    $t1, $a2, $t0     # cl_args.flags
    li.d    $t0, 0x000000ff   # CSIGNAL
    and    $t2, $a2, $t0     # cl_args.exit_signal

    bstrins.d $sp, $zero, 3, 0  # align stack to 16 bytes
    addi.d    $sp, $sp, -88   # struct clone_args
    st.d    $t1, $sp, 0     # flags
    st.d    $a4, $sp, 8     # pidfd
    st.d    $a6, $sp, 16    # child_tid
    st.d    $a4, $sp, 24    # parent_tid
    st.d    $t2, $sp, 32    # exit_signal
    st.d    $a1, $sp, 40    # stack
    st.d    $zero, $sp, 48  # stack_size
    st.d    $a5, $sp, 56    # tls
    st.d    $zero, $sp, 64  # set_tid
    st.d    $zero, $sp, 72  # set_tid_size
    st.d    $zero, $sp, 80  # cgroup

    move    $a0, $sp
    li.d    $a1, 88
    li.d    $a7, 435    # __NR_clone3
    syscall 0        # call clone3

    beqz    $a0, 1f        # whether child process
    addi.d    $sp, $sp, 88
    jr    $ra            # parent process return
1:
    ld.d    $t8, $sp, 0     # function pointer
    ld.d    $a0, $sp, 8     # argument pointer
    jirl    $ra, $t8, 0     # call the user's function
    li.d    $a7, 93
    syscall    0        # child process exit
debug log:

solving 86e69cfa ...
found 86e69cfa in https://inbox.vuxu.org/musl/d582f6b8-b3be-503d-3b38-9a41294db63d@loongson.cn/ ||
	https://inbox.vuxu.org/musl/f8e4bbaf-14c1-b79d-de75-d4168da5a5d8@loongson.cn/

applying [1/2] https://inbox.vuxu.org/musl/d582f6b8-b3be-503d-3b38-9a41294db63d@loongson.cn/
index 00000000..86e69cfa

Checking patch src/thread/loongarch64/clone.s...
Applied patch src/thread/loongarch64/clone.s cleanly.

skipping https://inbox.vuxu.org/musl/f8e4bbaf-14c1-b79d-de75-d4168da5a5d8@loongson.cn/ for 86e69cfa
index at:
100644 3e1e37a47a279bff2c61853d0a44f4d54bf44b3a	src/thread/loongarch64/clone.s

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).