1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
// __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z)
// r0 r1 r2 r3 r4 r5 stack stack
// syscall(nr, u, v, w, x, y, z)
// r6 r0 r1 r2 r3 r4 r5
.text
.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:
r0 = memw(r0+#0)
{
p0 = cmp.eq(r0, #0); if (!p0.new) jump:nt __cancel
}
{ r6 = r1
r1:0 = combine(r3, r2)
r3:2 = combine(r5, r4) }
{ r4 = memw(r29+#0)
r5 = memw(r29+#4) }
trap0(#1)
__cp_end:
jumpr r31
.size __syscall_cp_asm, .-__syscall_cp_asm
__cp_cancel:
jump __cancel
.size __cp_cancel, .-__cp_cancel
|