mailing list of musl libc
 help / color / mirror / code / Atom feed
ec920c7b360304af4274309e66876a087ff10986 blob 1449 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, 2, 0  # align stack to 8 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
	jirl	$zero, $ra, 0	# 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 ec920c7b ...
found ec920c7b in https://inbox.vuxu.org/musl/61ffb0ce-85fc-49d9-8599-22c2fa2a6ed5@loongson.cn/ ||
	https://inbox.vuxu.org/musl/6d1b87b7-25da-8707-791d-40c4d44e90d2@loongson.cn/ ||
	https://inbox.vuxu.org/musl/86910db7-be22-b09f-991b-cd8b242325a0@loongson.cn/ ||
	https://inbox.vuxu.org/musl/c6c18c0d-7244-2cb2-a99c-a520a88bc704@loongson.cn/

applying [1/4] https://inbox.vuxu.org/musl/61ffb0ce-85fc-49d9-8599-22c2fa2a6ed5@loongson.cn/
diff --git a/src/thread/loongarch64/clone.s b/src/thread/loongarch64/clone.s
new file mode 100644
index 00000000..ec920c7b

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

skipping https://inbox.vuxu.org/musl/6d1b87b7-25da-8707-791d-40c4d44e90d2@loongson.cn/ for ec920c7b
skipping https://inbox.vuxu.org/musl/86910db7-be22-b09f-991b-cd8b242325a0@loongson.cn/ for ec920c7b
skipping https://inbox.vuxu.org/musl/c6c18c0d-7244-2cb2-a99c-a520a88bc704@loongson.cn/ for ec920c7b
index at:
100644 ec920c7b360304af4274309e66876a087ff10986	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).