xref: /aosp_15_r20/external/musl/src/thread/mips64/syscall_cp.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.set	noreorder
2*c9945492SAndroid Build Coastguard Worker.global	__cp_begin
3*c9945492SAndroid Build Coastguard Worker.hidden	__cp_begin
4*c9945492SAndroid Build Coastguard Worker.type	__cp_begin,@function
5*c9945492SAndroid Build Coastguard Worker.global	__cp_end
6*c9945492SAndroid Build Coastguard Worker.hidden	__cp_end
7*c9945492SAndroid Build Coastguard Worker.type	__cp_end,@function
8*c9945492SAndroid Build Coastguard Worker.global	__cp_cancel
9*c9945492SAndroid Build Coastguard Worker.hidden	__cp_cancel
10*c9945492SAndroid Build Coastguard Worker.type	__cp_cancel,@function
11*c9945492SAndroid Build Coastguard Worker.global	__cp_cancel_data
12*c9945492SAndroid Build Coastguard Worker.hidden	__cp_cancel_data
13*c9945492SAndroid Build Coastguard Worker.type	__cp_cancel_data,@function
14*c9945492SAndroid Build Coastguard Worker.hidden	__cancel
15*c9945492SAndroid Build Coastguard Worker.global	__syscall_cp_asm
16*c9945492SAndroid Build Coastguard Worker.hidden	__syscall_cp_asm
17*c9945492SAndroid Build Coastguard Worker.type	__syscall_cp_asm,@function
18*c9945492SAndroid Build Coastguard Worker__syscall_cp_asm:
19*c9945492SAndroid Build Coastguard Worker__cp_begin:
20*c9945492SAndroid Build Coastguard Worker	lw	$4, 0($4)
21*c9945492SAndroid Build Coastguard Worker	bne	$4, $0, __cp_cancel
22*c9945492SAndroid Build Coastguard Worker	move	$2, $5
23*c9945492SAndroid Build Coastguard Worker	move	$4, $6
24*c9945492SAndroid Build Coastguard Worker	move	$5, $7
25*c9945492SAndroid Build Coastguard Worker	move	$6, $8
26*c9945492SAndroid Build Coastguard Worker	move	$7, $9
27*c9945492SAndroid Build Coastguard Worker	move	$8, $10
28*c9945492SAndroid Build Coastguard Worker	move	$9, $11
29*c9945492SAndroid Build Coastguard Worker	ld	$10, 0($sp)
30*c9945492SAndroid Build Coastguard Worker	syscall
31*c9945492SAndroid Build Coastguard Worker__cp_end:
32*c9945492SAndroid Build Coastguard Worker	beq	$7, $0, 1f
33*c9945492SAndroid Build Coastguard Worker	nop
34*c9945492SAndroid Build Coastguard Worker	dsubu	$2, $0, $2
35*c9945492SAndroid Build Coastguard Worker1:	jr	$ra
36*c9945492SAndroid Build Coastguard Worker	nop
37*c9945492SAndroid Build Coastguard Worker
38*c9945492SAndroid Build Coastguard Worker	# if cancellation flag is 1 then call __cancel
39*c9945492SAndroid Build Coastguard Worker__cp_cancel:
40*c9945492SAndroid Build Coastguard Worker	move	$2, $ra
41*c9945492SAndroid Build Coastguard Worker.align 8
42*c9945492SAndroid Build Coastguard Worker	bal	1f
43*c9945492SAndroid Build Coastguard Worker	nop
44*c9945492SAndroid Build Coastguard Worker__cp_cancel_data:
45*c9945492SAndroid Build Coastguard Worker	.gpdword __cp_cancel_data
46*c9945492SAndroid Build Coastguard Worker	.gpdword __cancel
47*c9945492SAndroid Build Coastguard Worker1:	ld	$3, ($ra)
48*c9945492SAndroid Build Coastguard Worker	dsubu	$3, $ra, $3
49*c9945492SAndroid Build Coastguard Worker	ld	$25, 8($ra)
50*c9945492SAndroid Build Coastguard Worker	daddu	$25, $25, $3
51*c9945492SAndroid Build Coastguard Worker	jr	$25
52*c9945492SAndroid Build Coastguard Worker	move	$ra, $2
53