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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global OSInitMessageQueue
OSInitMessageQueue:
/* 8026EEF8 0026AB58 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8026EEFC 0026AB5C 7C 08 02 A6 */ mflr r0
/* 8026EF00 0026AB60 90 01 00 24 */ stw r0, 0x24(r1)
/* 8026EF04 0026AB64 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8026EF08 0026AB68 7C BF 2B 78 */ mr r31, r5
/* 8026EF0C 0026AB6C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8026EF10 0026AB70 7C 9E 23 78 */ mr r30, r4
/* 8026EF14 0026AB74 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8026EF18 0026AB78 7C 7D 1B 78 */ mr r29, r3
/* 8026EF1C 0026AB7C 48 00 23 CD */ bl OSInitThreadQueue
/* 8026EF20 0026AB80 38 7D 00 08 */ addi r3, r29, 8
/* 8026EF24 0026AB84 48 00 23 C5 */ bl OSInitThreadQueue
/* 8026EF28 0026AB88 38 00 00 00 */ li r0, 0
/* 8026EF2C 0026AB8C 93 DD 00 10 */ stw r30, 0x10(r29)
/* 8026EF30 0026AB90 93 FD 00 14 */ stw r31, 0x14(r29)
/* 8026EF34 0026AB94 90 1D 00 18 */ stw r0, 0x18(r29)
/* 8026EF38 0026AB98 90 1D 00 1C */ stw r0, 0x1c(r29)
/* 8026EF3C 0026AB9C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8026EF40 0026ABA0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8026EF44 0026ABA4 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8026EF48 0026ABA8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8026EF4C 0026ABAC 7C 08 03 A6 */ mtlr r0
/* 8026EF50 0026ABB0 38 21 00 20 */ addi r1, r1, 0x20
/* 8026EF54 0026ABB4 4E 80 00 20 */ blr
.global OSSendMessage
OSSendMessage:
/* 8026EF58 0026ABB8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8026EF5C 0026ABBC 7C 08 02 A6 */ mflr r0
/* 8026EF60 0026ABC0 90 01 00 24 */ stw r0, 0x24(r1)
/* 8026EF64 0026ABC4 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8026EF68 0026ABC8 7C BF 2B 78 */ mr r31, r5
/* 8026EF6C 0026ABCC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8026EF70 0026ABD0 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8026EF74 0026ABD4 7C 9D 23 78 */ mr r29, r4
/* 8026EF78 0026ABD8 93 81 00 10 */ stw r28, 0x10(r1)
/* 8026EF7C 0026ABDC 7C 7C 1B 78 */ mr r28, r3
/* 8026EF80 0026ABE0 4B FF F7 DD */ bl OSDisableInterrupts
/* 8026EF84 0026ABE4 7C 7E 1B 78 */ mr r30, r3
/* 8026EF88 0026ABE8 57 FF 07 FE */ clrlwi r31, r31, 0x1f
/* 8026EF8C 0026ABEC 48 00 00 24 */ b lbl_8026EFB0
lbl_8026EF90:
/* 8026EF90 0026ABF0 2C 1F 00 00 */ cmpwi r31, 0
/* 8026EF94 0026ABF4 40 82 00 14 */ bne lbl_8026EFA8
/* 8026EF98 0026ABF8 7F C3 F3 78 */ mr r3, r30
/* 8026EF9C 0026ABFC 4B FF F7 E9 */ bl OSRestoreInterrupts
/* 8026EFA0 0026AC00 38 60 00 00 */ li r3, 0
/* 8026EFA4 0026AC04 48 00 00 5C */ b lbl_8026F000
lbl_8026EFA8:
/* 8026EFA8 0026AC08 7F 83 E3 78 */ mr r3, r28
/* 8026EFAC 0026AC0C 48 00 33 C9 */ bl OSSleepThread
lbl_8026EFB0:
/* 8026EFB0 0026AC10 80 9C 00 1C */ lwz r4, 0x1c(r28)
/* 8026EFB4 0026AC14 80 DC 00 14 */ lwz r6, 0x14(r28)
/* 8026EFB8 0026AC18 7C 06 20 00 */ cmpw r6, r4
/* 8026EFBC 0026AC1C 40 81 FF D4 */ ble lbl_8026EF90
/* 8026EFC0 0026AC20 80 1C 00 18 */ lwz r0, 0x18(r28)
/* 8026EFC4 0026AC24 38 7C 00 08 */ addi r3, r28, 8
/* 8026EFC8 0026AC28 80 BC 00 10 */ lwz r5, 0x10(r28)
/* 8026EFCC 0026AC2C 7C 80 22 14 */ add r4, r0, r4
/* 8026EFD0 0026AC30 7C 04 33 D6 */ divw r0, r4, r6
/* 8026EFD4 0026AC34 7C 00 31 D6 */ mullw r0, r0, r6
/* 8026EFD8 0026AC38 7C 00 20 50 */ subf r0, r0, r4
/* 8026EFDC 0026AC3C 54 00 10 3A */ slwi r0, r0, 2
/* 8026EFE0 0026AC40 7F A5 01 2E */ stwx r29, r5, r0
/* 8026EFE4 0026AC44 80 9C 00 1C */ lwz r4, 0x1c(r28)
/* 8026EFE8 0026AC48 38 04 00 01 */ addi r0, r4, 1
/* 8026EFEC 0026AC4C 90 1C 00 1C */ stw r0, 0x1c(r28)
/* 8026EFF0 0026AC50 48 00 34 71 */ bl OSWakeupThread
/* 8026EFF4 0026AC54 7F C3 F3 78 */ mr r3, r30
/* 8026EFF8 0026AC58 4B FF F7 8D */ bl OSRestoreInterrupts
/* 8026EFFC 0026AC5C 38 60 00 01 */ li r3, 1
lbl_8026F000:
/* 8026F000 0026AC60 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8026F004 0026AC64 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8026F008 0026AC68 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8026F00C 0026AC6C 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8026F010 0026AC70 83 81 00 10 */ lwz r28, 0x10(r1)
/* 8026F014 0026AC74 7C 08 03 A6 */ mtlr r0
/* 8026F018 0026AC78 38 21 00 20 */ addi r1, r1, 0x20
/* 8026F01C 0026AC7C 4E 80 00 20 */ blr
.global OSReceiveMessage
OSReceiveMessage:
/* 8026F020 0026AC80 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8026F024 0026AC84 7C 08 02 A6 */ mflr r0
/* 8026F028 0026AC88 90 01 00 24 */ stw r0, 0x24(r1)
/* 8026F02C 0026AC8C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8026F030 0026AC90 7C 7F 1B 78 */ mr r31, r3
/* 8026F034 0026AC94 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8026F038 0026AC98 7C BE 2B 78 */ mr r30, r5
/* 8026F03C 0026AC9C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8026F040 0026ACA0 93 81 00 10 */ stw r28, 0x10(r1)
/* 8026F044 0026ACA4 7C 9C 23 78 */ mr r28, r4
/* 8026F048 0026ACA8 4B FF F7 15 */ bl OSDisableInterrupts
/* 8026F04C 0026ACAC 7C 7D 1B 78 */ mr r29, r3
/* 8026F050 0026ACB0 57 DE 07 FE */ clrlwi r30, r30, 0x1f
/* 8026F054 0026ACB4 48 00 00 24 */ b lbl_8026F078
lbl_8026F058:
/* 8026F058 0026ACB8 2C 1E 00 00 */ cmpwi r30, 0
/* 8026F05C 0026ACBC 40 82 00 14 */ bne lbl_8026F070
/* 8026F060 0026ACC0 7F A3 EB 78 */ mr r3, r29
/* 8026F064 0026ACC4 4B FF F7 21 */ bl OSRestoreInterrupts
/* 8026F068 0026ACC8 38 60 00 00 */ li r3, 0
/* 8026F06C 0026ACCC 48 00 00 70 */ b lbl_8026F0DC
lbl_8026F070:
/* 8026F070 0026ACD0 38 7F 00 08 */ addi r3, r31, 8
/* 8026F074 0026ACD4 48 00 33 01 */ bl OSSleepThread
lbl_8026F078:
/* 8026F078 0026ACD8 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 8026F07C 0026ACDC 2C 00 00 00 */ cmpwi r0, 0
/* 8026F080 0026ACE0 41 82 FF D8 */ beq lbl_8026F058
/* 8026F084 0026ACE4 2C 1C 00 00 */ cmpwi r28, 0
/* 8026F088 0026ACE8 41 82 00 18 */ beq lbl_8026F0A0
/* 8026F08C 0026ACEC 80 1F 00 18 */ lwz r0, 0x18(r31)
/* 8026F090 0026ACF0 80 7F 00 10 */ lwz r3, 0x10(r31)
/* 8026F094 0026ACF4 54 00 10 3A */ slwi r0, r0, 2
/* 8026F098 0026ACF8 7C 03 00 2E */ lwzx r0, r3, r0
/* 8026F09C 0026ACFC 90 1C 00 00 */ stw r0, 0(r28)
lbl_8026F0A0:
/* 8026F0A0 0026AD00 80 9F 00 18 */ lwz r4, 0x18(r31)
/* 8026F0A4 0026AD04 7F E3 FB 78 */ mr r3, r31
/* 8026F0A8 0026AD08 80 DF 00 14 */ lwz r6, 0x14(r31)
/* 8026F0AC 0026AD0C 38 E4 00 01 */ addi r7, r4, 1
/* 8026F0B0 0026AD10 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 8026F0B4 0026AD14 7C A7 33 D6 */ divw r5, r7, r6
/* 8026F0B8 0026AD18 38 04 FF FF */ addi r0, r4, -1
/* 8026F0BC 0026AD1C 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 8026F0C0 0026AD20 7C 05 31 D6 */ mullw r0, r5, r6
/* 8026F0C4 0026AD24 7C 00 38 50 */ subf r0, r0, r7
/* 8026F0C8 0026AD28 90 1F 00 18 */ stw r0, 0x18(r31)
/* 8026F0CC 0026AD2C 48 00 33 95 */ bl OSWakeupThread
/* 8026F0D0 0026AD30 7F A3 EB 78 */ mr r3, r29
/* 8026F0D4 0026AD34 4B FF F6 B1 */ bl OSRestoreInterrupts
/* 8026F0D8 0026AD38 38 60 00 01 */ li r3, 1
lbl_8026F0DC:
/* 8026F0DC 0026AD3C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8026F0E0 0026AD40 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8026F0E4 0026AD44 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8026F0E8 0026AD48 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8026F0EC 0026AD4C 83 81 00 10 */ lwz r28, 0x10(r1)
/* 8026F0F0 0026AD50 7C 08 03 A6 */ mtlr r0
/* 8026F0F4 0026AD54 38 21 00 20 */ addi r1, r1, 0x20
/* 8026F0F8 0026AD58 4E 80 00 20 */ blr
|