diff options
author | Ian Moffett <ian@osmora.org> | 2024-03-07 17:28:00 -0500 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-03-07 17:28:32 -0500 |
commit | bd5969fc876a10b18613302db7087ef3c40f18e1 (patch) | |
tree | 7c2b8619afe902abf99570df2873fbdf40a4d1a1 /lib/mlibc/sysdeps/linux/aarch64/thread_entry.S | |
parent | a95b38b1b92b172e6cc4e8e56a88a30cc65907b0 (diff) |
lib: Add mlibc
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'lib/mlibc/sysdeps/linux/aarch64/thread_entry.S')
-rw-r--r-- | lib/mlibc/sysdeps/linux/aarch64/thread_entry.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/mlibc/sysdeps/linux/aarch64/thread_entry.S b/lib/mlibc/sysdeps/linux/aarch64/thread_entry.S new file mode 100644 index 0000000..a47a048 --- /dev/null +++ b/lib/mlibc/sysdeps/linux/aarch64/thread_entry.S @@ -0,0 +1,27 @@ +.section .text +.global __mlibc_spawn_thread +.type __mlibc_spawn_thread, "function" +__mlibc_spawn_thread: + // __mlibc_spawn_thread(flags, stack, pid_out, child_tid, tls) + // x0, x1, x2, x3, x4 + // syscall(NR_clone, flags, stack, ptid, tls, ctid) + // x8, x0, x1, x2, x3, x4 + + // Swap x3 <-> x4 + mov x5, x4 + mov x4, x3 + mov x3, x5 + + mov x8, 220 // NR_clone + svc 0 + cbnz x0, .parent + + ldp x0, x1, [sp], #16 + + bl __mlibc_enter_thread + brk #0 + +.parent: + ret +.section .note.GNU-stack,"",%progbits + |