summaryrefslogtreecommitdiff
path: root/asm/SDK/MP/mpnotification.s
blob: ea152fc87d02cb4a4e4b9a0fd1fc0c423628b7d0 (plain)
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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global MPiStartupNotification
MPiStartupNotification:
/* 802F3158 002EEDB8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F315C 002EEDBC  7C 08 02 A6 */	mflr r0
/* 802F3160 002EEDC0  38 80 00 00 */	li r4, 0
/* 802F3164 002EEDC4  38 A0 10 00 */	li r5, 0x1000
/* 802F3168 002EEDC8  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F316C 002EEDCC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F3170 002EEDD0  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3174 002EEDD4  38 7F 21 40 */	addi r3, r31, 0x2140
/* 802F3178 002EEDD8  4B D1 0F 8D */	bl memset
/* 802F317C 002EEDDC  38 7F 6F C8 */	addi r3, r31, 0x6fc8
/* 802F3180 002EEDE0  38 80 00 00 */	li r4, 0
/* 802F3184 002EEDE4  38 A0 03 18 */	li r5, 0x318
/* 802F3188 002EEDE8  4B D1 0F 7D */	bl memset
/* 802F318C 002EEDEC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F3190 002EEDF0  38 60 00 00 */	li r3, 0
/* 802F3194 002EEDF4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F3198 002EEDF8  7C 08 03 A6 */	mtlr r0
/* 802F319C 002EEDFC  38 21 00 10 */	addi r1, r1, 0x10
/* 802F31A0 002EEE00  4E 80 00 20 */	blr

.global MPiStartupNotificationLater
MPiStartupNotificationLater:
/* 802F31A4 002EEE04  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F31A8 002EEE08  7C 08 02 A6 */	mflr r0
/* 802F31AC 002EEE0C  80 C2 AA 30 */	lwz r6, lbl_80643030-_SDA2_BASE_(r2)
/* 802F31B0 002EEE10  3C 80 80 2F */	lis r4, HandleNotification@ha
/* 802F31B4 002EEE14  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F31B8 002EEE18  38 84 32 68 */	addi r4, r4, HandleNotification@l
/* 802F31BC 002EEE1C  38 A0 00 00 */	li r5, 0
/* 802F31C0 002EEE20  38 66 6F C8 */	addi r3, r6, 0x6fc8
/* 802F31C4 002EEE24  81 06 00 08 */	lwz r8, 8(r6)
/* 802F31C8 002EEE28  38 C6 31 40 */	addi r6, r6, 0x3140
/* 802F31CC 002EEE2C  38 E0 10 00 */	li r7, 0x1000
/* 802F31D0 002EEE30  39 20 00 00 */	li r9, 0
/* 802F31D4 002EEE34  39 08 00 02 */	addi r8, r8, 2
/* 802F31D8 002EEE38  4B F7 E7 09 */	bl OSCreateThread
/* 802F31DC 002EEE3C  2C 03 00 00 */	cmpwi r3, 0
/* 802F31E0 002EEE40  40 82 00 0C */	bne lbl_802F31EC
/* 802F31E4 002EEE44  38 60 FF 11 */	li r3, -239
/* 802F31E8 002EEE48  48 00 00 14 */	b lbl_802F31FC
lbl_802F31EC:
/* 802F31EC 002EEE4C  80 62 AA 30 */	lwz r3, lbl_80643030-_SDA2_BASE_(r2)
/* 802F31F0 002EEE50  38 63 6F C8 */	addi r3, r3, 0x6fc8
/* 802F31F4 002EEE54  4B F7 ED 55 */	bl OSResumeThread
/* 802F31F8 002EEE58  38 60 00 00 */	li r3, 0
lbl_802F31FC:
/* 802F31FC 002EEE5C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F3200 002EEE60  7C 08 03 A6 */	mtlr r0
/* 802F3204 002EEE64  38 21 00 10 */	addi r1, r1, 0x10
/* 802F3208 002EEE68  4E 80 00 20 */	blr

.global MPiCleanupNotificationEarlier
MPiCleanupNotificationEarlier:
/* 802F320C 002EEE6C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802F3210 002EEE70  7C 08 02 A6 */	mflr r0
/* 802F3214 002EEE74  90 01 00 14 */	stw r0, 0x14(r1)
/* 802F3218 002EEE78  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802F321C 002EEE7C  83 E2 AA 30 */	lwz r31, lbl_80643030-_SDA2_BASE_(r2)
/* 802F3220 002EEE80  2C 1F 00 00 */	cmpwi r31, 0
/* 802F3224 002EEE84  41 82 00 2C */	beq lbl_802F3250
/* 802F3228 002EEE88  A0 1F 72 90 */	lhz r0, 0x7290(r31)
/* 802F322C 002EEE8C  2C 00 00 00 */	cmpwi r0, 0
/* 802F3230 002EEE90  41 82 00 10 */	beq lbl_802F3240
/* 802F3234 002EEE94  38 7F 6F C8 */	addi r3, r31, 0x6fc8
/* 802F3238 002EEE98  38 80 00 00 */	li r4, 0
/* 802F323C 002EEE9C  4B F7 EB CD */	bl OSJoinThread
lbl_802F3240:
/* 802F3240 002EEEA0  38 7F 6F C8 */	addi r3, r31, 0x6fc8
/* 802F3244 002EEEA4  38 80 00 00 */	li r4, 0
/* 802F3248 002EEEA8  38 A0 03 18 */	li r5, 0x318
/* 802F324C 002EEEAC  4B D1 0E B9 */	bl memset
lbl_802F3250:
/* 802F3250 002EEEB0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802F3254 002EEEB4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802F3258 002EEEB8  7C 08 03 A6 */	mtlr r0
/* 802F325C 002EEEBC  38 21 00 10 */	addi r1, r1, 0x10
/* 802F3260 002EEEC0  4E 80 00 20 */	blr

.global MPiCleanupNotification
MPiCleanupNotification:
/* 802F3264 002EEEC4  4E 80 00 20 */	blr

HandleNotification:
/* 802F3268 002EEEC8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802F326C 002EEECC  7C 08 02 A6 */	mflr r0
/* 802F3270 002EEED0  90 01 00 24 */	stw r0, 0x24(r1)
/* 802F3274 002EEED4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802F3278 002EEED8  3F E0 80 44 */	lis r31, 0x8044
/* 802F327C 002EEEDC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802F3280 002EEEE0  3F C0 80 58 */	lis r30, lbl_80579160@ha
/* 802F3284 002EEEE4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802F3288 002EEEE8  3B BE 91 60 */	addi r29, r30, lbl_80579160@l
lbl_802F328C:
/* 802F328C 002EEEEC  38 7E 91 60 */	addi r3, r30, -28320
/* 802F3290 002EEEF0  4B FF B0 FD */	bl WD_ReceiveNotification
/* 802F3294 002EEEF4  3C 03 80 00 */	addis r0, r3, 0x8000
/* 802F3298 002EEEF8  28 00 80 00 */	cmplwi r0, 0x8000
/* 802F329C 002EEEFC  40 82 00 08 */	bne lbl_802F32A4
/* 802F32A0 002EEF00  48 00 00 60 */	b lbl_802F3300
lbl_802F32A4:
/* 802F32A4 002EEF04  80 1D 00 00 */	lwz r0, 0(r29)
/* 802F32A8 002EEF08  28 00 00 06 */	cmplwi r0, 6
/* 802F32AC 002EEF0C  41 81 FF E0 */	bgt lbl_802F328C
/* 802F32B0 002EEF10  38 7F 5C 88 */	addi r3, r31, 0x5c88
/* 802F32B4 002EEF14  54 00 10 3A */	slwi r0, r0, 2
/* 802F32B8 002EEF18  7C 63 00 2E */	lwzx r3, r3, r0
/* 802F32BC 002EEF1C  7C 69 03 A6 */	mtctr r3
/* 802F32C0 002EEF20  4E 80 04 20 */	bctr
/* 802F32C4 002EEF24  38 9D 00 08 */	addi r4, r29, 8
/* 802F32C8 002EEF28  A0 7D 00 0E */	lhz r3, 0xe(r29)
/* 802F32CC 002EEF2C  A0 DD 00 10 */	lhz r6, 0x10(r29)
/* 802F32D0 002EEF30  38 A4 00 0C */	addi r5, r4, 0xc
/* 802F32D4 002EEF34  4B FF ED 45 */	bl MPiProcessConnectedNotification
/* 802F32D8 002EEF38  4B FF FF B4 */	b lbl_802F328C
/* 802F32DC 002EEF3C  A0 7D 00 0E */	lhz r3, 0xe(r29)
/* 802F32E0 002EEF40  38 BD 00 08 */	addi r5, r29, 8
/* 802F32E4 002EEF44  A0 9D 00 10 */	lhz r4, 0x10(r29)
/* 802F32E8 002EEF48  4B FF EE 71 */	bl MPiProcessDisconnectedNotification
/* 802F32EC 002EEF4C  4B FF FF A0 */	b lbl_802F328C
/* 802F32F0 002EEF50  48 00 08 E5 */	bl MPiProcessBeaconSentNotification
/* 802F32F4 002EEF54  4B FF FF 98 */	b lbl_802F328C
/* 802F32F8 002EEF58  4B FF F5 61 */	bl MPiProcessParentDataSendError
/* 802F32FC 002EEF5C  4B FF FF 90 */	b lbl_802F328C
lbl_802F3300:
/* 802F3300 002EEF60  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802F3304 002EEF64  38 60 00 00 */	li r3, 0
/* 802F3308 002EEF68  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802F330C 002EEF6C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802F3310 002EEF70  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802F3314 002EEF74  7C 08 03 A6 */	mtlr r0
/* 802F3318 002EEF78  38 21 00 20 */	addi r1, r1, 0x20
/* 802F331C 002EEF7C  4E 80 00 20 */	blr