summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24System.s
blob: a3748b46a124729b7528614187d83886f02e8a4a (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
.include "macros.inc"

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

.global NWC24iPrepareShutdown
NWC24iPrepareShutdown:
/* 80304D1C 0030097C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80304D20 00300980  7C 08 02 A6 */	mflr r0
/* 80304D24 00300984  90 01 00 24 */	stw r0, 0x24(r1)
/* 80304D28 00300988  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80304D2C 0030098C  3B E0 00 00 */	li r31, 0
/* 80304D30 00300990  4B FF E3 25 */	bl NWC24iRegister
/* 80304D34 00300994  3C A0 80 30 */	lis r5, NWC24Shutdown@ha
/* 80304D38 00300998  3C 80 80 58 */	lis r4, lbl_8057EA00@ha
/* 80304D3C 0030099C  38 A5 4D C4 */	addi r5, r5, NWC24Shutdown@l
/* 80304D40 003009A0  38 00 00 6E */	li r0, 0x6e
/* 80304D44 003009A4  38 64 EA 00 */	addi r3, r4, lbl_8057EA00@l
/* 80304D48 003009A8  90 A4 EA 00 */	stw r5, -0x1600(r4)
/* 80304D4C 003009AC  90 03 00 04 */	stw r0, 4(r3)
/* 80304D50 003009B0  4B F6 AF 41 */	bl OSRegisterShutdownFunction
/* 80304D54 003009B4  80 0D 8C C8 */	lwz r0, lbl_8063DF88-_SDA_BASE_(r13)
/* 80304D58 003009B8  2C 00 00 00 */	cmpwi r0, 0
/* 80304D5C 003009BC  40 80 00 24 */	bge lbl_80304D80
/* 80304D60 003009C0  3C 60 80 44 */	lis r3, lbl_80446590@ha
/* 80304D64 003009C4  3C 80 80 44 */	lis r4, lbl_804465A8@ha
/* 80304D68 003009C8  38 63 65 90 */	addi r3, r3, lbl_80446590@l
/* 80304D6C 003009CC  38 AD 8C C8 */	addi r5, r13, lbl_8063DF88-_SDA_BASE_
/* 80304D70 003009D0  38 84 65 A8 */	addi r4, r4, lbl_804465A8@l
/* 80304D74 003009D4  38 C0 00 01 */	li r6, 1
/* 80304D78 003009D8  4B FF F9 05 */	bl NWC24iOpenResourceManager
/* 80304D7C 003009DC  7C 7F 1B 78 */	mr r31, r3
lbl_80304D80:
/* 80304D80 003009E0  38 00 00 05 */	li r0, 5
/* 80304D84 003009E4  90 0D AF D0 */	stw r0, lbl_80640290-_SDA_BASE_(r13)
lbl_80304D88:
/* 80304D88 003009E8  4B FE 5C 65 */	bl SCCheckStatus
/* 80304D8C 003009EC  28 03 00 02 */	cmplwi r3, 2
/* 80304D90 003009F0  41 82 00 1C */	beq lbl_80304DAC
/* 80304D94 003009F4  28 03 00 01 */	cmplwi r3, 1
/* 80304D98 003009F8  41 82 FF F0 */	beq lbl_80304D88
/* 80304D9C 003009FC  38 61 00 08 */	addi r3, r1, 8
/* 80304DA0 00300A00  4B FE 76 9D */	bl SCGetIdleMode
/* 80304DA4 00300A04  88 61 00 09 */	lbz r3, 9(r1)
/* 80304DA8 00300A08  4B F6 E8 45 */	bl __OSSetIdleLEDMode
lbl_80304DAC:
/* 80304DAC 00300A0C  7F E3 FB 78 */	mr r3, r31
/* 80304DB0 00300A10  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80304DB4 00300A14  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80304DB8 00300A18  7C 08 03 A6 */	mtlr r0
/* 80304DBC 00300A1C  38 21 00 20 */	addi r1, r1, 0x20
/* 80304DC0 00300A20  4E 80 00 20 */	blr

NWC24Shutdown:
/* 80304DC4 00300A24  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80304DC8 00300A28  7C 08 02 A6 */	mflr r0
/* 80304DCC 00300A2C  2C 03 00 00 */	cmpwi r3, 0
/* 80304DD0 00300A30  90 01 00 14 */	stw r0, 0x14(r1)
/* 80304DD4 00300A34  41 82 00 0C */	beq lbl_80304DE0
/* 80304DD8 00300A38  38 60 00 01 */	li r3, 1
/* 80304DDC 00300A3C  48 00 00 A8 */	b lbl_80304E84
lbl_80304DE0:
/* 80304DE0 00300A40  80 0D AF D4 */	lwz r0, lbl_80640294-_SDA_BASE_(r13)
/* 80304DE4 00300A44  2C 00 00 00 */	cmpwi r0, 0
/* 80304DE8 00300A48  41 82 00 54 */	beq lbl_80304E3C
/* 80304DEC 00300A4C  4B FF F9 E1 */	bl NWC24iIsAsyncRequestPending
/* 80304DF0 00300A50  2C 03 00 00 */	cmpwi r3, 0
/* 80304DF4 00300A54  41 82 00 0C */	beq lbl_80304E00
/* 80304DF8 00300A58  38 60 00 00 */	li r3, 0
/* 80304DFC 00300A5C  48 00 00 88 */	b lbl_80304E84
lbl_80304E00:
/* 80304E00 00300A60  80 0D AF D8 */	lwz r0, lbl_80640298-_SDA_BASE_(r13)
/* 80304E04 00300A64  2C 00 00 00 */	cmpwi r0, 0
/* 80304E08 00300A68  41 80 00 0C */	blt lbl_80304E14
/* 80304E0C 00300A6C  38 60 00 01 */	li r3, 1
/* 80304E10 00300A70  48 00 00 74 */	b lbl_80304E84
lbl_80304E14:
/* 80304E14 00300A74  80 6D AF D0 */	lwz r3, lbl_80640290-_SDA_BASE_(r13)
/* 80304E18 00300A78  2C 03 00 00 */	cmpwi r3, 0
/* 80304E1C 00300A7C  40 81 00 18 */	ble lbl_80304E34
/* 80304E20 00300A80  38 03 FF FF */	addi r0, r3, -1
/* 80304E24 00300A84  38 60 00 00 */	li r3, 0
/* 80304E28 00300A88  90 6D AF D4 */	stw r3, lbl_80640294-_SDA_BASE_(r13)
/* 80304E2C 00300A8C  90 0D AF D0 */	stw r0, lbl_80640290-_SDA_BASE_(r13)
/* 80304E30 00300A90  48 00 00 50 */	b lbl_80304E80
lbl_80304E34:
/* 80304E34 00300A94  38 60 00 01 */	li r3, 1
/* 80304E38 00300A98  48 00 00 4C */	b lbl_80304E84
lbl_80304E3C:
/* 80304E3C 00300A9C  3C A0 80 58 */	lis r5, lbl_8057EA20@ha
/* 80304E40 00300AA0  3C 60 80 44 */	lis r3, lbl_804465BC@ha
/* 80304E44 00300AA4  90 85 EA 20 */	stw r4, lbl_8057EA20@l(r5)
/* 80304E48 00300AA8  3D 00 80 58 */	lis r8, lbl_8057EA40@ha
/* 80304E4C 00300AAC  38 C5 EA 20 */	addi r6, r5, -5600
/* 80304E50 00300AB0  80 8D 8C C8 */	lwz r4, lbl_8063DF88-_SDA_BASE_(r13)
/* 80304E54 00300AB4  38 63 65 BC */	addi r3, r3, lbl_804465BC@l
/* 80304E58 00300AB8  39 08 EA 40 */	addi r8, r8, lbl_8057EA40@l
/* 80304E5C 00300ABC  38 A0 00 28 */	li r5, 0x28
/* 80304E60 00300AC0  38 E0 00 20 */	li r7, 0x20
/* 80304E64 00300AC4  39 20 00 20 */	li r9, 0x20
/* 80304E68 00300AC8  39 4D AF D8 */	addi r10, r13, lbl_80640298-_SDA_BASE_
/* 80304E6C 00300ACC  4B FF F9 05 */	bl NWC24iIoctlResourceManagerAsync
/* 80304E70 00300AD0  2C 03 00 00 */	cmpwi r3, 0
/* 80304E74 00300AD4  41 80 00 0C */	blt lbl_80304E80
/* 80304E78 00300AD8  38 00 00 01 */	li r0, 1
/* 80304E7C 00300ADC  90 0D AF D4 */	stw r0, lbl_80640294-_SDA_BASE_(r13)
lbl_80304E80:
/* 80304E80 00300AE0  38 60 00 00 */	li r3, 0
lbl_80304E84:
/* 80304E84 00300AE4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80304E88 00300AE8  7C 08 03 A6 */	mtlr r0
/* 80304E8C 00300AEC  38 21 00 10 */	addi r1, r1, 0x10
/* 80304E90 00300AF0  4E 80 00 20 */	blr