.include "macros.inc" .section .text, "ax" # 0x80005600 - 0x8036FBA0 .global TRKLoadContext TRKLoadContext: /* 8008C014 00088F54 80 03 00 00 */ lwz r0, 0(r3) /* 8008C018 00088F58 80 23 00 04 */ lwz r1, 4(r3) /* 8008C01C 00088F5C 80 43 00 08 */ lwz r2, 8(r3) /* 8008C020 00088F60 A0 A3 01 A2 */ lhz r5, 0x1a2(r3) /* 8008C024 00088F64 54 A6 07 BD */ rlwinm. r6, r5, 0, 0x1e, 0x1e /* 8008C028 00088F68 41 82 00 14 */ beq lbl_8008C03C /* 8008C02C 00088F6C 54 A5 07 FA */ rlwinm r5, r5, 0, 0x1f, 0x1d /* 8008C030 00088F70 B0 A3 01 A2 */ sth r5, 0x1a2(r3) /* 8008C034 00088F74 B8 A3 00 14 */ lmw r5, 0x14(r3) /* 8008C038 00088F78 48 00 00 08 */ b lbl_8008C040 lbl_8008C03C: /* 8008C03C 00088F7C B9 A3 00 34 */ lmw r13, 0x34(r3) lbl_8008C040: /* 8008C040 00088F80 7C 7F 1B 78 */ mr r31, r3 /* 8008C044 00088F84 7C 83 23 78 */ mr r3, r4 /* 8008C048 00088F88 80 9F 00 80 */ lwz r4, 0x80(r31) /* 8008C04C 00088F8C 7C 8F F1 20 */ mtcrf 0xff, r4 /* 8008C050 00088F90 80 9F 00 84 */ lwz r4, 0x84(r31) /* 8008C054 00088F94 7C 88 03 A6 */ mtlr r4 /* 8008C058 00088F98 80 9F 00 88 */ lwz r4, 0x88(r31) /* 8008C05C 00088F9C 7C 89 03 A6 */ mtctr r4 /* 8008C060 00088FA0 80 9F 00 8C */ lwz r4, 0x8c(r31) /* 8008C064 00088FA4 7C 81 03 A6 */ mtxer r4 /* 8008C068 00088FA8 7C 80 00 A6 */ mfmsr r4 /* 8008C06C 00088FAC 54 84 04 5E */ rlwinm r4, r4, 0, 0x11, 0xf /* 8008C070 00088FB0 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d /* 8008C074 00088FB4 7C 80 01 24 */ mtmsr r4 /* 8008C078 00088FB8 7C 51 43 A6 */ mtspr 0x111, r2 /* 8008C07C 00088FBC 80 9F 00 0C */ lwz r4, 0xc(r31) /* 8008C080 00088FC0 7C 92 43 A6 */ mtspr 0x112, r4 /* 8008C084 00088FC4 80 9F 00 10 */ lwz r4, 0x10(r31) /* 8008C088 00088FC8 7C 93 43 A6 */ mtspr 0x113, r4 /* 8008C08C 00088FCC 80 5F 01 98 */ lwz r2, 0x198(r31) /* 8008C090 00088FD0 80 9F 01 9C */ lwz r4, 0x19c(r31) /* 8008C094 00088FD4 83 FF 00 7C */ lwz r31, 0x7c(r31) /* 8008C098 00088FD8 4B FF ED 40 */ b TRKInterruptHandler .global TRKEXICallBack TRKEXICallBack: /* 8008C09C 00088FDC 7C 08 02 A6 */ mflr r0 /* 8008C0A0 00088FE0 90 01 00 04 */ stw r0, 4(r1) /* 8008C0A4 00088FE4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8008C0A8 00088FE8 93 E1 00 0C */ stw r31, 0xc(r1) /* 8008C0AC 00088FEC 7C 9F 23 78 */ mr r31, r4 /* 8008C0B0 00088FF0 48 00 6C 59 */ bl OSEnableScheduler /* 8008C0B4 00088FF4 7F E3 FB 78 */ mr r3, r31 /* 8008C0B8 00088FF8 38 80 05 00 */ li r4, 0x500 /* 8008C0BC 00088FFC 4B FF FF 59 */ bl TRKLoadContext /* 8008C0C0 00089000 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8008C0C4 00089004 38 21 00 10 */ addi r1, r1, 0x10 /* 8008C0C8 00089008 80 01 00 04 */ lwz r0, 4(r1) /* 8008C0CC 0008900C 7C 08 03 A6 */ mtlr r0 /* 8008C0D0 00089010 4E 80 00 20 */ blr .global InitMetroTRKCommTable InitMetroTRKCommTable: /* 8008C0D4 00089014 7C 08 02 A6 */ mflr r0 /* 8008C0D8 00089018 90 01 00 04 */ stw r0, 4(r1) /* 8008C0DC 0008901C 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C0E0 00089020 2C 03 00 01 */ cmpwi r3, 1 /* 8008C0E4 00089024 40 82 00 68 */ bne lbl_8008C14C /* 8008C0E8 00089028 48 02 2F 29 */ bl Hu_IsStub /* 8008C0EC 0008902C 3C A0 80 0B */ lis r5, DBInitComm@ha /* 8008C0F0 00089030 3C 80 80 3B */ lis r4, gDBCommTable@ha /* 8008C0F4 00089034 38 05 E9 44 */ addi r0, r5, DBInitComm@l /* 8008C0F8 00089038 38 A4 F0 88 */ addi r5, r4, gDBCommTable@l /* 8008C0FC 0008903C 3C 80 80 0B */ lis r4, DBInitInterrupts@ha /* 8008C100 00089040 90 05 00 00 */ stw r0, 0(r5) /* 8008C104 00089044 38 04 E8 F0 */ addi r0, r4, DBInitInterrupts@l /* 8008C108 00089048 3C 80 80 0B */ lis r4, DBQueryData@ha /* 8008C10C 0008904C 90 05 00 04 */ stw r0, 4(r5) /* 8008C110 00089050 38 04 E8 54 */ addi r0, r4, DBQueryData@l /* 8008C114 00089054 3C 80 80 0B */ lis r4, DBRead@ha /* 8008C118 00089058 90 05 00 08 */ stw r0, 8(r5) /* 8008C11C 0008905C 38 04 E7 C8 */ addi r0, r4, DBRead@l /* 8008C120 00089060 3C 80 80 0B */ lis r4, DBWrite@ha /* 8008C124 00089064 90 05 00 0C */ stw r0, 0xc(r5) /* 8008C128 00089068 38 04 E5 68 */ addi r0, r4, DBWrite@l /* 8008C12C 0008906C 3C 80 80 0B */ lis r4, DBOpen@ha /* 8008C130 00089070 90 05 00 10 */ stw r0, 0x10(r5) /* 8008C134 00089074 38 04 E5 64 */ addi r0, r4, DBOpen@l /* 8008C138 00089078 3C 80 80 0B */ lis r4, DBClose@ha /* 8008C13C 0008907C 90 05 00 14 */ stw r0, 0x14(r5) /* 8008C140 00089080 38 04 E5 60 */ addi r0, r4, DBClose@l /* 8008C144 00089084 90 05 00 18 */ stw r0, 0x18(r5) /* 8008C148 00089088 48 00 00 64 */ b lbl_8008C1AC lbl_8008C14C: /* 8008C14C 0008908C 48 02 2E BD */ bl AMC_IsStub /* 8008C150 00089090 3C A0 80 0B */ lis r5, EXI2_Init@ha /* 8008C154 00089094 3C 80 80 3B */ lis r4, gDBCommTable@ha /* 8008C158 00089098 38 05 EF E0 */ addi r0, r5, EXI2_Init@l /* 8008C15C 0008909C 38 A4 F0 88 */ addi r5, r4, gDBCommTable@l /* 8008C160 000890A0 3C 80 80 0B */ lis r4, EXI2_EnableInterrupts@ha /* 8008C164 000890A4 90 05 00 00 */ stw r0, 0(r5) /* 8008C168 000890A8 38 04 EF E4 */ addi r0, r4, EXI2_EnableInterrupts@l /* 8008C16C 000890AC 3C 80 80 0B */ lis r4, EXI2_Poll@ha /* 8008C170 000890B0 90 05 00 04 */ stw r0, 4(r5) /* 8008C174 000890B4 38 04 EF E8 */ addi r0, r4, EXI2_Poll@l /* 8008C178 000890B8 3C 80 80 0B */ lis r4, EXI2_ReadN@ha /* 8008C17C 000890BC 90 05 00 08 */ stw r0, 8(r5) /* 8008C180 000890C0 38 04 EF F0 */ addi r0, r4, EXI2_ReadN@l /* 8008C184 000890C4 3C 80 80 0B */ lis r4, EXI2_WriteN@ha /* 8008C188 000890C8 90 05 00 0C */ stw r0, 0xc(r5) /* 8008C18C 000890CC 38 04 EF F8 */ addi r0, r4, EXI2_WriteN@l /* 8008C190 000890D0 3C 80 80 0B */ lis r4, EXI2_Reserve@ha /* 8008C194 000890D4 90 05 00 10 */ stw r0, 0x10(r5) /* 8008C198 000890D8 38 04 F0 00 */ addi r0, r4, EXI2_Reserve@l /* 8008C19C 000890DC 3C 80 80 0B */ lis r4, EXI2_Unreserve@ha /* 8008C1A0 000890E0 90 05 00 14 */ stw r0, 0x14(r5) /* 8008C1A4 000890E4 38 04 F0 04 */ addi r0, r4, EXI2_Unreserve@l /* 8008C1A8 000890E8 90 05 00 18 */ stw r0, 0x18(r5) lbl_8008C1AC: /* 8008C1AC 000890EC 38 21 00 08 */ addi r1, r1, 8 /* 8008C1B0 000890F0 80 01 00 04 */ lwz r0, 4(r1) /* 8008C1B4 000890F4 7C 08 03 A6 */ mtlr r0 /* 8008C1B8 000890F8 4E 80 00 20 */ blr .global TRKUARTInterruptHandler TRKUARTInterruptHandler: /* 8008C1BC 000890FC 4E 80 00 20 */ blr .global TRKInitializeIntDrivenUART TRKInitializeIntDrivenUART: /* 8008C1C0 00089100 7C 08 02 A6 */ mflr r0 /* 8008C1C4 00089104 90 01 00 04 */ stw r0, 4(r1) /* 8008C1C8 00089108 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C1CC 0008910C 3C 60 80 3B */ lis r3, gDBCommTable@ha /* 8008C1D0 00089110 38 63 F0 88 */ addi r3, r3, gDBCommTable@l /* 8008C1D4 00089114 3C 80 80 09 */ lis r4, TRKEXICallBack@ha /* 8008C1D8 00089118 81 83 00 00 */ lwz r12, 0(r3) /* 8008C1DC 0008911C 38 84 C0 9C */ addi r4, r4, TRKEXICallBack@l /* 8008C1E0 00089120 7C C3 33 78 */ mr r3, r6 /* 8008C1E4 00089124 7D 88 03 A6 */ mtlr r12 /* 8008C1E8 00089128 4E 80 00 21 */ blrl /* 8008C1EC 0008912C 38 60 00 00 */ li r3, 0 /* 8008C1F0 00089130 38 21 00 08 */ addi r1, r1, 8 /* 8008C1F4 00089134 80 01 00 04 */ lwz r0, 4(r1) /* 8008C1F8 00089138 7C 08 03 A6 */ mtlr r0 /* 8008C1FC 0008913C 4E 80 00 20 */ blr .global EnableEXI2Interrupts EnableEXI2Interrupts: /* 8008C200 00089140 7C 08 02 A6 */ mflr r0 /* 8008C204 00089144 90 01 00 04 */ stw r0, 4(r1) /* 8008C208 00089148 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C20C 0008914C 3C 60 80 3B */ lis r3, gDBCommTable@ha /* 8008C210 00089150 38 63 F0 88 */ addi r3, r3, gDBCommTable@l /* 8008C214 00089154 81 83 00 04 */ lwz r12, 4(r3) /* 8008C218 00089158 7D 88 03 A6 */ mtlr r12 /* 8008C21C 0008915C 4E 80 00 21 */ blrl /* 8008C220 00089160 38 21 00 08 */ addi r1, r1, 8 /* 8008C224 00089164 80 01 00 04 */ lwz r0, 4(r1) /* 8008C228 00089168 7C 08 03 A6 */ mtlr r0 /* 8008C22C 0008916C 4E 80 00 20 */ blr .global TRKPollUART TRKPollUART: /* 8008C230 00089170 7C 08 02 A6 */ mflr r0 /* 8008C234 00089174 90 01 00 04 */ stw r0, 4(r1) /* 8008C238 00089178 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C23C 0008917C 3C 60 80 3B */ lis r3, gDBCommTable@ha /* 8008C240 00089180 38 63 F0 88 */ addi r3, r3, gDBCommTable@l /* 8008C244 00089184 81 83 00 08 */ lwz r12, 8(r3) /* 8008C248 00089188 7D 88 03 A6 */ mtlr r12 /* 8008C24C 0008918C 4E 80 00 21 */ blrl /* 8008C250 00089190 38 21 00 08 */ addi r1, r1, 8 /* 8008C254 00089194 80 01 00 04 */ lwz r0, 4(r1) /* 8008C258 00089198 7C 08 03 A6 */ mtlr r0 /* 8008C25C 0008919C 4E 80 00 20 */ blr .global TRKReadUARTN TRKReadUARTN: /* 8008C260 000891A0 7C 08 02 A6 */ mflr r0 /* 8008C264 000891A4 90 01 00 04 */ stw r0, 4(r1) /* 8008C268 000891A8 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C26C 000891AC 3C A0 80 3B */ lis r5, gDBCommTable@ha /* 8008C270 000891B0 38 A5 F0 88 */ addi r5, r5, gDBCommTable@l /* 8008C274 000891B4 81 85 00 0C */ lwz r12, 0xc(r5) /* 8008C278 000891B8 7D 88 03 A6 */ mtlr r12 /* 8008C27C 000891BC 4E 80 00 21 */ blrl /* 8008C280 000891C0 2C 03 00 00 */ cmpwi r3, 0 /* 8008C284 000891C4 40 82 00 0C */ bne lbl_8008C290 /* 8008C288 000891C8 38 60 00 00 */ li r3, 0 /* 8008C28C 000891CC 48 00 00 08 */ b lbl_8008C294 lbl_8008C290: /* 8008C290 000891D0 38 60 FF FF */ li r3, -1 lbl_8008C294: /* 8008C294 000891D4 38 21 00 08 */ addi r1, r1, 8 /* 8008C298 000891D8 80 01 00 04 */ lwz r0, 4(r1) /* 8008C29C 000891DC 7C 08 03 A6 */ mtlr r0 /* 8008C2A0 000891E0 4E 80 00 20 */ blr .global TRKWriteUARTN TRKWriteUARTN: /* 8008C2A4 000891E4 7C 08 02 A6 */ mflr r0 /* 8008C2A8 000891E8 90 01 00 04 */ stw r0, 4(r1) /* 8008C2AC 000891EC 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C2B0 000891F0 3C A0 80 3B */ lis r5, gDBCommTable@ha /* 8008C2B4 000891F4 38 A5 F0 88 */ addi r5, r5, gDBCommTable@l /* 8008C2B8 000891F8 81 85 00 10 */ lwz r12, 0x10(r5) /* 8008C2BC 000891FC 7D 88 03 A6 */ mtlr r12 /* 8008C2C0 00089200 4E 80 00 21 */ blrl /* 8008C2C4 00089204 2C 03 00 00 */ cmpwi r3, 0 /* 8008C2C8 00089208 40 82 00 0C */ bne lbl_8008C2D4 /* 8008C2CC 0008920C 38 60 00 00 */ li r3, 0 /* 8008C2D0 00089210 48 00 00 08 */ b lbl_8008C2D8 lbl_8008C2D4: /* 8008C2D4 00089214 38 60 FF FF */ li r3, -1 lbl_8008C2D8: /* 8008C2D8 00089218 38 21 00 08 */ addi r1, r1, 8 /* 8008C2DC 0008921C 80 01 00 04 */ lwz r0, 4(r1) /* 8008C2E0 00089220 7C 08 03 A6 */ mtlr r0 /* 8008C2E4 00089224 4E 80 00 20 */ blr .global ReserveEXI2Port ReserveEXI2Port: /* 8008C2E8 00089228 7C 08 02 A6 */ mflr r0 /* 8008C2EC 0008922C 90 01 00 04 */ stw r0, 4(r1) /* 8008C2F0 00089230 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C2F4 00089234 3C 60 80 3B */ lis r3, gDBCommTable@ha /* 8008C2F8 00089238 38 63 F0 88 */ addi r3, r3, gDBCommTable@l /* 8008C2FC 0008923C 81 83 00 14 */ lwz r12, 0x14(r3) /* 8008C300 00089240 7D 88 03 A6 */ mtlr r12 /* 8008C304 00089244 4E 80 00 21 */ blrl /* 8008C308 00089248 38 21 00 08 */ addi r1, r1, 8 /* 8008C30C 0008924C 80 01 00 04 */ lwz r0, 4(r1) /* 8008C310 00089250 7C 08 03 A6 */ mtlr r0 /* 8008C314 00089254 4E 80 00 20 */ blr .global UnreserveEXI2Port UnreserveEXI2Port: /* 8008C318 00089258 7C 08 02 A6 */ mflr r0 /* 8008C31C 0008925C 90 01 00 04 */ stw r0, 4(r1) /* 8008C320 00089260 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C324 00089264 3C 60 80 3B */ lis r3, gDBCommTable@ha /* 8008C328 00089268 38 63 F0 88 */ addi r3, r3, gDBCommTable@l /* 8008C32C 0008926C 81 83 00 18 */ lwz r12, 0x18(r3) /* 8008C330 00089270 7D 88 03 A6 */ mtlr r12 /* 8008C334 00089274 4E 80 00 21 */ blrl /* 8008C338 00089278 38 21 00 08 */ addi r1, r1, 8 /* 8008C33C 0008927C 80 01 00 04 */ lwz r0, 4(r1) /* 8008C340 00089280 7C 08 03 A6 */ mtlr r0 /* 8008C344 00089284 4E 80 00 20 */ blr .global TRK_board_display TRK_board_display: /* 8008C348 00089288 7C 08 02 A6 */ mflr r0 /* 8008C34C 0008928C 90 01 00 04 */ stw r0, 4(r1) /* 8008C350 00089290 94 21 FF F8 */ stwu r1, -8(r1) /* 8008C354 00089294 4C C6 31 82 */ crclr 6 /* 8008C358 00089298 48 00 2C 0D */ bl OSReport /* 8008C35C 0008929C 38 21 00 08 */ addi r1, r1, 8 /* 8008C360 000892A0 80 01 00 04 */ lwz r0, 4(r1) /* 8008C364 000892A4 7C 08 03 A6 */ mtlr r0 /* 8008C368 000892A8 4E 80 00 20 */ blr .section .data, "wa" # 0x803A8380 - 0x803E6000 gDBCommTable: .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0