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
|
.include "asm/macros.inc"
.include "global.inc"
.section .bss
.global _0380912C
_0380912C: ;0x0380912C
.space 0x03809140 - 0x0380912C
.global cardi_common
cardi_common: ;0x03809140
.space 0x03809188 - 0x03809140
.global _03809188
_03809188: ;0x03809188
.space 0x03809760 - 0x03809188
.global _03809760
_03809760: ;0x03809760
.space 0x03809764 - 0x03809760
.section .text
arm_func_start CARD_GetRomHeader
CARD_GetRomHeader: ; 0x037FFF20
ldr r0, _037FFF28 ; =0x027FFA80
bx lr
_037FFF28: .word 0x027FFA80
arm_func_start CARD_SetThreadPriority
CARD_SetThreadPriority: ; 0x037FFF2C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
ldr r6, _037FFF70 ; =cardi_common
bl OS_DisableInterrupts
mov r4, r0
ldr r5, [r6, #240] ; 0xf0
str r7, [r6, #240] ; 0xf0
add r0, r6, #72 ; 0x48
ldr r1, [r6, #240] ; 0xf0
bl OS_SetThreadPriority
mov r0, r4
bl OS_RestoreInterrupts
mov r0, r5
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
_037FFF70: .word cardi_common
arm_func_start CARD_Enable
CARD_Enable: ; 0x037FFF74
ldr r1, _037FFF80 ; =_0380912C
str r0, [r1]
bx lr
_037FFF80: .word _0380912C
arm_func_start CARDi_InitCommon
CARDi_InitCommon: ; 0x037FFF84
stmfd sp!, {lr}
sub sp, sp, #12
mvn r1, #2
ldr r0, _0380001C ; =cardi_common
str r1, [r0, #12]
mov r2, #0
str r2, [r0, #16]
str r2, [r0, #28]
str r2, [r0]
str r2, [r0, #8]
str r2, [r0, #24]
str r2, [r0, #20]
str r2, [r0, #248] ; 0xf8
str r2, [r0, #244] ; 0xf4
mov r1, #4
str r1, [r0, #240] ; 0xf0
mov r1, #1024 ; 0x400
str r1, [sp]
ldr r0, [r0, #240] ; 0xf0
str r0, [sp, #4]
ldr r0, _03800020 ; =_03809188
ldr r1, _03800024 ; =CARDi_TaskThread
ldr r3, _03800028 ; =_03809760
bl OS_CreateThread
ldr r0, _03800020 ; =_03809188
bl OS_WakeupThreadDirect
mov r0, #11
ldr r1, _0380002C ; =CARDi_OnFifoRecv
bl PXI_SetFifoRecvCallback
ldr r0, _03800030 ; =0x027FFC40
ldrh r0, [r0]
_03800000:
cmp r0, #2
beq _03800010
mov r0, #1
bl CARD_Enable
_03800010:
add sp, sp, #12
ldmia sp!, {lr}
bx lr
_0380001C: .word cardi_common
_03800020: .word _03809188
_03800024: .word CARDi_TaskThread
_03800028: .word _03809760
_0380002C: .word CARDi_OnFifoRecv
_03800030: .word 0x027FFC40
|