superh port
[musl] / src / thread / superh / syscall_cp.s
1 .text
2 .global __syscall_cp_asm
3 .type   __syscall_cp_asm, @function
4 __syscall_cp_asm:
5
6 .global __cp_begin
7 __cp_begin:
8         mov.l @r4, r4
9         tst   r4, r4
10         bt    2f
11
12         mov.l L1, r0
13         braf  r0
14          nop
15 1:
16
17 .align 2
18 L1:     .long __cancel@PLT-(1b-.)
19
20 2:      mov   r5, r3
21         mov   r6, r4
22         mov   r7, r5
23         mov.l @r15, r6
24         mov.l @(4,r15), r7
25         mov.l @(8,r15), r0
26         mov.l @(12,r15), r1
27         trapa #22
28
29 .global __cp_end
30 __cp_end:
31         ! work around hardware bug
32         or   r0, r0
33         or   r0, r0
34         or   r0, r0
35         or   r0, r0
36         or   r0, r0
37
38         rts
39          nop