JKRAramHeap and JKRAramPiece (#53)

* renamed func_XXX to _savegpr_XX

* renamed func_XXX to _restgpr_XX

* renamed func_XXX to _savefpr_XX

* renamed func_XXX to _restfpr_XX

* cleanup functions.h and moved intrisics to mwcc.h

* formatting

* cleanup functions.h

* Added include/ar/ARQ.h

* renamed func_XXX to _savegpr_25

* removed JKRAramPiece asm files

* JKRAramHeap OK, JKRAramPiece OK

* formatting

* more formatting

* Added const and removed explicit this->

* fixed merge problems

* changed mMessages[1] to mMessage

* foramatting

Co-authored-by: Julgodis <>
Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
Jonathan Wase
2021-01-03 11:29:50 +01:00
committed by GitHub
parent 0fdce6c042
commit 112e86f0e8
31 changed files with 32859 additions and 726 deletions
@@ -13,13 +13,15 @@ public:
JKRAramBlock* allocHead(u32, u8, JKRAramHeap*);
JKRAramBlock* allocTail(u32, u8, JKRAramHeap*);
void* getAddress() { return (void*)this->mAddress; }
void* getAddress() const { return (void*)mAddress; }
u32 getSize() { return this->mSize; }
u32 getSize() const { return mSize; }
bool isTempMemory() { return this->mIsTempMemory; }
u32 getFreeSize() const { return mFreeSize; }
void newGroupID(u8 groupId) { this->mGroupId = groupId; }
bool isTempMemory() const { return mIsTempMemory; }
void newGroupID(u8 groupId) { mGroupId = groupId; }
public:
JSULink<JKRAramBlock> mBlockLink;
@@ -10,33 +10,38 @@ public:
enum EAllocMode {
HEAD = 0,
TAIL = 1,
__EALLOCMODE_FORCE_ENUM_S32 = INT32_MAX,
__EALLOCMODE_FORCE_ENUM_SIGNED = -1,
};
public:
JKRAramHeap(u32, u32);
virtual ~JKRAramHeap(void);
virtual ~JKRAramHeap();
void alloc(u32, EAllocMode);
void allocFromHead(u32);
void allocFromTail(u32);
void getFreeSize(void);
void getTotalFreeSize(void);
JKRAramBlock* alloc(u32, EAllocMode);
JKRAramBlock* allocFromHead(u32);
JKRAramBlock* allocFromTail(u32);
u32 getFreeSize(void);
u32 getTotalFreeSize(void);
// u32 getUsedSize(void);
void dump(void);
u8 getCurrentGroupID() { return this->mGroupId; }
u8 getCurrentGroupID() const { return mGroupId; }
JKRHeap* getMgrHeap() { return this->mHeap; }
JKRHeap* getMgrHeap() const { return mHeap; }
void lock() { OSLockMutex(&this->mMutex); }
private:
void lock() { OSLockMutex(&mMutex); }
void unlock() { OSUnlockMutex(&this->mMutex); }
void unlock() { OSUnlockMutex(&mMutex); }
public:
OSMutex mMutex;
JKRHeap* mHeap;
u32 field_0x34;
u32 field_0x38;
u32 field_0x3c;
u32 mHeadAddress;
u32 mTailAddress;
u32 mSize;
u8 mGroupId;
u8 padding_0x41[3];
};
@@ -1,55 +0,0 @@
/* __ct__11JKRAramHeapFUlUl __ct__11JKRAramHeapFUlUl::__ct(unsigned long, unsigned long) */
/* JKRAramHeap */
/* 802D2E44 002CFD84 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D2E48 002CFD88 7C 08 02 A6 */ mflr r0
/* 802D2E4C 002CFD8C 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D2E50 002CFD90 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2E54 002CFD94 48 08 F3 89 */ bl _savegpr_29
/* 802D2E58 002CFD98 7C 7D 1B 78 */ mr r29, r3
/* 802D2E5C 002CFD9C 7C 9E 23 78 */ mr r30, r4
/* 802D2E60 002CFDA0 7C BF 2B 78 */ mr r31, r5
/* 802D2E64 002CFDA4 4B FF E6 19 */ bl __ct__11JKRDisposerFv
/* 802D2E68 002CFDA8 3C 60 80 3D */ lis r3, lbl_803CC168@ha
/* 802D2E6C 002CFDAC 38 03 C1 68 */ addi r0, r3, lbl_803CC168@l
/* 802D2E70 002CFDB0 90 1D 00 00 */ stw r0, 0(r29)
/* 802D2E74 002CFDB4 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D2E78 002CFDB8 48 06 C1 91 */ bl OSInitMutex
/* 802D2E7C 002CFDBC 7F A3 EB 78 */ mr r3, r29
/* 802D2E80 002CFDC0 4B FF B9 BD */ bl findFromRoot__7JKRHeapFPv
/* 802D2E84 002CFDC4 90 7D 00 30 */ stw r3, 0x30(r29)
/* 802D2E88 002CFDC8 57 E0 00 34 */ rlwinm r0, r31, 0, 0, 0x1a
/* 802D2E8C 002CFDCC 90 1D 00 3C */ stw r0, 0x3c(r29)
/* 802D2E90 002CFDD0 38 1E 00 1F */ addi r0, r30, 0x1f
/* 802D2E94 002CFDD4 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
/* 802D2E98 002CFDD8 90 1D 00 34 */ stw r0, 0x34(r29)
/* 802D2E9C 002CFDDC 80 7D 00 34 */ lwz r3, 0x34(r29)
/* 802D2EA0 002CFDE0 80 1D 00 3C */ lwz r0, 0x3c(r29)
/* 802D2EA4 002CFDE4 7C 03 02 14 */ add r0, r3, r0
/* 802D2EA8 002CFDE8 90 1D 00 38 */ stw r0, 0x38(r29)
/* 802D2EAC 002CFDEC 38 00 00 FF */ li r0, 0xff
/* 802D2EB0 002CFDF0 98 1D 00 40 */ stb r0, 0x40(r29)
/* 802D2EB4 002CFDF4 38 60 00 24 */ li r3, 0x24
/* 802D2EB8 002CFDF8 80 9D 00 30 */ lwz r4, 0x30(r29)
/* 802D2EBC 002CFDFC 38 A0 00 00 */ li r5, 0
/* 802D2EC0 002CFE00 4B FF BD D9 */ bl __nw__FUlP7JKRHeapi
/* 802D2EC4 002CFE04 7C 64 1B 79 */ or. r4, r3, r3
/* 802D2EC8 002CFE08 41 82 00 20 */ beq lbl_802D2EE8
/* 802D2ECC 002CFE0C 80 9D 00 34 */ lwz r4, 0x34(r29)
/* 802D2ED0 002CFE10 38 A0 00 00 */ li r5, 0
/* 802D2ED4 002CFE14 80 DD 00 3C */ lwz r6, 0x3c(r29)
/* 802D2ED8 002CFE18 38 E0 00 FF */ li r7, 0xff
/* 802D2EDC 002CFE1C 39 00 00 00 */ li r8, 0
/* 802D2EE0 002CFE20 48 00 04 25 */ bl __ct__12JKRAramBlockFUlUlUlUcb
/* 802D2EE4 002CFE24 7C 64 1B 78 */ mr r4, r3
lbl_802D2EE8:
/* 802D2EE8 002CFE28 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D2EEC 002CFE2C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D2EF0 002CFE30 38 84 00 04 */ addi r4, r4, 4
/* 802D2EF4 002CFE34 48 00 90 59 */ bl append__10JSUPtrListFP10JSUPtrLink
/* 802D2EF8 002CFE38 7F A3 EB 78 */ mr r3, r29
/* 802D2EFC 002CFE3C 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2F00 002CFE40 48 08 F3 29 */ bl _restgpr_29
/* 802D2F04 002CFE44 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D2F08 002CFE48 7C 08 03 A6 */ mtlr r0
/* 802D2F0C 002CFE4C 38 21 00 20 */ addi r1, r1, 0x20
/* 802D2F10 002CFE50 4E 80 00 20 */ blr
@@ -1,34 +0,0 @@
/* alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode __ct__11JKRAramHeapFUlUl::alloc(unsigned long, __ct__11JKRAramHeapFUlUl::EAllocMode) */
/* JKRAramHeap_NS_alloc */
/* 802D2FBC 002CFEFC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D2FC0 002CFF00 7C 08 02 A6 */ mflr r0
/* 802D2FC4 002CFF04 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D2FC8 002CFF08 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2FCC 002CFF0C 48 08 F2 11 */ bl _savegpr_29
/* 802D2FD0 002CFF10 7C 7D 1B 78 */ mr r29, r3
/* 802D2FD4 002CFF14 7C 9E 23 78 */ mr r30, r4
/* 802D2FD8 002CFF18 7C BF 2B 78 */ mr r31, r5
/* 802D2FDC 002CFF1C 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D2FE0 002CFF20 48 06 C0 61 */ bl OSLockMutex
/* 802D2FE4 002CFF24 2C 1F 00 00 */ cmpwi r31, 0
/* 802D2FE8 002CFF28 40 82 00 18 */ bne lbl_802D3000
/* 802D2FEC 002CFF2C 7F A3 EB 78 */ mr r3, r29
/* 802D2FF0 002CFF30 7F C4 F3 78 */ mr r4, r30
/* 802D2FF4 002CFF34 48 00 00 41 */ bl allocFromHead__11JKRAramHeapFUl
/* 802D2FF8 002CFF38 7C 7F 1B 78 */ mr r31, r3
/* 802D2FFC 002CFF3C 48 00 00 14 */ b lbl_802D3010
lbl_802D3000:
/* 802D3000 002CFF40 7F A3 EB 78 */ mr r3, r29
/* 802D3004 002CFF44 7F C4 F3 78 */ mr r4, r30
/* 802D3008 002CFF48 48 00 00 B5 */ bl allocFromTail__11JKRAramHeapFUl
/* 802D300C 002CFF4C 7C 7F 1B 78 */ mr r31, r3
lbl_802D3010:
/* 802D3010 002CFF50 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D3014 002CFF54 48 06 C1 09 */ bl OSUnlockMutex
/* 802D3018 002CFF58 7F E3 FB 78 */ mr r3, r31
/* 802D301C 002CFF5C 39 61 00 20 */ addi r11, r1, 0x20
/* 802D3020 002CFF60 48 08 F2 09 */ bl _restgpr_29
/* 802D3024 002CFF64 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D3028 002CFF68 7C 08 03 A6 */ mtlr r0
/* 802D302C 002CFF6C 38 21 00 20 */ addi r1, r1, 0x20
/* 802D3030 002CFF70 4E 80 00 20 */ blr
@@ -1,42 +0,0 @@
/* allocFromHead__11JKRAramHeapFUl __ct__11JKRAramHeapFUlUl::allocFromHead(unsigned long) */
/* JKRAramHeap_NS_allocFromHead */
/* 802D3034 002CFF74 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3038 002CFF78 7C 08 02 A6 */ mflr r0
/* 802D303C 002CFF7C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3040 002CFF80 7C 66 1B 78 */ mr r6, r3
/* 802D3044 002CFF84 38 04 00 1F */ addi r0, r4, 0x1f
/* 802D3048 002CFF88 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
/* 802D304C 002CFF8C 39 00 FF FF */ li r8, -1
/* 802D3050 002CFF90 38 60 00 00 */ li r3, 0
/* 802D3054 002CFF94 3C A0 80 43 */ lis r5, lbl_8043430C@ha
/* 802D3058 002CFF98 80 E5 43 0C */ lwz r7, lbl_8043430C@l(r5)
/* 802D305C 002CFF9C 48 00 00 30 */ b lbl_802D308C
lbl_802D3060:
/* 802D3060 002CFFA0 80 A7 00 00 */ lwz r5, 0(r7)
/* 802D3064 002CFFA4 80 05 00 1C */ lwz r0, 0x1c(r5)
/* 802D3068 002CFFA8 7C 00 20 40 */ cmplw r0, r4
/* 802D306C 002CFFAC 41 80 00 1C */ blt lbl_802D3088
/* 802D3070 002CFFB0 7C 08 00 40 */ cmplw r8, r0
/* 802D3074 002CFFB4 40 81 00 14 */ ble lbl_802D3088
/* 802D3078 002CFFB8 7C 08 03 78 */ mr r8, r0
/* 802D307C 002CFFBC 7C A3 2B 78 */ mr r3, r5
/* 802D3080 002CFFC0 7C 00 20 40 */ cmplw r0, r4
/* 802D3084 002CFFC4 41 82 00 10 */ beq lbl_802D3094
lbl_802D3088:
/* 802D3088 002CFFC8 80 E7 00 0C */ lwz r7, 0xc(r7)
lbl_802D308C:
/* 802D308C 002CFFCC 28 07 00 00 */ cmplwi r7, 0
/* 802D3090 002CFFD0 40 82 FF D0 */ bne lbl_802D3060
lbl_802D3094:
/* 802D3094 002CFFD4 28 03 00 00 */ cmplwi r3, 0
/* 802D3098 002CFFD8 41 82 00 10 */ beq lbl_802D30A8
/* 802D309C 002CFFDC 88 A6 00 40 */ lbz r5, 0x40(r6)
/* 802D30A0 002CFFE0 48 00 03 95 */ bl allocHead__12JKRAramBlockFUlUcP11JKRAramHeap
/* 802D30A4 002CFFE4 48 00 00 08 */ b lbl_802D30AC
lbl_802D30A8:
/* 802D30A8 002CFFE8 38 60 00 00 */ li r3, 0
lbl_802D30AC:
/* 802D30AC 002CFFEC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D30B0 002CFFF0 7C 08 03 A6 */ mtlr r0
/* 802D30B4 002CFFF4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D30B8 002CFFF8 4E 80 00 20 */ blr
@@ -1,38 +0,0 @@
/* allocFromTail__11JKRAramHeapFUl __ct__11JKRAramHeapFUlUl::allocFromTail(unsigned long) */
/* JKRAramHeap_NS_allocFromTail */
/* 802D30BC 002CFFFC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D30C0 002D0000 7C 08 02 A6 */ mflr r0
/* 802D30C4 002D0004 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D30C8 002D0008 7C 66 1B 78 */ mr r6, r3
/* 802D30CC 002D000C 38 04 00 1F */ addi r0, r4, 0x1f
/* 802D30D0 002D0010 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
/* 802D30D4 002D0014 38 60 00 00 */ li r3, 0
/* 802D30D8 002D0018 3C A0 80 43 */ lis r5, lbl_8043430C@ha
/* 802D30DC 002D001C 38 A5 43 0C */ addi r5, r5, lbl_8043430C@l
/* 802D30E0 002D0020 80 E5 00 04 */ lwz r7, 4(r5)
/* 802D30E4 002D0024 48 00 00 20 */ b lbl_802D3104
lbl_802D30E8:
/* 802D30E8 002D0028 80 A7 00 00 */ lwz r5, 0(r7)
/* 802D30EC 002D002C 80 05 00 1C */ lwz r0, 0x1c(r5)
/* 802D30F0 002D0030 7C 00 20 40 */ cmplw r0, r4
/* 802D30F4 002D0034 41 80 00 0C */ blt lbl_802D3100
/* 802D30F8 002D0038 7C A3 2B 78 */ mr r3, r5
/* 802D30FC 002D003C 48 00 00 10 */ b lbl_802D310C
lbl_802D3100:
/* 802D3100 002D0040 80 E7 00 08 */ lwz r7, 8(r7)
lbl_802D3104:
/* 802D3104 002D0044 28 07 00 00 */ cmplwi r7, 0
/* 802D3108 002D0048 40 82 FF E0 */ bne lbl_802D30E8
lbl_802D310C:
/* 802D310C 002D004C 28 03 00 00 */ cmplwi r3, 0
/* 802D3110 002D0050 41 82 00 10 */ beq lbl_802D3120
/* 802D3114 002D0054 88 A6 00 40 */ lbz r5, 0x40(r6)
/* 802D3118 002D0058 48 00 03 B9 */ bl allocTail__12JKRAramBlockFUlUcP11JKRAramHeap
/* 802D311C 002D005C 48 00 00 08 */ b lbl_802D3124
lbl_802D3120:
/* 802D3120 002D0060 38 60 00 00 */ li r3, 0
lbl_802D3124:
/* 802D3124 002D0064 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3128 002D0068 7C 08 03 A6 */ mtlr r0
/* 802D312C 002D006C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3130 002D0070 4E 80 00 20 */ blr
@@ -1,35 +0,0 @@
/* getFreeSize__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::getFreeSize(void) */
/* JKRAramHeap_NS_getFreeSize */
/* 802D3134 002D0074 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3138 002D0078 7C 08 02 A6 */ mflr r0
/* 802D313C 002D007C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3140 002D0080 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3144 002D0084 93 C1 00 08 */ stw r30, 8(r1)
/* 802D3148 002D0088 7C 7E 1B 78 */ mr r30, r3
/* 802D314C 002D008C 3B E0 00 00 */ li r31, 0
/* 802D3150 002D0090 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D3154 002D0094 48 06 BE ED */ bl OSLockMutex
/* 802D3158 002D0098 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D315C 002D009C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D3160 002D00A0 80 63 00 00 */ lwz r3, 0(r3)
/* 802D3164 002D00A4 48 00 00 1C */ b lbl_802D3180
lbl_802D3168:
/* 802D3168 002D00A8 80 83 00 00 */ lwz r4, 0(r3)
/* 802D316C 002D00AC 80 04 00 1C */ lwz r0, 0x1c(r4)
/* 802D3170 002D00B0 7C 00 F8 40 */ cmplw r0, r31
/* 802D3174 002D00B4 40 81 00 08 */ ble lbl_802D317C
/* 802D3178 002D00B8 7C 1F 03 78 */ mr r31, r0
lbl_802D317C:
/* 802D317C 002D00BC 80 63 00 0C */ lwz r3, 0xc(r3)
lbl_802D3180:
/* 802D3180 002D00C0 28 03 00 00 */ cmplwi r3, 0
/* 802D3184 002D00C4 40 82 FF E4 */ bne lbl_802D3168
/* 802D3188 002D00C8 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D318C 002D00CC 48 06 BF 91 */ bl OSUnlockMutex
/* 802D3190 002D00D0 7F E3 FB 78 */ mr r3, r31
/* 802D3194 002D00D4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3198 002D00D8 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D319C 002D00DC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D31A0 002D00E0 7C 08 03 A6 */ mtlr r0
/* 802D31A4 002D00E4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D31A8 002D00E8 4E 80 00 20 */ blr
@@ -1,31 +0,0 @@
/* getTotalFreeSize__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::getTotalFreeSize(void) */
/* JKRAramHeap_NS_getTotalFreeSize */
/* 802D31AC 002D00EC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D31B0 002D00F0 7C 08 02 A6 */ mflr r0
/* 802D31B4 002D00F4 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D31B8 002D00F8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D31BC 002D00FC 93 C1 00 08 */ stw r30, 8(r1)
/* 802D31C0 002D0100 7C 7E 1B 78 */ mr r30, r3
/* 802D31C4 002D0104 3B E0 00 00 */ li r31, 0
/* 802D31C8 002D0108 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D31CC 002D010C 48 06 BE 75 */ bl OSLockMutex
/* 802D31D0 002D0110 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D31D4 002D0114 80 83 43 0C */ lwz r4, lbl_8043430C@l(r3)
/* 802D31D8 002D0118 48 00 00 14 */ b lbl_802D31EC
lbl_802D31DC:
/* 802D31DC 002D011C 80 64 00 00 */ lwz r3, 0(r4)
/* 802D31E0 002D0120 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 802D31E4 002D0124 7F FF 02 14 */ add r31, r31, r0
/* 802D31E8 002D0128 80 84 00 0C */ lwz r4, 0xc(r4)
lbl_802D31EC:
/* 802D31EC 002D012C 28 04 00 00 */ cmplwi r4, 0
/* 802D31F0 002D0130 40 82 FF EC */ bne lbl_802D31DC
/* 802D31F4 002D0134 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D31F8 002D0138 48 06 BF 25 */ bl OSUnlockMutex
/* 802D31FC 002D013C 7F E3 FB 78 */ mr r3, r31
/* 802D3200 002D0140 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3204 002D0144 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D3208 002D0148 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D320C 002D014C 7C 08 03 A6 */ mtlr r0
/* 802D3210 002D0150 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3214 002D0154 4E 80 00 20 */ blr
@@ -1,25 +0,0 @@
/* dump__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::dump(void) */
/* JKRAramHeap_NS_dump */
/* 802D3218 002D0158 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D321C 002D015C 7C 08 02 A6 */ mflr r0
/* 802D3220 002D0160 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3224 002D0164 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3228 002D0168 7C 7F 1B 78 */ mr r31, r3
/* 802D322C 002D016C 38 7F 00 18 */ addi r3, r31, 0x18
/* 802D3230 002D0170 48 06 BE 11 */ bl OSLockMutex
/* 802D3234 002D0174 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D3238 002D0178 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D323C 002D017C 80 63 00 00 */ lwz r3, 0(r3)
/* 802D3240 002D0180 48 00 00 08 */ b lbl_802D3248
lbl_802D3244:
/* 802D3244 002D0184 80 63 00 0C */ lwz r3, 0xc(r3)
lbl_802D3248:
/* 802D3248 002D0188 28 03 00 00 */ cmplwi r3, 0
/* 802D324C 002D018C 40 82 FF F8 */ bne lbl_802D3244
/* 802D3250 002D0190 38 7F 00 18 */ addi r3, r31, 0x18
/* 802D3254 002D0194 48 06 BE C9 */ bl OSUnlockMutex
/* 802D3258 002D0198 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D325C 002D019C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3260 002D01A0 7C 08 03 A6 */ mtlr r0
/* 802D3264 002D01A4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3268 002D01A8 4E 80 00 20 */ blr
@@ -1,25 +1,65 @@
#ifndef __JKRARAMPIECE_H__
#define __JKRARAMPIECE_H__
#include "JSystem/JSupport/JSUList/JSUList.h"
#include "ar/ARQ.h"
#include "dolphin/types.h"
#include "os/OS.h"
class JKRAMCommand {
public:
JKRAMCommand(void);
~JKRAMCommand();
};
extern OSMutex lbl_80434330;
class JKRAramBlock;
class JKRDecompCommand;
class JKRAMCommand {
public:
typedef void (*AsyncCallback)(u32);
JKRAMCommand();
~JKRAMCommand();
public:
/* 0x00 */ ARQRequest mRequest;
/* 0x20 */ JSULink<JKRAMCommand> mPieceLink;
/* 0x30 */ JSULink<JKRAMCommand> field_0x30;
/* 0x40 */ s32 mTransferDirection;
/* 0x44 */ u32 mDataLength;
/* 0x48 */ u32 mSrc;
/* 0x4C */ u32 mDst;
/* 0x50 */ JKRAramBlock* mAramBlock;
/* 0x54 */ u32 field_0x54;
/* 0x58 */ AsyncCallback mCallback;
/* 0x5C */ OSMessageQueue* field_0x5C;
/* 0x60 */ s32 field_0x60;
/* 0x64 */ JKRDecompCommand* mDecompCommand;
/* 0x68 */ OSMessageQueue mMessageQueue;
/* 0x88 */ OSMessage mMessage;
/* 0x8C */ void* field_0x8C;
/* 0x90 */ void* field_0x90;
/* 0x94 */ void* field_0x94;
};
class JKRAramPiece {
public:
static void prepareCommand(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
struct Message {
s32 field_0x00;
JKRAMCommand* command;
};
public:
static JKRAMCommand* prepareCommand(int, u32, u32, u32, JKRAramBlock*,
JKRAMCommand::AsyncCallback);
static void sendCommand(JKRAMCommand*);
static void orderAsync(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
static void sync(JKRAMCommand*, int);
static void orderSync(int, u32, u32, u32, JKRAramBlock*);
static JKRAMCommand* orderAsync(int, u32, u32, u32, JKRAramBlock*, JKRAMCommand::AsyncCallback);
static BOOL sync(JKRAMCommand*, int);
static BOOL orderSync(int, u32, u32, u32, JKRAramBlock*);
static void startDMA(JKRAMCommand*);
static void doneDMA(u32);
private:
static void lock() { OSLockMutex(&lbl_80434330); }
static void unlock() { OSUnlockMutex(&lbl_80434330); }
};
#endif
@@ -1,35 +0,0 @@
/* prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v JKRAramPiece::prepareCommand(int, unsigned long, unsigned long, unsigned long, JKRAramBlock *, void (*)(unsigned long)) */
/* JKRAramPiece_NS_prepareCommand */
/* 802D3574 002D04B4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D3578 002D04B8 7C 08 02 A6 */ mflr r0
/* 802D357C 002D04BC 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D3580 002D04C0 39 61 00 20 */ addi r11, r1, 0x20
/* 802D3584 002D04C4 48 08 EC 4D */ bl _savegpr_26
/* 802D3588 002D04C8 7C 7A 1B 78 */ mr r26, r3
/* 802D358C 002D04CC 7C 9B 23 78 */ mr r27, r4
/* 802D3590 002D04D0 7C BC 2B 78 */ mr r28, r5
/* 802D3594 002D04D4 7C DD 33 78 */ mr r29, r6
/* 802D3598 002D04D8 7C FE 3B 78 */ mr r30, r7
/* 802D359C 002D04DC 7D 1F 43 78 */ mr r31, r8
/* 802D35A0 002D04E0 38 60 00 98 */ li r3, 0x98
/* 802D35A4 002D04E4 80 8D 8D F0 */ lwz r4, lbl_80451370-_SDA_BASE_(r13)
/* 802D35A8 002D04E8 38 A0 FF FC */ li r5, -4
/* 802D35AC 002D04EC 4B FF B6 ED */ bl __nw__FUlP7JKRHeapi
/* 802D35B0 002D04F0 7C 64 1B 79 */ or. r4, r3, r3
/* 802D35B4 002D04F4 41 82 00 0C */ beq lbl_802D35C0
/* 802D35B8 002D04F8 48 00 04 35 */ bl __ct__12JKRAMCommandFv
/* 802D35BC 002D04FC 7C 64 1B 78 */ mr r4, r3
lbl_802D35C0:
/* 802D35C0 002D0500 93 44 00 40 */ stw r26, 0x40(r4)
/* 802D35C4 002D0504 93 64 00 48 */ stw r27, 0x48(r4)
/* 802D35C8 002D0508 93 84 00 4C */ stw r28, 0x4c(r4)
/* 802D35CC 002D050C 93 C4 00 50 */ stw r30, 0x50(r4)
/* 802D35D0 002D0510 93 A4 00 44 */ stw r29, 0x44(r4)
/* 802D35D4 002D0514 93 E4 00 58 */ stw r31, 0x58(r4)
/* 802D35D8 002D0518 7C 83 23 78 */ mr r3, r4
/* 802D35DC 002D051C 39 61 00 20 */ addi r11, r1, 0x20
/* 802D35E0 002D0520 48 08 EC 3D */ bl _restgpr_26
/* 802D35E4 002D0524 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D35E8 002D0528 7C 08 03 A6 */ mtlr r0
/* 802D35EC 002D052C 38 21 00 20 */ addi r1, r1, 0x20
/* 802D35F0 002D0530 4E 80 00 20 */ blr
@@ -1,10 +0,0 @@
/* sendCommand__12JKRAramPieceFP12JKRAMCommand JKRAramPiece::sendCommand(JKRAMCommand *) */
/* JKRAramPiece_NS_sendCommand */
/* 802D35F4 002D0534 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D35F8 002D0538 7C 08 02 A6 */ mflr r0
/* 802D35FC 002D053C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3600 002D0540 48 00 02 CD */ bl startDMA__12JKRAramPieceFP12JKRAMCommand
/* 802D3604 002D0544 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3608 002D0548 7C 08 03 A6 */ mtlr r0
/* 802D360C 002D054C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3610 002D0550 4E 80 00 20 */ blr
@@ -1,55 +0,0 @@
/* sync__12JKRAramPieceFP12JKRAMCommandi JKRAramPiece::sync(JKRAMCommand *, int) */
/* JKRAramPiece_NS_sync */
/* 802D3770 002D06B0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D3774 002D06B4 7C 08 02 A6 */ mflr r0
/* 802D3778 002D06B8 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D377C 002D06BC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802D3780 002D06C0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802D3784 002D06C4 7C 7E 1B 78 */ mr r30, r3
/* 802D3788 002D06C8 7C 9F 23 78 */ mr r31, r4
/* 802D378C 002D06CC 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D3790 002D06D0 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D3794 002D06D4 48 06 B8 AD */ bl OSLockMutex
/* 802D3798 002D06D8 2C 1F 00 00 */ cmpwi r31, 0
/* 802D379C 002D06DC 40 82 00 38 */ bne lbl_802D37D4
/* 802D37A0 002D06E0 38 7E 00 68 */ addi r3, r30, 0x68
/* 802D37A4 002D06E4 38 81 00 08 */ addi r4, r1, 8
/* 802D37A8 002D06E8 38 A0 00 01 */ li r5, 1
/* 802D37AC 002D06EC 48 06 B3 11 */ bl OSReceiveMessage
/* 802D37B0 002D06F0 3C 60 80 43 */ lis r3, lbl_80434324@ha
/* 802D37B4 002D06F4 38 63 43 24 */ addi r3, r3, lbl_80434324@l
/* 802D37B8 002D06F8 38 9E 00 20 */ addi r4, r30, 0x20
/* 802D37BC 002D06FC 48 00 89 A1 */ bl remove__10JSUPtrListFP10JSUPtrLink
/* 802D37C0 002D0700 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D37C4 002D0704 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D37C8 002D0708 48 06 B9 55 */ bl OSUnlockMutex
/* 802D37CC 002D070C 38 60 00 01 */ li r3, 1
/* 802D37D0 002D0710 48 00 00 50 */ b lbl_802D3820
lbl_802D37D4:
/* 802D37D4 002D0714 38 7E 00 68 */ addi r3, r30, 0x68
/* 802D37D8 002D0718 38 81 00 08 */ addi r4, r1, 8
/* 802D37DC 002D071C 38 A0 00 00 */ li r5, 0
/* 802D37E0 002D0720 48 06 B2 DD */ bl OSReceiveMessage
/* 802D37E4 002D0724 2C 03 00 00 */ cmpwi r3, 0
/* 802D37E8 002D0728 40 82 00 18 */ bne lbl_802D3800
/* 802D37EC 002D072C 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D37F0 002D0730 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D37F4 002D0734 48 06 B9 29 */ bl OSUnlockMutex
/* 802D37F8 002D0738 38 60 00 00 */ li r3, 0
/* 802D37FC 002D073C 48 00 00 24 */ b lbl_802D3820
lbl_802D3800:
/* 802D3800 002D0740 3C 60 80 43 */ lis r3, lbl_80434324@ha
/* 802D3804 002D0744 38 63 43 24 */ addi r3, r3, lbl_80434324@l
/* 802D3808 002D0748 38 9E 00 20 */ addi r4, r30, 0x20
/* 802D380C 002D074C 48 00 89 51 */ bl remove__10JSUPtrListFP10JSUPtrLink
/* 802D3810 002D0750 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D3814 002D0754 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D3818 002D0758 48 06 B9 05 */ bl OSUnlockMutex
/* 802D381C 002D075C 38 60 00 01 */ li r3, 1
lbl_802D3820:
/* 802D3820 002D0760 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802D3824 002D0764 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802D3828 002D0768 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D382C 002D076C 7C 08 03 A6 */ mtlr r0
/* 802D3830 002D0770 38 21 00 20 */ addi r1, r1, 0x20
/* 802D3834 002D0774 4E 80 00 20 */ blr
@@ -1,39 +0,0 @@
/* orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock JKRAramPiece::orderSync(int, unsigned long, unsigned long, unsigned long, JKRAramBlock *) */
/* JKRAramPiece_NS_orderSync */
/* 802D3838 002D0778 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D383C 002D077C 7C 08 02 A6 */ mflr r0
/* 802D3840 002D0780 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D3844 002D0784 39 61 00 20 */ addi r11, r1, 0x20
/* 802D3848 002D0788 48 08 E9 8D */ bl _savegpr_27
/* 802D384C 002D078C 7C 7B 1B 78 */ mr r27, r3
/* 802D3850 002D0790 7C 9C 23 78 */ mr r28, r4
/* 802D3854 002D0794 7C BD 2B 78 */ mr r29, r5
/* 802D3858 002D0798 7C DF 33 78 */ mr r31, r6
/* 802D385C 002D079C 7C FE 3B 78 */ mr r30, r7
/* 802D3860 002D07A0 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D3864 002D07A4 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D3868 002D07A8 48 06 B7 D9 */ bl OSLockMutex
/* 802D386C 002D07AC 7F 63 DB 78 */ mr r3, r27
/* 802D3870 002D07B0 7F 84 E3 78 */ mr r4, r28
/* 802D3874 002D07B4 7F A5 EB 78 */ mr r5, r29
/* 802D3878 002D07B8 7F E6 FB 78 */ mr r6, r31
/* 802D387C 002D07BC 7F C7 F3 78 */ mr r7, r30
/* 802D3880 002D07C0 39 00 00 00 */ li r8, 0
/* 802D3884 002D07C4 4B FF FD 91 */ bl orderAsync__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v
/* 802D3888 002D07C8 7C 7F 1B 78 */ mr r31, r3
/* 802D388C 002D07CC 38 80 00 00 */ li r4, 0
/* 802D3890 002D07D0 4B FF FE E1 */ bl sync__12JKRAramPieceFP12JKRAMCommandi
/* 802D3894 002D07D4 7C 7E 1B 78 */ mr r30, r3
/* 802D3898 002D07D8 7F E3 FB 78 */ mr r3, r31
/* 802D389C 002D07DC 38 80 00 01 */ li r4, 1
/* 802D38A0 002D07E0 48 00 01 BD */ bl __dt__12JKRAMCommandFv
/* 802D38A4 002D07E4 3C 60 80 43 */ lis r3, lbl_80434330@ha
/* 802D38A8 002D07E8 38 63 43 30 */ addi r3, r3, lbl_80434330@l
/* 802D38AC 002D07EC 48 06 B8 71 */ bl OSUnlockMutex
/* 802D38B0 002D07F0 7F C3 F3 78 */ mr r3, r30
/* 802D38B4 002D07F4 39 61 00 20 */ addi r11, r1, 0x20
/* 802D38B8 002D07F8 48 08 E9 69 */ bl _restgpr_27
/* 802D38BC 002D07FC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D38C0 002D0800 7C 08 03 A6 */ mtlr r0
/* 802D38C4 002D0804 38 21 00 20 */ addi r1, r1, 0x20
/* 802D38C8 002D0808 4E 80 00 20 */ blr
@@ -1,34 +0,0 @@
/* startDMA__12JKRAramPieceFP12JKRAMCommand JKRAramPiece::startDMA(JKRAMCommand *) */
/* JKRAramPiece_NS_startDMA */
/* 802D38CC 002D080C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D38D0 002D0810 7C 08 02 A6 */ mflr r0
/* 802D38D4 002D0814 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D38D8 002D0818 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D38DC 002D081C 7C 7F 1B 78 */ mr r31, r3
/* 802D38E0 002D0820 80 03 00 40 */ lwz r0, 0x40(r3)
/* 802D38E4 002D0824 2C 00 00 01 */ cmpwi r0, 1
/* 802D38E8 002D0828 40 82 00 14 */ bne lbl_802D38FC
/* 802D38EC 002D082C 80 7F 00 4C */ lwz r3, 0x4c(r31)
/* 802D38F0 002D0830 80 9F 00 44 */ lwz r4, 0x44(r31)
/* 802D38F4 002D0834 48 06 7C 8D */ bl DCInvalidateRange
/* 802D38F8 002D0838 48 00 00 10 */ b lbl_802D3908
lbl_802D38FC:
/* 802D38FC 002D083C 80 7F 00 48 */ lwz r3, 0x48(r31)
/* 802D3900 002D0840 80 9F 00 44 */ lwz r4, 0x44(r31)
/* 802D3904 002D0844 48 06 7C D9 */ bl DCStoreRange
lbl_802D3908:
/* 802D3908 002D0848 7F E3 FB 78 */ mr r3, r31
/* 802D390C 002D084C 38 80 00 00 */ li r4, 0
/* 802D3910 002D0850 80 BF 00 40 */ lwz r5, 0x40(r31)
/* 802D3914 002D0854 38 C0 00 00 */ li r6, 0
/* 802D3918 002D0858 80 FF 00 48 */ lwz r7, 0x48(r31)
/* 802D391C 002D085C 81 1F 00 4C */ lwz r8, 0x4c(r31)
/* 802D3920 002D0860 81 3F 00 44 */ lwz r9, 0x44(r31)
/* 802D3924 002D0864 3D 40 80 2D */ lis r10, doneDMA__12JKRAramPieceFUl@ha
/* 802D3928 002D0868 39 4A 39 44 */ addi r10, r10, doneDMA__12JKRAramPieceFUl@l
/* 802D392C 002D086C 48 07 E9 A9 */ bl ARQPostRequest
/* 802D3930 002D0870 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3934 002D0874 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3938 002D0878 7C 08 03 A6 */ mtlr r0
/* 802D393C 002D087C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3940 002D0880 4E 80 00 20 */ blr
@@ -1,49 +0,0 @@
/* doneDMA__12JKRAramPieceFUl JKRAramPiece::doneDMA(unsigned long) */
/* JKRAramPiece_NS_doneDMA */
/* 802D3944 002D0884 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3948 002D0888 7C 08 02 A6 */ mflr r0
/* 802D394C 002D088C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3950 002D0890 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3954 002D0894 7C 7F 1B 78 */ mr r31, r3
/* 802D3958 002D0898 80 03 00 40 */ lwz r0, 0x40(r3)
/* 802D395C 002D089C 2C 00 00 01 */ cmpwi r0, 1
/* 802D3960 002D08A0 40 82 00 10 */ bne lbl_802D3970
/* 802D3964 002D08A4 80 7F 00 4C */ lwz r3, 0x4c(r31)
/* 802D3968 002D08A8 80 9F 00 44 */ lwz r4, 0x44(r31)
/* 802D396C 002D08AC 48 06 7C 15 */ bl DCInvalidateRange
lbl_802D3970:
/* 802D3970 002D08B0 80 1F 00 60 */ lwz r0, 0x60(r31)
/* 802D3974 002D08B4 2C 00 00 00 */ cmpwi r0, 0
/* 802D3978 002D08B8 41 82 00 18 */ beq lbl_802D3990
/* 802D397C 002D08BC 2C 00 00 02 */ cmpwi r0, 2
/* 802D3980 002D08C0 40 82 00 58 */ bne lbl_802D39D8
/* 802D3984 002D08C4 80 7F 00 64 */ lwz r3, 0x64(r31)
/* 802D3988 002D08C8 48 00 7F 49 */ bl sendCommand__9JKRDecompFP16JKRDecompCommand
/* 802D398C 002D08CC 48 00 00 4C */ b lbl_802D39D8
lbl_802D3990:
/* 802D3990 002D08D0 81 9F 00 58 */ lwz r12, 0x58(r31)
/* 802D3994 002D08D4 28 0C 00 00 */ cmplwi r12, 0
/* 802D3998 002D08D8 41 82 00 14 */ beq lbl_802D39AC
/* 802D399C 002D08DC 7F E3 FB 78 */ mr r3, r31
/* 802D39A0 002D08E0 7D 89 03 A6 */ mtctr r12
/* 802D39A4 002D08E4 4E 80 04 21 */ bctrl
/* 802D39A8 002D08E8 48 00 00 30 */ b lbl_802D39D8
lbl_802D39AC:
/* 802D39AC 002D08EC 80 7F 00 5C */ lwz r3, 0x5c(r31)
/* 802D39B0 002D08F0 28 03 00 00 */ cmplwi r3, 0
/* 802D39B4 002D08F4 41 82 00 14 */ beq lbl_802D39C8
/* 802D39B8 002D08F8 7F E4 FB 78 */ mr r4, r31
/* 802D39BC 002D08FC 38 A0 00 00 */ li r5, 0
/* 802D39C0 002D0900 48 06 B0 35 */ bl OSSendMessage
/* 802D39C4 002D0904 48 00 00 14 */ b lbl_802D39D8
lbl_802D39C8:
/* 802D39C8 002D0908 38 7F 00 68 */ addi r3, r31, 0x68
/* 802D39CC 002D090C 7F E4 FB 78 */ mr r4, r31
/* 802D39D0 002D0910 38 A0 00 00 */ li r5, 0
/* 802D39D4 002D0914 48 06 B0 21 */ bl OSSendMessage
lbl_802D39D8:
/* 802D39D8 002D0918 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D39DC 002D091C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D39E0 002D0920 7C 08 03 A6 */ mtlr r0
/* 802D39E4 002D0924 38 21 00 10 */ addi r1, r1, 0x10
/* 802D39E8 002D0928 4E 80 00 20 */ blr
@@ -1,30 +0,0 @@
/* __ct__12JKRAMCommandFv __ct__12JKRAMCommandFv::__ct(void) */
/* JKRAMCommand */
/* 802D39EC 002D092C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D39F0 002D0930 7C 08 02 A6 */ mflr r0
/* 802D39F4 002D0934 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D39F8 002D0938 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D39FC 002D093C 7C 7F 1B 78 */ mr r31, r3
/* 802D3A00 002D0940 7F E4 FB 78 */ mr r4, r31
/* 802D3A04 002D0944 38 64 00 20 */ addi r3, r4, 0x20
/* 802D3A08 002D0948 48 00 83 F5 */ bl __ct__10JSUPtrLinkFPv
/* 802D3A0C 002D094C 38 7F 00 30 */ addi r3, r31, 0x30
/* 802D3A10 002D0950 7F E4 FB 78 */ mr r4, r31
/* 802D3A14 002D0954 48 00 83 E9 */ bl __ct__10JSUPtrLinkFPv
/* 802D3A18 002D0958 38 7F 00 68 */ addi r3, r31, 0x68
/* 802D3A1C 002D095C 38 9F 00 88 */ addi r4, r31, 0x88
/* 802D3A20 002D0960 38 A0 00 01 */ li r5, 1
/* 802D3A24 002D0964 48 06 AF 71 */ bl OSInitMessageQueue
/* 802D3A28 002D0968 38 00 00 00 */ li r0, 0
/* 802D3A2C 002D096C 90 1F 00 58 */ stw r0, 0x58(r31)
/* 802D3A30 002D0970 90 1F 00 5C */ stw r0, 0x5c(r31)
/* 802D3A34 002D0974 90 1F 00 60 */ stw r0, 0x60(r31)
/* 802D3A38 002D0978 90 1F 00 8C */ stw r0, 0x8c(r31)
/* 802D3A3C 002D097C 90 1F 00 90 */ stw r0, 0x90(r31)
/* 802D3A40 002D0980 90 1F 00 94 */ stw r0, 0x94(r31)
/* 802D3A44 002D0984 7F E3 FB 78 */ mr r3, r31
/* 802D3A48 002D0988 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3A4C 002D098C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3A50 002D0990 7C 08 03 A6 */ mtlr r0
/* 802D3A54 002D0994 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3A58 002D0998 4E 80 00 20 */ blr
@@ -1,50 +0,0 @@
/* __dt__12JKRAMCommandFv __ct__12JKRAMCommandFv::__dt(void) */
/* JKRAMCommand_NS_dtor */
/* 802D3A5C 002D099C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3A60 002D09A0 7C 08 02 A6 */ mflr r0
/* 802D3A64 002D09A4 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3A68 002D09A8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3A6C 002D09AC 93 C1 00 08 */ stw r30, 8(r1)
/* 802D3A70 002D09B0 7C 7E 1B 79 */ or. r30, r3, r3
/* 802D3A74 002D09B4 7C 9F 23 78 */ mr r31, r4
/* 802D3A78 002D09B8 41 82 00 70 */ beq lbl_802D3AE8
/* 802D3A7C 002D09BC 80 7E 00 8C */ lwz r3, 0x8c(r30)
/* 802D3A80 002D09C0 28 03 00 00 */ cmplwi r3, 0
/* 802D3A84 002D09C4 41 82 00 08 */ beq lbl_802D3A8C
/* 802D3A88 002D09C8 4B FF B2 B5 */ bl __dl__FPv
lbl_802D3A8C:
/* 802D3A8C 002D09CC 80 7E 00 90 */ lwz r3, 0x90(r30)
/* 802D3A90 002D09D0 28 03 00 00 */ cmplwi r3, 0
/* 802D3A94 002D09D4 41 82 00 08 */ beq lbl_802D3A9C
/* 802D3A98 002D09D8 4B FF B2 A5 */ bl __dl__FPv
lbl_802D3A9C:
/* 802D3A9C 002D09DC 80 7E 00 94 */ lwz r3, 0x94(r30)
/* 802D3AA0 002D09E0 28 03 00 00 */ cmplwi r3, 0
/* 802D3AA4 002D09E4 41 82 00 0C */ beq lbl_802D3AB0
/* 802D3AA8 002D09E8 38 80 00 00 */ li r4, 0
/* 802D3AAC 002D09EC 4B FF AA 55 */ bl free__7JKRHeapFPvP7JKRHeap
lbl_802D3AB0:
/* 802D3AB0 002D09F0 34 1E 00 30 */ addic. r0, r30, 0x30
/* 802D3AB4 002D09F4 41 82 00 10 */ beq lbl_802D3AC4
/* 802D3AB8 002D09F8 38 7E 00 30 */ addi r3, r30, 0x30
/* 802D3ABC 002D09FC 38 80 00 00 */ li r4, 0
/* 802D3AC0 002D0A00 48 00 83 55 */ bl __dt__10JSUPtrLinkFv
lbl_802D3AC4:
/* 802D3AC4 002D0A04 34 1E 00 20 */ addic. r0, r30, 0x20
/* 802D3AC8 002D0A08 41 82 00 10 */ beq lbl_802D3AD8
/* 802D3ACC 002D0A0C 38 7E 00 20 */ addi r3, r30, 0x20
/* 802D3AD0 002D0A10 38 80 00 00 */ li r4, 0
/* 802D3AD4 002D0A14 48 00 83 41 */ bl __dt__10JSUPtrLinkFv
lbl_802D3AD8:
/* 802D3AD8 002D0A18 7F E0 07 35 */ extsh. r0, r31
/* 802D3ADC 002D0A1C 40 81 00 0C */ ble lbl_802D3AE8
/* 802D3AE0 002D0A20 7F C3 F3 78 */ mr r3, r30
/* 802D3AE4 002D0A24 4B FF B2 59 */ bl __dl__FPv
lbl_802D3AE8:
/* 802D3AE8 002D0A28 7F C3 F3 78 */ mr r3, r30
/* 802D3AEC 002D0A2C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3AF0 002D0A30 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D3AF4 002D0A34 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3AF8 002D0A38 7C 08 03 A6 */ mtlr r0
/* 802D3AFC 002D0A3C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3B00 002D0A40 4E 80 00 20 */ blr
@@ -135,6 +135,17 @@ public:
return *this;
}
JSUListIterator<T> operator--(int) {
JSUListIterator<T> prev = *this;
this->mLink = this->mLink->getPrev();
return prev;
}
JSUListIterator<T>& operator--() {
this->mLink = this->mLink->getPrev();
return *this;
}
T& operator*() { return *this->getObject(); }
T* operator->() { return this->getObject(); }