| Index: fusl/src/thread/aarch64/syscall_cp.s
|
| diff --git a/fusl/src/thread/aarch64/syscall_cp.s b/fusl/src/thread/aarch64/syscall_cp.s
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..41db68af9588a02f524fdd971ccb1737e5031a68
|
| --- /dev/null
|
| +++ b/fusl/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
|
|
|