diff options
Diffstat (limited to '')
-rw-r--r-- | libc-top-half/musl/src/thread/aarch64/syscall_cp.s | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libc-top-half/musl/src/thread/aarch64/syscall_cp.s b/libc-top-half/musl/src/thread/aarch64/syscall_cp.s new file mode 100644 index 0000000..41db68a --- /dev/null +++ b/libc-top-half/musl/src/thread/aarch64/syscall_cp.s @@ -0,0 +1,32 @@ +// __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z) +// x0 x1 x2 x3 x4 x5 x6 x7 + +// syscall(nr, u, v, w, x, y, z) +// x8 x0 x1 x2 x3 x4 x5 + +.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: + ldr w0,[x0] + cbnz w0,__cp_cancel + mov x8,x1 + mov x0,x2 + mov x1,x3 + mov x2,x4 + mov x3,x5 + mov x4,x6 + mov x5,x7 + svc 0 +__cp_end: + ret +__cp_cancel: + b __cancel |