pikmin2/asm/Dolphin/CircleBuffer.s
EpochFlame 75c3292df0 reduce label emissions
linkmap goes faster now
2022-11-03 17:02:42 -04:00

179 lines
8.3 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 0x800056C0 - 0x80472F00
.global CircleBufferReadBytes
CircleBufferReadBytes:
/* 800C0F94 000BDED4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800C0F98 000BDED8 7C 08 02 A6 */ mflr r0
/* 800C0F9C 000BDEDC 90 01 00 24 */ stw r0, 0x24(r1)
/* 800C0FA0 000BDEE0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800C0FA4 000BDEE4 7C BF 2B 78 */ mr r31, r5
/* 800C0FA8 000BDEE8 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800C0FAC 000BDEEC 7C 7E 1B 78 */ mr r30, r3
/* 800C0FB0 000BDEF0 93 A1 00 14 */ stw r29, 0x14(r1)
/* 800C0FB4 000BDEF4 93 81 00 10 */ stw r28, 0x10(r1)
/* 800C0FB8 000BDEF8 7C 9C 23 78 */ mr r28, r4
/* 800C0FBC 000BDEFC 80 03 00 10 */ lwz r0, 0x10(r3)
/* 800C0FC0 000BDF00 7C 1F 00 40 */ cmplw r31, r0
/* 800C0FC4 000BDF04 40 81 00 0C */ ble .L_800C0FD0
/* 800C0FC8 000BDF08 38 60 FF FF */ li r3, -1
/* 800C0FCC 000BDF0C 48 00 00 B0 */ b .L_800C107C
.L_800C0FD0:
/* 800C0FD0 000BDF10 38 7E 00 18 */ addi r3, r30, 0x18
/* 800C0FD4 000BDF14 48 00 05 E9 */ bl MWEnterCriticalSection
/* 800C0FD8 000BDF18 80 7E 00 08 */ lwz r3, 8(r30)
/* 800C0FDC 000BDF1C 80 9E 00 00 */ lwz r4, 0(r30)
/* 800C0FE0 000BDF20 80 1E 00 0C */ lwz r0, 0xc(r30)
/* 800C0FE4 000BDF24 7C 63 20 50 */ subf r3, r3, r4
/* 800C0FE8 000BDF28 7F A3 00 50 */ subf r29, r3, r0
/* 800C0FEC 000BDF2C 7C 1F E8 40 */ cmplw r31, r29
/* 800C0FF0 000BDF30 40 80 00 20 */ bge .L_800C1010
/* 800C0FF4 000BDF34 7F 83 E3 78 */ mr r3, r28
/* 800C0FF8 000BDF38 7F E5 FB 78 */ mr r5, r31
/* 800C0FFC 000BDF3C 4B F4 41 A1 */ bl memcpy
/* 800C1000 000BDF40 80 1E 00 00 */ lwz r0, 0(r30)
/* 800C1004 000BDF44 7C 00 FA 14 */ add r0, r0, r31
/* 800C1008 000BDF48 90 1E 00 00 */ stw r0, 0(r30)
/* 800C100C 000BDF4C 48 00 00 30 */ b .L_800C103C
.L_800C1010:
/* 800C1010 000BDF50 7F 83 E3 78 */ mr r3, r28
/* 800C1014 000BDF54 7F A5 EB 78 */ mr r5, r29
/* 800C1018 000BDF58 4B F4 41 85 */ bl memcpy
/* 800C101C 000BDF5C 80 9E 00 08 */ lwz r4, 8(r30)
/* 800C1020 000BDF60 7C 7C EA 14 */ add r3, r28, r29
/* 800C1024 000BDF64 7C BD F8 50 */ subf r5, r29, r31
/* 800C1028 000BDF68 4B F4 41 75 */ bl memcpy
/* 800C102C 000BDF6C 80 1E 00 08 */ lwz r0, 8(r30)
/* 800C1030 000BDF70 7C 00 FA 14 */ add r0, r0, r31
/* 800C1034 000BDF74 7C 1D 00 50 */ subf r0, r29, r0
/* 800C1038 000BDF78 90 1E 00 00 */ stw r0, 0(r30)
.L_800C103C:
/* 800C103C 000BDF7C 80 9E 00 08 */ lwz r4, 8(r30)
/* 800C1040 000BDF80 80 1E 00 00 */ lwz r0, 0(r30)
/* 800C1044 000BDF84 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 800C1048 000BDF88 7C 04 00 50 */ subf r0, r4, r0
/* 800C104C 000BDF8C 7C 03 00 40 */ cmplw r3, r0
/* 800C1050 000BDF90 40 82 00 08 */ bne .L_800C1058
/* 800C1054 000BDF94 90 9E 00 00 */ stw r4, 0(r30)
.L_800C1058:
/* 800C1058 000BDF98 80 1E 00 14 */ lwz r0, 0x14(r30)
/* 800C105C 000BDF9C 38 7E 00 18 */ addi r3, r30, 0x18
/* 800C1060 000BDFA0 7C 00 FA 14 */ add r0, r0, r31
/* 800C1064 000BDFA4 90 1E 00 14 */ stw r0, 0x14(r30)
/* 800C1068 000BDFA8 80 1E 00 10 */ lwz r0, 0x10(r30)
/* 800C106C 000BDFAC 7C 1F 00 50 */ subf r0, r31, r0
/* 800C1070 000BDFB0 90 1E 00 10 */ stw r0, 0x10(r30)
/* 800C1074 000BDFB4 48 00 05 25 */ bl MWExitCriticalSection
/* 800C1078 000BDFB8 38 60 00 00 */ li r3, 0
.L_800C107C:
/* 800C107C 000BDFBC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800C1080 000BDFC0 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800C1084 000BDFC4 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800C1088 000BDFC8 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 800C108C 000BDFCC 83 81 00 10 */ lwz r28, 0x10(r1)
/* 800C1090 000BDFD0 7C 08 03 A6 */ mtlr r0
/* 800C1094 000BDFD4 38 21 00 20 */ addi r1, r1, 0x20
/* 800C1098 000BDFD8 4E 80 00 20 */ blr
.global CircleBufferWriteBytes
CircleBufferWriteBytes:
/* 800C109C 000BDFDC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800C10A0 000BDFE0 7C 08 02 A6 */ mflr r0
/* 800C10A4 000BDFE4 90 01 00 24 */ stw r0, 0x24(r1)
/* 800C10A8 000BDFE8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800C10AC 000BDFEC 7C BF 2B 78 */ mr r31, r5
/* 800C10B0 000BDFF0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800C10B4 000BDFF4 7C 7E 1B 78 */ mr r30, r3
/* 800C10B8 000BDFF8 93 A1 00 14 */ stw r29, 0x14(r1)
/* 800C10BC 000BDFFC 93 81 00 10 */ stw r28, 0x10(r1)
/* 800C10C0 000BE000 7C 9C 23 78 */ mr r28, r4
/* 800C10C4 000BE004 80 03 00 14 */ lwz r0, 0x14(r3)
/* 800C10C8 000BE008 7C 1F 00 40 */ cmplw r31, r0
/* 800C10CC 000BE00C 40 81 00 0C */ ble .L_800C10D8
/* 800C10D0 000BE010 38 60 FF FF */ li r3, -1
/* 800C10D4 000BE014 48 00 00 B0 */ b .L_800C1184
.L_800C10D8:
/* 800C10D8 000BE018 38 7E 00 18 */ addi r3, r30, 0x18
/* 800C10DC 000BE01C 48 00 04 E1 */ bl MWEnterCriticalSection
/* 800C10E0 000BE020 80 9E 00 08 */ lwz r4, 8(r30)
/* 800C10E4 000BE024 80 7E 00 04 */ lwz r3, 4(r30)
/* 800C10E8 000BE028 80 1E 00 0C */ lwz r0, 0xc(r30)
/* 800C10EC 000BE02C 7C 84 18 50 */ subf r4, r4, r3
/* 800C10F0 000BE030 7F A4 00 50 */ subf r29, r4, r0
/* 800C10F4 000BE034 7C 1D F8 40 */ cmplw r29, r31
/* 800C10F8 000BE038 41 80 00 20 */ blt .L_800C1118
/* 800C10FC 000BE03C 7F 84 E3 78 */ mr r4, r28
/* 800C1100 000BE040 7F E5 FB 78 */ mr r5, r31
/* 800C1104 000BE044 4B F4 40 99 */ bl memcpy
/* 800C1108 000BE048 80 1E 00 04 */ lwz r0, 4(r30)
/* 800C110C 000BE04C 7C 00 FA 14 */ add r0, r0, r31
/* 800C1110 000BE050 90 1E 00 04 */ stw r0, 4(r30)
/* 800C1114 000BE054 48 00 00 30 */ b .L_800C1144
.L_800C1118:
/* 800C1118 000BE058 7F 84 E3 78 */ mr r4, r28
/* 800C111C 000BE05C 7F A5 EB 78 */ mr r5, r29
/* 800C1120 000BE060 4B F4 40 7D */ bl memcpy
/* 800C1124 000BE064 80 7E 00 08 */ lwz r3, 8(r30)
/* 800C1128 000BE068 7C 9C EA 14 */ add r4, r28, r29
/* 800C112C 000BE06C 7C BD F8 50 */ subf r5, r29, r31
/* 800C1130 000BE070 4B F4 40 6D */ bl memcpy
/* 800C1134 000BE074 80 1E 00 08 */ lwz r0, 8(r30)
/* 800C1138 000BE078 7C 00 FA 14 */ add r0, r0, r31
/* 800C113C 000BE07C 7C 1D 00 50 */ subf r0, r29, r0
/* 800C1140 000BE080 90 1E 00 04 */ stw r0, 4(r30)
.L_800C1144:
/* 800C1144 000BE084 80 9E 00 08 */ lwz r4, 8(r30)
/* 800C1148 000BE088 80 1E 00 04 */ lwz r0, 4(r30)
/* 800C114C 000BE08C 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 800C1150 000BE090 7C 04 00 50 */ subf r0, r4, r0
/* 800C1154 000BE094 7C 03 00 40 */ cmplw r3, r0
/* 800C1158 000BE098 40 82 00 08 */ bne .L_800C1160
/* 800C115C 000BE09C 90 9E 00 04 */ stw r4, 4(r30)
.L_800C1160:
/* 800C1160 000BE0A0 80 1E 00 14 */ lwz r0, 0x14(r30)
/* 800C1164 000BE0A4 38 7E 00 18 */ addi r3, r30, 0x18
/* 800C1168 000BE0A8 7C 1F 00 50 */ subf r0, r31, r0
/* 800C116C 000BE0AC 90 1E 00 14 */ stw r0, 0x14(r30)
/* 800C1170 000BE0B0 80 1E 00 10 */ lwz r0, 0x10(r30)
/* 800C1174 000BE0B4 7C 00 FA 14 */ add r0, r0, r31
/* 800C1178 000BE0B8 90 1E 00 10 */ stw r0, 0x10(r30)
/* 800C117C 000BE0BC 48 00 04 1D */ bl MWExitCriticalSection
/* 800C1180 000BE0C0 38 60 00 00 */ li r3, 0
.L_800C1184:
/* 800C1184 000BE0C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800C1188 000BE0C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800C118C 000BE0CC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800C1190 000BE0D0 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 800C1194 000BE0D4 83 81 00 10 */ lwz r28, 0x10(r1)
/* 800C1198 000BE0D8 7C 08 03 A6 */ mtlr r0
/* 800C119C 000BE0DC 38 21 00 20 */ addi r1, r1, 0x20
/* 800C11A0 000BE0E0 4E 80 00 20 */ blr
.global CircleBufferInitialize
CircleBufferInitialize:
/* 800C11A4 000BE0E4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800C11A8 000BE0E8 7C 08 02 A6 */ mflr r0
/* 800C11AC 000BE0EC 7C 66 1B 78 */ mr r6, r3
/* 800C11B0 000BE0F0 90 01 00 14 */ stw r0, 0x14(r1)
/* 800C11B4 000BE0F4 38 00 00 00 */ li r0, 0
/* 800C11B8 000BE0F8 90 83 00 08 */ stw r4, 8(r3)
/* 800C11BC 000BE0FC 38 66 00 18 */ addi r3, r6, 0x18
/* 800C11C0 000BE100 90 A6 00 0C */ stw r5, 0xc(r6)
/* 800C11C4 000BE104 80 86 00 08 */ lwz r4, 8(r6)
/* 800C11C8 000BE108 90 86 00 00 */ stw r4, 0(r6)
/* 800C11CC 000BE10C 80 86 00 08 */ lwz r4, 8(r6)
/* 800C11D0 000BE110 90 86 00 04 */ stw r4, 4(r6)
/* 800C11D4 000BE114 90 06 00 10 */ stw r0, 0x10(r6)
/* 800C11D8 000BE118 80 06 00 0C */ lwz r0, 0xc(r6)
/* 800C11DC 000BE11C 90 06 00 14 */ stw r0, 0x14(r6)
/* 800C11E0 000BE120 48 00 04 0D */ bl MWInitializeCriticalSection
/* 800C11E4 000BE124 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800C11E8 000BE128 7C 08 03 A6 */ mtlr r0
/* 800C11EC 000BE12C 38 21 00 10 */ addi r1, r1, 0x10
/* 800C11F0 000BE130 4E 80 00 20 */ blr
.global CBGetBytesAvailableForRead
CBGetBytesAvailableForRead:
/* 800C11F4 000BE134 80 63 00 10 */ lwz r3, 0x10(r3)
/* 800C11F8 000BE138 4E 80 00 20 */ blr