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
36
37
38
| | # __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z)
# a2 a3 a4 a5 a6 a7 [sp] [sp+4]
# syscall(nr, u, v, w, x, y, z)
# a2 a6 a3 a4 a5 a8 a9
.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
.align 4
#if defined(__XTENSA_CALL0_ABI__)
__syscall_cp_asm:
__cp_begin:
l32i a2, a2, 0
bnez a2, __cp_cancel
mov a2, a4
mov a4, a6
mov a6, a2
mov a2, a3
mov a3, a5
mov a5, a7
l32i a8, a1, 0
l32i a9, a1, 4
syscall
__cp_end:
ret
__cp_cancel:
j __cancel
#else
#error Unsupported Xtensa ABI
#endif
|