summaryrefslogtreecommitdiff
path: root/asm/SDK/WD/wd_init.s
blob: 425cd2114c2677d173671dfdb2952a0125524c36 (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
.include "macros.inc"

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

.global WD_Startup
WD_Startup:
/* 802EE4E8 002EA148  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802EE4EC 002EA14C  7C 08 02 A6 */	mflr r0
/* 802EE4F0 002EA150  90 01 00 24 */	stw r0, 0x24(r1)
/* 802EE4F4 002EA154  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802EE4F8 002EA158  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802EE4FC 002EA15C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802EE500 002EA160  7C 7D 1B 78 */	mr r29, r3
/* 802EE504 002EA164  4B F8 02 59 */	bl OSDisableInterrupts
/* 802EE508 002EA168  7C 7E 1B 78 */	mr r30, r3
/* 802EE50C 002EA16C  4B FF F8 51 */	bl WDi_GetWork
/* 802EE510 002EA170  80 03 00 00 */	lwz r0, 0(r3)
/* 802EE514 002EA174  2C 00 00 00 */	cmpwi r0, 0
/* 802EE518 002EA178  41 80 00 10 */	blt lbl_802EE528
/* 802EE51C 002EA17C  3C 60 80 01 */	lis r3, 0x80008006@ha
/* 802EE520 002EA180  3B E3 80 06 */	addi r31, r3, 0x80008006@l
/* 802EE524 002EA184  48 00 00 80 */	b lbl_802EE5A4
lbl_802EE528:
/* 802EE528 002EA188  4B FF F8 35 */	bl WDi_GetWork
/* 802EE52C 002EA18C  80 03 00 04 */	lwz r0, 4(r3)
/* 802EE530 002EA190  2C 00 00 00 */	cmpwi r0, 0
/* 802EE534 002EA194  40 82 00 2C */	bne lbl_802EE560
/* 802EE538 002EA198  4B FF F8 25 */	bl WDi_GetWork
/* 802EE53C 002EA19C  38 80 00 00 */	li r4, 0
/* 802EE540 002EA1A0  38 A0 00 0C */	li r5, 0xc
/* 802EE544 002EA1A4  4B D1 5B C1 */	bl memset
/* 802EE548 002EA1A8  3B E0 00 01 */	li r31, 1
/* 802EE54C 002EA1AC  4B FF F8 11 */	bl WDi_GetWork
/* 802EE550 002EA1B0  93 E3 00 04 */	stw r31, 4(r3)
/* 802EE554 002EA1B4  3B E0 FF FF */	li r31, -1
/* 802EE558 002EA1B8  4B FF F8 05 */	bl WDi_GetWork
/* 802EE55C 002EA1BC  93 E3 00 08 */	stw r31, 8(r3)
lbl_802EE560:
/* 802EE560 002EA1C0  3C 60 80 44 */	lis r3, lbl_80445BC0@ha
/* 802EE564 002EA1C4  67 A4 00 01 */	oris r4, r29, 1
/* 802EE568 002EA1C8  38 63 5B C0 */	addi r3, r3, lbl_80445BC0@l
/* 802EE56C 002EA1CC  4B FB 4B ED */	bl IOS_Open
/* 802EE570 002EA1D0  7C 7F 1B 78 */	mr r31, r3
/* 802EE574 002EA1D4  4B FF F7 E9 */	bl WDi_GetWork
/* 802EE578 002EA1D8  93 E3 00 00 */	stw r31, 0(r3)
/* 802EE57C 002EA1DC  4B FF F7 E1 */	bl WDi_GetWork
/* 802EE580 002EA1E0  80 03 00 00 */	lwz r0, 0(r3)
/* 802EE584 002EA1E4  2C 00 00 00 */	cmpwi r0, 0
/* 802EE588 002EA1E8  40 80 00 10 */	bge lbl_802EE598
/* 802EE58C 002EA1EC  4B FF F7 D1 */	bl WDi_GetWork
/* 802EE590 002EA1F0  80 63 00 00 */	lwz r3, 0(r3)
/* 802EE594 002EA1F4  48 00 00 0C */	b lbl_802EE5A0
lbl_802EE598:
/* 802EE598 002EA1F8  38 60 10 00 */	li r3, 0x1000
/* 802EE59C 002EA1FC  4B FF F8 11 */	bl WDi_SetupHeap
lbl_802EE5A0:
/* 802EE5A0 002EA200  7C 7F 1B 78 */	mr r31, r3
lbl_802EE5A4:
/* 802EE5A4 002EA204  7F C3 F3 78 */	mr r3, r30
/* 802EE5A8 002EA208  4B F8 01 DD */	bl OSRestoreInterrupts
/* 802EE5AC 002EA20C  7F E3 FB 78 */	mr r3, r31
/* 802EE5B0 002EA210  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802EE5B4 002EA214  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802EE5B8 002EA218  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802EE5BC 002EA21C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802EE5C0 002EA220  7C 08 03 A6 */	mtlr r0
/* 802EE5C4 002EA224  38 21 00 20 */	addi r1, r1, 0x20
/* 802EE5C8 002EA228  4E 80 00 20 */	blr

.global WD_Cleanup
WD_Cleanup:
/* 802EE5CC 002EA22C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802EE5D0 002EA230  7C 08 02 A6 */	mflr r0
/* 802EE5D4 002EA234  90 01 00 14 */	stw r0, 0x14(r1)
/* 802EE5D8 002EA238  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802EE5DC 002EA23C  93 C1 00 08 */	stw r30, 8(r1)
/* 802EE5E0 002EA240  4B F8 01 7D */	bl OSDisableInterrupts
/* 802EE5E4 002EA244  7C 7E 1B 78 */	mr r30, r3
/* 802EE5E8 002EA248  4B FF F7 75 */	bl WDi_GetWork
/* 802EE5EC 002EA24C  80 63 00 00 */	lwz r3, 0(r3)
/* 802EE5F0 002EA250  4B FB 4D 49 */	bl IOS_Close
/* 802EE5F4 002EA254  2C 03 00 00 */	cmpwi r3, 0
/* 802EE5F8 002EA258  7C 7F 1B 78 */	mr r31, r3
/* 802EE5FC 002EA25C  41 80 00 18 */	blt lbl_802EE614
/* 802EE600 002EA260  3B E0 FF FF */	li r31, -1
/* 802EE604 002EA264  4B FF F7 59 */	bl WDi_GetWork
/* 802EE608 002EA268  93 E3 00 00 */	stw r31, 0(r3)
/* 802EE60C 002EA26C  4B FF F8 3D */	bl WDi_CleanupHeap
/* 802EE610 002EA270  7C 7F 1B 78 */	mr r31, r3
lbl_802EE614:
/* 802EE614 002EA274  7F C3 F3 78 */	mr r3, r30
/* 802EE618 002EA278  4B F8 01 6D */	bl OSRestoreInterrupts
/* 802EE61C 002EA27C  7F E3 FB 78 */	mr r3, r31
/* 802EE620 002EA280  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802EE624 002EA284  83 C1 00 08 */	lwz r30, 8(r1)
/* 802EE628 002EA288  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802EE62C 002EA28C  7C 08 03 A6 */	mtlr r0
/* 802EE630 002EA290  38 21 00 10 */	addi r1, r1, 0x10
/* 802EE634 002EA294  4E 80 00 20 */	blr