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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| | .text
.global __cp2_begin
.hidden __cp2_begin
.global __cp2_end
.hidden __cp2_end
.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:
mova 1f, r0
mov.l 1f, r2
add r0, r2
mov.l @r1, r2
tst r2, r2
! setup syscall args
mov r4, r2
mov r5, r3
mov r6, r4
mov r7, r5
mov.l @r15, r6
mov.l @(4,r15), r7
mov.l @(8,r15), r0
mov.l @(12,r15), r1
bt __cp_begin
bra __cp2_begin
nop
.align 2
.hidden __sh2_abi
1: .long __sh2_abi@PCREL
2:
__cp2_begin:
mov.l @r2, r2
tst r2, r2
bt 2f
mov.l 1f, r0
.align 2
braf r0
nop
1: .long __cancel@PCREL
2: trapa #38
__cp2_end:
rts
nop
__cp_begin:
mov.l @r2, r2
tst r2, r2
bt 2f
mov.l 1f, r0
.align 2
braf r0
nop
1: .long __cancel@PCREL
2: trapa #22
__cp_end:
! work around hardware bug
or r0, r0
or r0, r0
or r0, r0
or r0, r0
or r0, r0
rts
nop
|