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
144
145
146
147
148
149
150
151
152
153
154
155
|
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start OS_ResetRequestIrqMask
OS_ResetRequestIrqMask: ; 0x037F8824
ldr ip, _037F8850 ; =0x04000208
ldrh r3, [ip]
mov r1, #0
strh r1, [ip]
ldr r2, _037F8854 ; =0x04000214
ldr r1, [r2]
str r0, [r2]
ldrh r0, [ip]
strh r3, [ip]
mov r0, r1
bx lr
_037F8850: .word 0x04000208
_037F8854: .word 0x04000214
arm_func_start OS_DisableIrqMask
OS_DisableIrqMask: ; 0x037F8858
ldr ip, _037F888C ; =0x04000208
ldrh r3, [ip]
mov r1, #0
strh r1, [ip]
ldr r2, _037F8890 ; =0x04000210
ldr r1, [r2]
mvn r0, r0
and r0, r1, r0
str r0, [r2]
ldrh r0, [ip]
strh r3, [ip]
mov r0, r1
bx lr
_037F888C: .word 0x04000208
_037F8890: .word 0x04000210
arm_func_start OS_EnableIrqMask
OS_EnableIrqMask: ; 0x037F8894
ldr ip, _037F88C4 ; =0x04000208
ldrh r3, [ip]
mov r1, #0
strh r1, [ip]
ldr r2, _037F88C8 ; =0x04000210
ldr r1, [r2]
orr r0, r1, r0
str r0, [r2]
ldrh r0, [ip]
strh r3, [ip]
mov r0, r1
bx lr
_037F88C4: .word 0x04000208
_037F88C8: .word 0x04000210
arm_func_start OS_SetIrqMask
OS_SetIrqMask: ; 0x037F88CC
ldr ip, _037F88F8 ; =0x04000208
ldrh r3, [ip]
mov r1, #0
strh r1, [ip]
ldr r2, _037F88FC ; =0x04000210
ldr r1, [r2]
str r0, [r2]
ldrh r0, [ip]
strh r3, [ip]
mov r0, r1
bx lr
_037F88F8: .word 0x04000208
_037F88FC: .word 0x04000210
arm_func_start OSi_EnterTimerCallback
OSi_EnterTimerCallback: ; 0x037F8900
stmdb sp!, {r4, lr}
mov r3, #12
mul r4, r0, r3
ldr r3, _037F8940 ; =_03807744
str r1, [r3, r4]
ldr r1, _037F8944 ; =_0380774C
str r2, [r1, r4]
mov r1, #1
add r0, r0, #3
mov r0, r1, lsl r0
bl OS_EnableIrqMask
mov r1, #1
ldr r0, _037F8948 ; =_03807748
str r1, [r0, r4]
ldmia sp!, {r4, lr}
bx lr
_037F8940: .word _03807744
_037F8944: .word _0380774C
_037F8948: .word _03807748
arm_func_start OS_SetIrqFunction
OS_SetIrqFunction: ; 0x037F894C
stmdb sp!, {r4, r5, r6, r7, r8, r9, lr}
sub sp, sp, #4
mov r9, #0
mov r7, r9
ldr lr, _037F89E8 ; =OS_IRQTable
ldr r4, _037F89EC ; =_03807774
ldr r6, _037F89F0 ; =OSi_IrqCallbackInfo
mov ip, r9
mov r3, #1
mov r2, #12
_037F8974:
ands r5, r0, #1
beq _037F89CC
mov r8, r7
cmp r9, #8
blt _037F8998
cmp r9, #11
suble r5, r9, #8
mlale r8, r5, r2, r6
ble _037F89BC
_037F8998:
cmp r9, #3
blt _037F89B0
cmp r9, #6
addle r5, r9, #1
mlale r8, r5, r2, r6
ble _037F89BC
_037F89B0:
cmp r9, #0
moveq r8, r4
strne r1, [lr, r9, lsl #2]
_037F89BC:
cmp r8, #0
strne r1, [r8]
strne ip, [r8, #8]
strne r3, [r8, #4]
_037F89CC:
mov r0, r0, lsr #1
add r9, r9, #1
cmp r9, #25
blt _037F8974
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, r9, lr}
bx lr
_037F89E8: .word OS_IRQTable
_037F89EC: .word _03807774
_037F89F0: .word OSi_IrqCallbackInfo
arm_func_start OS_InitIrqTable
OS_InitIrqTable: ; 0x037F89F4
mov r1, #0
ldr r0, _037F8A10 ; =OSi_IrqThreadQueue
str r1, [r0, #4]
str r1, [r0]
ldr r0, _037F8A14 ; =0x027FFC3C
str r1, [r0]
bx lr
_037F8A10: .word OSi_IrqThreadQueue
_037F8A14: .word 0x027FFC3C
|