xref: /third_party/musl/src/thread/riscv64/clone.s
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/musl/src/thread/riscv64/
1570af302Sopenharmony_ci# __clone(func, stack, flags, arg, ptid, tls, ctid)
2570af302Sopenharmony_ci#           a0,    a1,    a2,  a3,   a4,  a5,   a6
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci# syscall(SYS_clone, flags, stack, ptid, tls, ctid)
5570af302Sopenharmony_ci#                a7     a0,    a1,   a2,  a3,   a4
6570af302Sopenharmony_ci
7570af302Sopenharmony_ci.global __clone
8570af302Sopenharmony_ci.type  __clone, %function
9570af302Sopenharmony_ci__clone:
10570af302Sopenharmony_ci	# Save func and arg to stack
11570af302Sopenharmony_ci	addi a1, a1, -16
12570af302Sopenharmony_ci	sd a0, 0(a1)
13570af302Sopenharmony_ci	sd a3, 8(a1)
14570af302Sopenharmony_ci
15570af302Sopenharmony_ci	# Call SYS_clone
16570af302Sopenharmony_ci	mv a0, a2
17570af302Sopenharmony_ci	mv a2, a4
18570af302Sopenharmony_ci	mv a3, a5
19570af302Sopenharmony_ci	mv a4, a6
20570af302Sopenharmony_ci	li a7, 220 # SYS_clone
21570af302Sopenharmony_ci	ecall
22570af302Sopenharmony_ci
23570af302Sopenharmony_ci	beqz a0, 1f
24570af302Sopenharmony_ci	# Parent
25570af302Sopenharmony_ci	ret
26570af302Sopenharmony_ci
27570af302Sopenharmony_ci	# Child
28570af302Sopenharmony_ci1:      ld a1, 0(sp)
29570af302Sopenharmony_ci	ld a0, 8(sp)
30570af302Sopenharmony_ci	jalr a1
31570af302Sopenharmony_ci
32570af302Sopenharmony_ci	# Exit
33570af302Sopenharmony_ci	li a7, 93 # SYS_exit
34570af302Sopenharmony_ci	ecall
35

Indexes created Thu Nov 07 10:32:03 CST 2024