.section .text
.global __mlibc_do_asm_cp_syscall
.global __mlibc_syscall_begin
.global __mlibc_syscall_end
.type __mlibc_do_asm_cp_syscall, "function"
__mlibc_do_asm_cp_syscall:
	mov x8, x0
	mov x0, x1
	mov x1, x2
	mov x2, x3
	mov x3, x4
	mov x4, x5
	mov x5, x6

	mrs x7, tpidr_el0
	ldr w7, [x7, #-64] // Tcb::cancelBits. See asserts in tcb.hpp.
__mlibc_syscall_begin:
	// tcbCancelEnableBit && tcbCancelTriggerBit
	mov x9, #((1 << 0) | (1 << 2))
	and x7, x7, x9
	cmp x7, x9
	b.eq cancel
	svc 0
__mlibc_syscall_end:
	ret

cancel:
	bl __mlibc_do_cancel
	brk #0
.section .note.GNU-stack,"",%progbits

