summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSAlloc_asm.s
blob: 2826b5cabee4d697eae2941bd03a1be5ab5d317b (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
.include "macros.inc"

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

.global OSAllocFromHeap
OSAllocFromHeap:
/* 80269F5C 00265BBC  1C 63 00 0C */	mulli r3, r3, 0xc
/* 80269F60 00265BC0  80 AD A7 B8 */	lwz r5, lbl_8063FA78-_SDA_BASE_(r13)
/* 80269F64 00265BC4  38 04 00 3F */	addi r0, r4, 0x3f
/* 80269F68 00265BC8  7C A5 1A 14 */	add r5, r5, r3
/* 80269F6C 00265BCC  54 04 00 34 */	rlwinm r4, r0, 0, 0, 0x1a
/* 80269F70 00265BD0  80 65 00 04 */	lwz r3, 4(r5)
/* 80269F74 00265BD4  7C 66 1B 78 */	mr r6, r3
/* 80269F78 00265BD8  48 00 00 14 */	b lbl_80269F8C
lbl_80269F7C:
/* 80269F7C 00265BDC  80 06 00 08 */	lwz r0, 8(r6)
/* 80269F80 00265BE0  7C 04 00 00 */	cmpw r4, r0
/* 80269F84 00265BE4  40 81 00 10 */	ble lbl_80269F94
/* 80269F88 00265BE8  80 C6 00 04 */	lwz r6, 4(r6)
lbl_80269F8C:
/* 80269F8C 00265BEC  2C 06 00 00 */	cmpwi r6, 0
/* 80269F90 00265BF0  40 82 FF EC */	bne lbl_80269F7C
lbl_80269F94:
/* 80269F94 00265BF4  2C 06 00 00 */	cmpwi r6, 0
/* 80269F98 00265BF8  40 82 00 0C */	bne lbl_80269FA4
/* 80269F9C 00265BFC  38 60 00 00 */	li r3, 0
/* 80269FA0 00265C00  4E 80 00 20 */	blr
lbl_80269FA4:
/* 80269FA4 00265C04  80 06 00 08 */	lwz r0, 8(r6)
/* 80269FA8 00265C08  7C 04 00 50 */	subf r0, r4, r0
/* 80269FAC 00265C0C  28 00 00 40 */	cmplwi r0, 0x40
/* 80269FB0 00265C10  40 80 00 3C */	bge lbl_80269FEC
/* 80269FB4 00265C14  80 86 00 04 */	lwz r4, 4(r6)
/* 80269FB8 00265C18  2C 04 00 00 */	cmpwi r4, 0
/* 80269FBC 00265C1C  41 82 00 0C */	beq lbl_80269FC8
/* 80269FC0 00265C20  80 06 00 00 */	lwz r0, 0(r6)
/* 80269FC4 00265C24  90 04 00 00 */	stw r0, 0(r4)
lbl_80269FC8:
/* 80269FC8 00265C28  80 86 00 00 */	lwz r4, 0(r6)
/* 80269FCC 00265C2C  2C 04 00 00 */	cmpwi r4, 0
/* 80269FD0 00265C30  40 82 00 0C */	bne lbl_80269FDC
/* 80269FD4 00265C34  80 66 00 04 */	lwz r3, 4(r6)
/* 80269FD8 00265C38  48 00 00 0C */	b lbl_80269FE4
lbl_80269FDC:
/* 80269FDC 00265C3C  80 06 00 04 */	lwz r0, 4(r6)
/* 80269FE0 00265C40  90 04 00 04 */	stw r0, 4(r4)
lbl_80269FE4:
/* 80269FE4 00265C44  90 65 00 04 */	stw r3, 4(r5)
/* 80269FE8 00265C48  48 00 00 44 */	b lbl_8026A02C
lbl_80269FEC:
/* 80269FEC 00265C4C  90 86 00 08 */	stw r4, 8(r6)
/* 80269FF0 00265C50  7C 86 22 14 */	add r4, r6, r4
/* 80269FF4 00265C54  90 04 00 08 */	stw r0, 8(r4)
/* 80269FF8 00265C58  80 06 00 00 */	lwz r0, 0(r6)
/* 80269FFC 00265C5C  90 04 00 00 */	stw r0, 0(r4)
/* 8026A000 00265C60  80 66 00 04 */	lwz r3, 4(r6)
/* 8026A004 00265C64  2C 03 00 00 */	cmpwi r3, 0
/* 8026A008 00265C68  90 64 00 04 */	stw r3, 4(r4)
/* 8026A00C 00265C6C  41 82 00 08 */	beq lbl_8026A014
/* 8026A010 00265C70  90 83 00 00 */	stw r4, 0(r3)
lbl_8026A014:
/* 8026A014 00265C74  80 64 00 00 */	lwz r3, 0(r4)
/* 8026A018 00265C78  2C 03 00 00 */	cmpwi r3, 0
/* 8026A01C 00265C7C  41 82 00 0C */	beq lbl_8026A028
/* 8026A020 00265C80  90 83 00 04 */	stw r4, 4(r3)
/* 8026A024 00265C84  48 00 00 08 */	b lbl_8026A02C
lbl_8026A028:
/* 8026A028 00265C88  90 85 00 04 */	stw r4, 4(r5)
lbl_8026A02C:
/* 8026A02C 00265C8C  80 65 00 08 */	lwz r3, 8(r5)
/* 8026A030 00265C90  38 00 00 00 */	li r0, 0
/* 8026A034 00265C94  90 66 00 04 */	stw r3, 4(r6)
/* 8026A038 00265C98  2C 03 00 00 */	cmpwi r3, 0
/* 8026A03C 00265C9C  90 06 00 00 */	stw r0, 0(r6)
/* 8026A040 00265CA0  41 82 00 08 */	beq lbl_8026A048
/* 8026A044 00265CA4  90 C3 00 00 */	stw r6, 0(r3)
lbl_8026A048:
/* 8026A048 00265CA8  90 C5 00 08 */	stw r6, 8(r5)
/* 8026A04C 00265CAC  38 66 00 20 */	addi r3, r6, 0x20
/* 8026A050 00265CB0  4E 80 00 20 */	blr

.global OSFreeToHeap
OSFreeToHeap:
/* 8026A054 00265CB4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8026A058 00265CB8  7C 08 02 A6 */	mflr r0
/* 8026A05C 00265CBC  38 84 FF E0 */	addi r4, r4, -32
/* 8026A060 00265CC0  90 01 00 14 */	stw r0, 0x14(r1)
/* 8026A064 00265CC4  1C 03 00 0C */	mulli r0, r3, 0xc
/* 8026A068 00265CC8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8026A06C 00265CCC  80 AD A7 B8 */	lwz r5, lbl_8063FA78-_SDA_BASE_(r13)
/* 8026A070 00265CD0  80 C4 00 04 */	lwz r6, 4(r4)
/* 8026A074 00265CD4  7F E5 02 14 */	add r31, r5, r0
/* 8026A078 00265CD8  2C 06 00 00 */	cmpwi r6, 0
/* 8026A07C 00265CDC  80 7F 00 08 */	lwz r3, 8(r31)
/* 8026A080 00265CE0  41 82 00 0C */	beq lbl_8026A08C
/* 8026A084 00265CE4  80 04 00 00 */	lwz r0, 0(r4)
/* 8026A088 00265CE8  90 06 00 00 */	stw r0, 0(r6)
lbl_8026A08C:
/* 8026A08C 00265CEC  80 A4 00 00 */	lwz r5, 0(r4)
/* 8026A090 00265CF0  2C 05 00 00 */	cmpwi r5, 0
/* 8026A094 00265CF4  40 82 00 0C */	bne lbl_8026A0A0
/* 8026A098 00265CF8  80 64 00 04 */	lwz r3, 4(r4)
/* 8026A09C 00265CFC  48 00 00 0C */	b lbl_8026A0A8
lbl_8026A0A0:
/* 8026A0A0 00265D00  80 04 00 04 */	lwz r0, 4(r4)
/* 8026A0A4 00265D04  90 05 00 04 */	stw r0, 4(r5)
lbl_8026A0A8:
/* 8026A0A8 00265D08  90 7F 00 08 */	stw r3, 8(r31)
/* 8026A0AC 00265D0C  80 7F 00 04 */	lwz r3, 4(r31)
/* 8026A0B0 00265D10  4B FF FE 01 */	bl DLInsert
/* 8026A0B4 00265D14  90 7F 00 04 */	stw r3, 4(r31)
/* 8026A0B8 00265D18  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8026A0BC 00265D1C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8026A0C0 00265D20  7C 08 03 A6 */	mtlr r0
/* 8026A0C4 00265D24  38 21 00 10 */	addi r1, r1, 0x10
/* 8026A0C8 00265D28  4E 80 00 20 */	blr