donut-decomp/asm/exi/EXICommon.s
2022-10-17 09:04:36 +01:00

127 lines
5.5 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 0x80006A00 - 0x80406260 ; 0x003FF860
.global EXIWriteReg
EXIWriteReg:
/* 8002A230 00026070 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8002A234 00026074 7C 08 02 A6 */ mflr r0
/* 8002A238 00026078 2C 07 00 01 */ cmpwi r7, 0x1
/* 8002A23C 0002607C 90 01 00 24 */ stw r0, 0x24(r1)
/* 8002A240 00026080 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8002A244 00026084 7C 7F 1B 78 */ mr r31, r3
/* 8002A248 00026088 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8002A24C 0002608C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8002A250 00026090 7C 9D 23 78 */ mr r29, r4
/* 8002A254 00026094 90 A1 00 08 */ stw r5, 0x8(r1)
/* 8002A258 00026098 41 82 00 10 */ beq lbl_8002A268
/* 8002A25C 0002609C 2C 07 00 02 */ cmpwi r7, 0x2
/* 8002A260 000260A0 41 82 00 18 */ beq lbl_8002A278
/* 8002A264 000260A4 48 00 00 28 */ b lbl_8002A28C
.global lbl_8002A268
lbl_8002A268:
/* 8002A268 000260A8 88 06 00 00 */ lbz r0, 0x0(r6)
/* 8002A26C 000260AC 54 00 C0 0E */ slwi r0, r0, 24
/* 8002A270 000260B0 90 01 00 0C */ stw r0, 0xc(r1)
/* 8002A274 000260B4 48 00 00 34 */ b lbl_8002A2A8
.global lbl_8002A278
lbl_8002A278:
/* 8002A278 000260B8 A0 66 00 00 */ lhz r3, 0x0(r6)
/* 8002A27C 000260BC 54 60 42 1E */ rlwinm r0, r3, 8, 8, 15
/* 8002A280 000260C0 50 60 C0 0E */ rlwimi r0, r3, 24, 0, 7
/* 8002A284 000260C4 90 01 00 0C */ stw r0, 0xc(r1)
/* 8002A288 000260C8 48 00 00 20 */ b lbl_8002A2A8
.global lbl_8002A28C
lbl_8002A28C:
/* 8002A28C 000260CC 80 86 00 00 */ lwz r4, 0x0(r6)
/* 8002A290 000260D0 54 83 42 1E */ rlwinm r3, r4, 8, 8, 15
/* 8002A294 000260D4 54 80 C4 2E */ rlwinm r0, r4, 24, 16, 23
/* 8002A298 000260D8 50 83 C0 0E */ rlwimi r3, r4, 24, 0, 7
/* 8002A29C 000260DC 50 80 46 3E */ rlwimi r0, r4, 8, 24, 31
/* 8002A2A0 000260E0 7C 60 03 78 */ or r0, r3, r0
/* 8002A2A4 000260E4 90 01 00 0C */ stw r0, 0xc(r1)
.global lbl_8002A2A8
lbl_8002A2A8:
/* 8002A2A8 000260E8 7F E3 FB 78 */ mr r3, r31
/* 8002A2AC 000260EC 7F A4 EB 78 */ mr r4, r29
/* 8002A2B0 000260F0 38 A0 00 00 */ li r5, 0x0
/* 8002A2B4 000260F4 4B FF F6 7D */ bl EXILock
/* 8002A2B8 000260F8 7C 60 00 34 */ cntlzw r0, r3
/* 8002A2BC 000260FC 54 1E D9 7F */ srwi. r30, r0, 5
/* 8002A2C0 00026100 41 82 00 0C */ beq lbl_8002A2CC
/* 8002A2C4 00026104 38 60 00 00 */ li r3, 0x0
/* 8002A2C8 00026108 48 00 00 D4 */ b lbl_8002A39C
.global lbl_8002A2CC
lbl_8002A2CC:
/* 8002A2CC 0002610C 7F E3 FB 78 */ mr r3, r31
/* 8002A2D0 00026110 7F A4 EB 78 */ mr r4, r29
/* 8002A2D4 00026114 38 A0 00 04 */ li r5, 0x4
/* 8002A2D8 00026118 4B FF EE A9 */ bl EXISelect
/* 8002A2DC 0002611C 7C 60 00 34 */ cntlzw r0, r3
/* 8002A2E0 00026120 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A2E4 00026124 7F DE 03 79 */ or. r30, r30, r0
/* 8002A2E8 00026128 41 82 00 14 */ beq lbl_8002A2FC
/* 8002A2EC 0002612C 7F E3 FB 78 */ mr r3, r31
/* 8002A2F0 00026130 4B FF F7 41 */ bl EXIUnlock
/* 8002A2F4 00026134 38 60 00 00 */ li r3, 0x0
/* 8002A2F8 00026138 48 00 00 A4 */ b lbl_8002A39C
.global lbl_8002A2FC
lbl_8002A2FC:
/* 8002A2FC 0002613C 7F E3 FB 78 */ mr r3, r31
/* 8002A300 00026140 38 81 00 08 */ addi r4, r1, 0x8
/* 8002A304 00026144 38 A0 00 04 */ li r5, 0x4
/* 8002A308 00026148 38 C0 00 01 */ li r6, 0x1
/* 8002A30C 0002614C 38 E0 00 00 */ li r7, 0x0
/* 8002A310 00026150 4B FF E3 D1 */ bl EXIImm
/* 8002A314 00026154 7C 60 00 34 */ cntlzw r0, r3
/* 8002A318 00026158 7F E3 FB 78 */ mr r3, r31
/* 8002A31C 0002615C 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A320 00026160 7F DE 03 78 */ or r30, r30, r0
/* 8002A324 00026164 4B FF E7 ED */ bl EXISync
/* 8002A328 00026168 7C 60 00 34 */ cntlzw r0, r3
/* 8002A32C 0002616C 7F E3 FB 78 */ mr r3, r31
/* 8002A330 00026170 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A334 00026174 38 81 00 0C */ addi r4, r1, 0xc
/* 8002A338 00026178 7F DE 03 78 */ or r30, r30, r0
/* 8002A33C 0002617C 38 A0 00 04 */ li r5, 0x4
/* 8002A340 00026180 38 C0 00 01 */ li r6, 0x1
/* 8002A344 00026184 38 E0 00 00 */ li r7, 0x0
/* 8002A348 00026188 4B FF E3 99 */ bl EXIImm
/* 8002A34C 0002618C 7C 60 00 34 */ cntlzw r0, r3
/* 8002A350 00026190 7F E3 FB 78 */ mr r3, r31
/* 8002A354 00026194 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A358 00026198 7F DE 03 78 */ or r30, r30, r0
/* 8002A35C 0002619C 4B FF E7 B5 */ bl EXISync
/* 8002A360 000261A0 7C 60 00 34 */ cntlzw r0, r3
/* 8002A364 000261A4 7F E3 FB 78 */ mr r3, r31
/* 8002A368 000261A8 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A36C 000261AC 7F DE 03 78 */ or r30, r30, r0
/* 8002A370 000261B0 4B FF EF 41 */ bl EXIDeselect
/* 8002A374 000261B4 7C 60 00 34 */ cntlzw r0, r3
/* 8002A378 000261B8 7F E3 FB 78 */ mr r3, r31
/* 8002A37C 000261BC 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A380 000261C0 7F DE 03 78 */ or r30, r30, r0
/* 8002A384 000261C4 4B FF F6 AD */ bl EXIUnlock
/* 8002A388 000261C8 7C 60 00 34 */ cntlzw r0, r3
/* 8002A38C 000261CC 54 00 D9 7E */ srwi r0, r0, 5
/* 8002A390 000261D0 7F DE 03 78 */ or r30, r30, r0
/* 8002A394 000261D4 7F C0 00 34 */ cntlzw r0, r30
/* 8002A398 000261D8 54 03 D9 7E */ srwi r3, r0, 5
.global lbl_8002A39C
lbl_8002A39C:
/* 8002A39C 000261DC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8002A3A0 000261E0 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8002A3A4 000261E4 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8002A3A8 000261E8 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8002A3AC 000261EC 7C 08 03 A6 */ mtlr r0
/* 8002A3B0 000261F0 38 21 00 20 */ addi r1, r1, 0x20
/* 8002A3B4 000261F4 4E 80 00 20 */ blr
/* 8002A3B8 000261F8 00 00 00 00 */ .4byte 0x00000000
/* 8002A3BC 000261FC 00 00 00 00 */ .4byte 0x00000000
.include "macros.inc"
.section .sdata2, "wa" # 0x8055DF80 - 0x805643C0 ; 0x00006440
.global __EXIFreq
__EXIFreq:
.4byte 0x00000004
.4byte 0