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

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

.global WDi_GetWork
WDi_GetWork:
/* 802EDD5C 002E99BC  3C 60 80 44 */	lis r3, lbl_80445BB0@ha
/* 802EDD60 002E99C0  38 63 5B B0 */	addi r3, r3, lbl_80445BB0@l
/* 802EDD64 002E99C4  4E 80 00 20 */	blr

.global WDi_Ioctlv
WDi_Ioctlv:
/* 802EDD68 002E99C8  3D 00 80 44 */	lis r8, lbl_80445BB0@ha
/* 802EDD6C 002E99CC  7C 8A 23 78 */	mr r10, r4
/* 802EDD70 002E99D0  80 08 5B B0 */	lwz r0, lbl_80445BB0@l(r8)
/* 802EDD74 002E99D4  7C A9 2B 78 */	mr r9, r5
/* 802EDD78 002E99D8  7C C7 33 78 */	mr r7, r6
/* 802EDD7C 002E99DC  2C 00 00 00 */	cmpwi r0, 0
/* 802EDD80 002E99E0  40 80 00 10 */	bge lbl_802EDD90
/* 802EDD84 002E99E4  3C 60 80 01 */	lis r3, -0x7fff
/* 802EDD88 002E99E8  38 63 80 00 */	subi r3, r3, 0x8000
/* 802EDD8C 002E99EC  4E 80 00 20 */	blr
lbl_802EDD90:
/* 802EDD90 002E99F0  80 08 5B B0 */	lwz r0, 0x5bb0(r8)
/* 802EDD94 002E99F4  7C 64 1B 78 */	mr r4, r3
/* 802EDD98 002E99F8  7D 45 53 78 */	mr r5, r10
/* 802EDD9C 002E99FC  7D 26 4B 78 */	mr r6, r9
/* 802EDDA0 002E9A00  7C 03 03 78 */	mr r3, r0
/* 802EDDA4 002E9A04  4B FB 60 9C */	b IOS_Ioctlv
/* 802EDDA8 002E9A08  4E 80 00 20 */	blr

.global WDi_SetupHeap
WDi_SetupHeap:
/* 802EDDAC 002E9A0C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802EDDB0 002E9A10  7C 08 02 A6 */	mflr r0
/* 802EDDB4 002E9A14  90 01 00 24 */	stw r0, 0x24(r1)
/* 802EDDB8 002E9A18  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802EDDBC 002E9A1C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802EDDC0 002E9A20  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802EDDC4 002E9A24  7C 7D 1B 78 */	mr r29, r3
/* 802EDDC8 002E9A28  4B FB 4B 2D */	bl IPCGetBufferLo
/* 802EDDCC 002E9A2C  3F E0 80 44 */	lis r31, lbl_80445BB0@ha
/* 802EDDD0 002E9A30  7C 7E 1B 78 */	mr r30, r3
/* 802EDDD4 002E9A34  3B FF 5B B0 */	addi r31, r31, lbl_80445BB0@l
/* 802EDDD8 002E9A38  80 1F 00 08 */	lwz r0, 8(r31)
/* 802EDDDC 002E9A3C  2C 00 FF FF */	cmpwi r0, -1
/* 802EDDE0 002E9A40  40 82 00 48 */	bne lbl_802EDE28
/* 802EDDE4 002E9A44  4B FB 4B 09 */	bl IPCGetBufferHi
/* 802EDDE8 002E9A48  7C 1E EA 14 */	add r0, r30, r29
/* 802EDDEC 002E9A4C  7C 00 18 40 */	cmplw r0, r3
/* 802EDDF0 002E9A50  40 81 00 0C */	ble lbl_802EDDFC
/* 802EDDF4 002E9A54  38 60 FF EA */	li r3, -22
/* 802EDDF8 002E9A58  48 00 00 34 */	b lbl_802EDE2C
lbl_802EDDFC:
/* 802EDDFC 002E9A5C  7F C3 F3 78 */	mr r3, r30
/* 802EDE00 002E9A60  7F A4 EB 78 */	mr r4, r29
/* 802EDE04 002E9A64  4B FB 62 01 */	bl iosCreateHeap
/* 802EDE08 002E9A68  90 7F 00 08 */	stw r3, 8(r31)
/* 802EDE0C 002E9A6C  80 1F 00 08 */	lwz r0, 8(r31)
/* 802EDE10 002E9A70  2C 00 00 00 */	cmpwi r0, 0
/* 802EDE14 002E9A74  40 80 00 0C */	bge lbl_802EDE20
/* 802EDE18 002E9A78  80 7F 00 08 */	lwz r3, 8(r31)
/* 802EDE1C 002E9A7C  48 00 00 10 */	b lbl_802EDE2C
lbl_802EDE20:
/* 802EDE20 002E9A80  7C 7E EA 14 */	add r3, r30, r29
/* 802EDE24 002E9A84  4B FB 4A D9 */	bl IPCSetBufferLo
lbl_802EDE28:
/* 802EDE28 002E9A88  38 60 00 00 */	li r3, 0
lbl_802EDE2C:
/* 802EDE2C 002E9A8C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802EDE30 002E9A90  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802EDE34 002E9A94  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802EDE38 002E9A98  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802EDE3C 002E9A9C  7C 08 03 A6 */	mtlr r0
/* 802EDE40 002E9AA0  38 21 00 20 */	addi r1, r1, 0x20
/* 802EDE44 002E9AA4  4E 80 00 20 */	blr

.global WDi_CleanupHeap
WDi_CleanupHeap:
/* 802EDE48 002E9AA8  38 60 00 00 */	li r3, 0
/* 802EDE4C 002E9AAC  4E 80 00 20 */	blr