syscall_cp.s raw
1 .text
2 .global __cp_begin
3 .hidden __cp_begin
4 .global __cp_end
5 .hidden __cp_end
6 .global __cp_cancel
7 .hidden __cp_cancel
8 .hidden __cancel
9 .global __syscall_cp_asm
10 .hidden __syscall_cp_asm
11 .type __syscall_cp_asm, @function
12 __syscall_cp_asm:
13
14 __cp_begin:
15 mov.l @r4, r4
16 tst r4, r4
17 bf __cp_cancel
18 mov r5, r3
19 mov r6, r4
20 mov r7, r5
21 mov.l @r15, r6
22 mov.l @(4,r15), r7
23 mov.l @(8,r15), r0
24 mov.l @(12,r15), r1
25 trapa #31
26
27 __cp_end:
28 ! work around hardware bug
29 or r0, r0
30 or r0, r0
31 or r0, r0
32 or r0, r0
33 or r0, r0
34
35 rts
36 nop
37
38 __cp_cancel:
39 mov.l 2f, r0
40 braf r0
41 nop
42 1:
43
44 .align 2
45 2: .long __cancel@PCREL-(1b-.)
46