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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
.include "asm/macros.inc"
.include "global.inc"
.section .dtcm
.balign 16, 0
.global OS_IRQTable
OS_IRQTable: ; 027E0000 ;10b6a0
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OSi_IrqTimer0
.word OSi_IrqTimer1
.word OSi_IrqTimer2
.word OSi_IrqTimer3
.word OS_IrqDummy
.word OSi_IrqDma0
.word OSi_IrqDma1
.word OSi_IrqDma2
.word OSi_IrqDma3
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.word OS_IrqDummy
.section .text
arm_func_start OSi_IrqTimer3
OSi_IrqTimer3: ; 0x020C9C8C
ldr ip, _020C9C98 ; =OSi_IrqCallback
mov r0, #0x7
bx r12
.balign 4
_020C9C98: .word OSi_IrqCallback
arm_func_start OSi_IrqTimer2
OSi_IrqTimer2: ; 0x020C9C9C
ldr ip, _020C9CA8 ; =OSi_IrqCallback
mov r0, #0x6
bx r12
.balign 4
_020C9CA8: .word OSi_IrqCallback
arm_func_start OSi_IrqTimer1
OSi_IrqTimer1: ; 0x020C9CAC
ldr ip, _020C9CB8 ; =OSi_IrqCallback
mov r0, #0x5
bx r12
.balign 4
_020C9CB8: .word OSi_IrqCallback
arm_func_start OSi_IrqTimer0
OSi_IrqTimer0: ; 0x020C9CBC
ldr ip, _020C9CC8 ; =OSi_IrqCallback
mov r0, #0x4
bx r12
.balign 4
_020C9CC8: .word OSi_IrqCallback
arm_func_start OSi_IrqDma3
OSi_IrqDma3: ; 0x020C9CCC
ldr ip, _020C9CD8 ; =OSi_IrqCallback
mov r0, #0x3
bx r12
.balign 4
_020C9CD8: .word OSi_IrqCallback
arm_func_start OSi_IrqDma2
OSi_IrqDma2: ; 0x020C9CDC
ldr ip, _020C9CE8 ; =OSi_IrqCallback
mov r0, #0x2
bx r12
.balign 4
_020C9CE8: .word OSi_IrqCallback
arm_func_start OSi_IrqDma1
OSi_IrqDma1: ; 0x020C9CEC
ldr ip, _020C9CF8 ; =OSi_IrqCallback
mov r0, #0x1
bx r12
.balign 4
_020C9CF8: .word OSi_IrqCallback
arm_func_start OSi_IrqDma0
OSi_IrqDma0: ; 0x020C9CFC
ldr ip, _020C9D08 ; =OSi_IrqCallback
mov r0, #0x0
bx r12
.balign 4
_020C9D08: .word OSi_IrqCallback
arm_func_start OSi_IrqCallback
OSi_IrqCallback: ; 0x020C9D0C
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
mov r1, #0xc
mul r4, r0, r1
ldr r2, _020C9D94 ; =OSi_IrqCallbackInfo
ldr r3, _020C9D98 ; =0x02106818
mov r0, r0, lsl #0x1
ldr r1, [r2, r4]
ldrh r3, [r3, r0]
mov r5, #0x1
mov r0, #0x0
str r0, [r2, r4]
cmp r1, #0x0
mov r5, r5, lsl r3
beq _020C9D54
ldr r0, _020C9D9C ; =0x021D3424
ldr r0, [r0, r4]
blx r1
_020C9D54:
ldr r0, _020C9DA0 ; =0x027E0000
ldr r1, _020C9DA4 ; =0x021D3420
add r0, r0, #0x3000
ldr r2, [r0, #0xff8]
orr r2, r2, r5
str r2, [r0, #0xff8]
ldr r0, [r1, r4]
cmp r0, #0x0
addne sp, sp, #0x4
ldmneia sp!, {r4-r5,lr}
bxne lr
mov r0, r5
bl OS_DisableIrqMask
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
.balign 4
_020C9D94: .word OSi_IrqCallbackInfo
_020C9D98: .word OSi_IrqCallbackInfoIndex
_020C9D9C: .word OSi_IrqCallbackInfo + 8
_020C9DA0: .word SDK_AUTOLOAD_DTCM_START
_020C9DA4: .word OSi_IrqCallbackInfo + 4
arm_func_start OS_IrqDummy
OS_IrqDummy: ; 0x020C9DA8
bx lr
|