mirror of
https://github.com/encounter/oot-gc.git
synced 2026-03-30 11:33:44 -07:00
787 lines
36 KiB
ArmAsm
787 lines
36 KiB
ArmAsm
# DebuggerDriver.c
|
|
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.balign 4
|
|
|
|
glabel DBClose
|
|
/* 0CCF64 800D2504 4E800020 */ blr
|
|
|
|
glabel DBOpen
|
|
/* 0CCF68 800D2508 4E800020 */ blr
|
|
|
|
glabel DBWrite
|
|
/* 0CCF6C 800D250C 7C0802A6 */ mflr r0
|
|
/* 0CCF70 800D2510 90010004 */ stw r0, 4(r1)
|
|
/* 0CCF74 800D2514 9421FF88 */ stwu r1, -0x78(r1)
|
|
/* 0CCF78 800D2518 BF010058 */ stmw r24, 0x58(r1)
|
|
/* 0CCF7C 800D251C 3B430000 */ addi r26, r3, 0
|
|
/* 0CCF80 800D2520 3B640000 */ addi r27, r4, 0
|
|
/* 0CCF84 800D2524 4BFCC7D9 */ bl OSDisableInterrupts
|
|
/* 0CCF88 800D2528 3B830000 */ addi r28, r3, 0
|
|
/* 0CCF8C 800D252C 3F20CC00 */ lis r25, EXI_REGS_BASE@ha
|
|
/* 0CCF90 800D2530 3FE04000 */ lis r31, 0x4000
|
|
lbl_800D2534:
|
|
/* 0CCF94 800D2534 80196828 */ lwz r0, (EXI_REGS_BASE + EXI_28)@l(r25)
|
|
/* 0CCF98 800D2538 3BD96800 */ addi r30, r25, EXI_REGS_BASE@l
|
|
/* 0CCF9C 800D253C 38610050 */ addi r3, r1, 0x50
|
|
/* 0CCFA0 800D2540 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CCFA4 800D2544 38800002 */ li r4, 2
|
|
/* 0CCFA8 800D2548 38A00001 */ li r5, 1
|
|
/* 0CCFAC 800D254C 600000C0 */ ori r0, r0, 0xc0
|
|
/* 0CCFB0 800D2550 941E0028 */ stwu r0, EXI_28(r30)
|
|
/* 0CCFB4 800D2554 93E10050 */ stw r31, 0x50(r1)
|
|
/* 0CCFB8 800D2558 48000795 */ bl DBGEXIImm
|
|
/* 0CCFBC 800D255C 7C600034 */ cntlzw r0, r3
|
|
/* 0CCFC0 800D2560 5418D97E */ srwi r24, r0, 5
|
|
lbl_800D2564:
|
|
/* 0CCFC4 800D2564 3BB96800 */ addi r29, r25, EXI_REGS_BASE@l
|
|
/* 0CCFC8 800D2568 841D0034 */ lwzu r0, EXI_2CR(r29)
|
|
/* 0CCFCC 800D256C 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CCFD0 800D2570 4082FFF4 */ bne lbl_800D2564
|
|
/* 0CCFD4 800D2574 38610054 */ addi r3, r1, 0x54
|
|
/* 0CCFD8 800D2578 38800004 */ li r4, 4
|
|
/* 0CCFDC 800D257C 38A00000 */ li r5, 0
|
|
/* 0CCFE0 800D2580 4800076D */ bl DBGEXIImm
|
|
lbl_800D2584:
|
|
/* 0CCFE4 800D2584 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CCFE8 800D2588 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CCFEC 800D258C 4082FFF8 */ bne lbl_800D2584
|
|
/* 0CCFF0 800D2590 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CCFF4 800D2594 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CCFF8 800D2598 901E0000 */ stw r0, 0(r30)
|
|
/* 0CCFFC 800D259C 80010054 */ lwz r0, 0x54(r1)
|
|
/* 0CD000 800D25A0 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
|
|
/* 0CD004 800D25A4 4082FF90 */ bne lbl_800D2534
|
|
/* 0CD008 800D25A8 886D8898 */ lbz r3, SendCount@sda21(r13)
|
|
/* 0CD00C 800D25AC 38030001 */ addi r0, r3, 1
|
|
/* 0CD010 800D25B0 980D8898 */ stb r0, SendCount@sda21(r13)
|
|
/* 0CD014 800D25B4 880D8898 */ lbz r0, SendCount@sda21(r13)
|
|
/* 0CD018 800D25B8 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD01C 800D25BC 4182000C */ beq lbl_800D25C8
|
|
/* 0CD020 800D25C0 38601000 */ li r3, 0x1000
|
|
/* 0CD024 800D25C4 48000008 */ b lbl_800D25CC
|
|
lbl_800D25C8:
|
|
/* 0CD028 800D25C8 38600000 */ li r3, 0
|
|
lbl_800D25CC:
|
|
/* 0CD02C 800D25CC 381B0003 */ addi r0, r27, 3
|
|
/* 0CD030 800D25D0 64790001 */ oris r25, r3, 1
|
|
/* 0CD034 800D25D4 5418003A */ rlwinm r24, r0, 0, 0, 0x1d
|
|
/* 0CD038 800D25D8 6339C000 */ ori r25, r25, 0xc000
|
|
lbl_800D25DC:
|
|
/* 0CD03C 800D25DC 38790000 */ addi r3, r25, 0
|
|
/* 0CD040 800D25E0 389A0000 */ addi r4, r26, 0
|
|
/* 0CD044 800D25E4 38B80000 */ addi r5, r24, 0
|
|
/* 0CD048 800D25E8 480004A1 */ bl DBGWrite
|
|
/* 0CD04C 800D25EC 2C030000 */ cmpwi r3, 0
|
|
/* 0CD050 800D25F0 4182FFEC */ beq lbl_800D25DC
|
|
/* 0CD054 800D25F4 3FE04000 */ lis r31, 0x4000
|
|
lbl_800D25F8:
|
|
/* 0CD058 800D25F8 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD05C 800D25FC 3861004C */ addi r3, r1, 0x4c
|
|
/* 0CD060 800D2600 38800002 */ li r4, 2
|
|
/* 0CD064 800D2604 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD068 800D2608 38A00001 */ li r5, 1
|
|
/* 0CD06C 800D260C 600000C0 */ ori r0, r0, 0xc0
|
|
/* 0CD070 800D2610 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD074 800D2614 93E1004C */ stw r31, 0x4c(r1)
|
|
/* 0CD078 800D2618 480006D5 */ bl DBGEXIImm
|
|
/* 0CD07C 800D261C 7C600034 */ cntlzw r0, r3
|
|
/* 0CD080 800D2620 541AD97E */ srwi r26, r0, 5
|
|
lbl_800D2624:
|
|
/* 0CD084 800D2624 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CD088 800D2628 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD08C 800D262C 4082FFF8 */ bne lbl_800D2624
|
|
/* 0CD090 800D2630 38610054 */ addi r3, r1, 0x54
|
|
/* 0CD094 800D2634 38800004 */ li r4, 4
|
|
/* 0CD098 800D2638 38A00000 */ li r5, 0
|
|
/* 0CD09C 800D263C 480006B1 */ bl DBGEXIImm
|
|
lbl_800D2640:
|
|
/* 0CD0A0 800D2640 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CD0A4 800D2644 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD0A8 800D2648 4082FFF8 */ bne lbl_800D2640
|
|
/* 0CD0AC 800D264C 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD0B0 800D2650 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD0B4 800D2654 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD0B8 800D2658 80010054 */ lwz r0, 0x54(r1)
|
|
/* 0CD0BC 800D265C 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
|
|
/* 0CD0C0 800D2660 4082FF98 */ bne lbl_800D25F8
|
|
/* 0CD0C4 800D2664 880D8898 */ lbz r0, SendCount@sda21(r13)
|
|
/* 0CD0C8 800D2668 5400801E */ slwi r0, r0, 0x10
|
|
/* 0CD0CC 800D266C 64001F00 */ oris r0, r0, 0x1f00
|
|
/* 0CD0D0 800D2670 7C00DB78 */ or r0, r0, r27
|
|
/* 0CD0D4 800D2674 540000FE */ clrlwi r0, r0, 3
|
|
/* 0CD0D8 800D2678 6418C000 */ oris r24, r0, 0xc000
|
|
lbl_800D267C:
|
|
/* 0CD0DC 800D267C 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD0E0 800D2680 38610044 */ addi r3, r1, 0x44
|
|
/* 0CD0E4 800D2684 38800004 */ li r4, 4
|
|
/* 0CD0E8 800D2688 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD0EC 800D268C 38A00001 */ li r5, 1
|
|
/* 0CD0F0 800D2690 600000C0 */ ori r0, r0, 0xc0
|
|
/* 0CD0F4 800D2694 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD0F8 800D2698 93010044 */ stw r24, 0x44(r1)
|
|
/* 0CD0FC 800D269C 48000651 */ bl DBGEXIImm
|
|
/* 0CD100 800D26A0 7C600034 */ cntlzw r0, r3
|
|
/* 0CD104 800D26A4 5403D97E */ srwi r3, r0, 5
|
|
lbl_800D26A8:
|
|
/* 0CD108 800D26A8 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CD10C 800D26AC 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD110 800D26B0 4082FFF8 */ bne lbl_800D26A8
|
|
/* 0CD114 800D26B4 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD118 800D26B8 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD11C 800D26BC 2C030000 */ cmpwi r3, 0
|
|
/* 0CD120 800D26C0 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD124 800D26C4 4082FFB8 */ bne lbl_800D267C
|
|
/* 0CD128 800D26C8 3F604000 */ lis r27, 0x4000
|
|
lbl_800D26CC:
|
|
/* 0CD12C 800D26CC 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD130 800D26D0 3861003C */ addi r3, r1, 0x3c
|
|
/* 0CD134 800D26D4 38800002 */ li r4, 2
|
|
/* 0CD138 800D26D8 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD13C 800D26DC 38A00001 */ li r5, 1
|
|
/* 0CD140 800D26E0 600000C0 */ ori r0, r0, 0xc0
|
|
/* 0CD144 800D26E4 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD148 800D26E8 9361003C */ stw r27, 0x3c(r1)
|
|
/* 0CD14C 800D26EC 48000601 */ bl DBGEXIImm
|
|
/* 0CD150 800D26F0 7C600034 */ cntlzw r0, r3
|
|
/* 0CD154 800D26F4 541AD97E */ srwi r26, r0, 5
|
|
lbl_800D26F8:
|
|
/* 0CD158 800D26F8 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CD15C 800D26FC 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD160 800D2700 4082FFF8 */ bne lbl_800D26F8
|
|
/* 0CD164 800D2704 38610054 */ addi r3, r1, 0x54
|
|
/* 0CD168 800D2708 38800004 */ li r4, 4
|
|
/* 0CD16C 800D270C 38A00000 */ li r5, 0
|
|
/* 0CD170 800D2710 480005DD */ bl DBGEXIImm
|
|
/* 0CD174 800D2714 7C600034 */ cntlzw r0, r3
|
|
/* 0CD178 800D2718 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD17C 800D271C 7F430378 */ or r3, r26, r0
|
|
lbl_800D2720:
|
|
/* 0CD180 800D2720 801D0000 */ lwz r0, 0(r29)
|
|
/* 0CD184 800D2724 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD188 800D2728 4082FFF8 */ bne lbl_800D2720
|
|
/* 0CD18C 800D272C 801E0000 */ lwz r0, 0(r30)
|
|
/* 0CD190 800D2730 70000405 */ andi. r0, r0, 0x405
|
|
/* 0CD194 800D2734 2C030000 */ cmpwi r3, 0
|
|
/* 0CD198 800D2738 901E0000 */ stw r0, 0(r30)
|
|
/* 0CD19C 800D273C 4082FF90 */ bne lbl_800D26CC
|
|
/* 0CD1A0 800D2740 80010054 */ lwz r0, 0x54(r1)
|
|
/* 0CD1A4 800D2744 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
|
|
/* 0CD1A8 800D2748 4082FF84 */ bne lbl_800D26CC
|
|
/* 0CD1AC 800D274C 7F83E378 */ mr r3, r28
|
|
/* 0CD1B0 800D2750 4BFCC5D5 */ bl OSRestoreInterrupts
|
|
/* 0CD1B4 800D2754 BB010058 */ lmw r24, 0x58(r1)
|
|
/* 0CD1B8 800D2758 38600000 */ li r3, 0
|
|
/* 0CD1BC 800D275C 8001007C */ lwz r0, 0x7c(r1)
|
|
/* 0CD1C0 800D2760 38210078 */ addi r1, r1, 0x78
|
|
/* 0CD1C4 800D2764 7C0803A6 */ mtlr r0
|
|
/* 0CD1C8 800D2768 4E800020 */ blr
|
|
|
|
glabel DBRead
|
|
/* 0CD1CC 800D276C 7C0802A6 */ mflr r0
|
|
/* 0CD1D0 800D2770 90010004 */ stw r0, 4(r1)
|
|
/* 0CD1D4 800D2774 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 0CD1D8 800D2778 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 0CD1DC 800D277C 93C10018 */ stw r30, 0x18(r1)
|
|
/* 0CD1E0 800D2780 3BC40000 */ addi r30, r4, 0
|
|
/* 0CD1E4 800D2784 93A10014 */ stw r29, 0x14(r1)
|
|
/* 0CD1E8 800D2788 3BA30000 */ addi r29, r3, 0
|
|
/* 0CD1EC 800D278C 4BFCC571 */ bl OSDisableInterrupts
|
|
/* 0CD1F0 800D2790 800D9010 */ lwz r0, SendMailData@sda21(r13)
|
|
/* 0CD1F4 800D2794 3BE30000 */ addi r31, r3, 0
|
|
/* 0CD1F8 800D2798 540003DF */ rlwinm. r0, r0, 0, 0xf, 0xf
|
|
/* 0CD1FC 800D279C 4182000C */ beq lbl_800D27A8
|
|
/* 0CD200 800D27A0 38601000 */ li r3, 0x1000
|
|
/* 0CD204 800D27A4 48000008 */ b lbl_800D27AC
|
|
lbl_800D27A8:
|
|
/* 0CD208 800D27A8 38600000 */ li r3, 0
|
|
lbl_800D27AC:
|
|
/* 0CD20C 800D27AC 3C630002 */ addis r3, r3, 2
|
|
/* 0CD210 800D27B0 381E0003 */ addi r0, r30, 3
|
|
/* 0CD214 800D27B4 389D0000 */ addi r4, r29, 0
|
|
/* 0CD218 800D27B8 5405003A */ rlwinm r5, r0, 0, 0, 0x1d
|
|
/* 0CD21C 800D27BC 3863E000 */ addi r3, r3, -8192
|
|
/* 0CD220 800D27C0 480003A5 */ bl DBGRead
|
|
/* 0CD224 800D27C4 38000000 */ li r0, 0
|
|
/* 0CD228 800D27C8 900D9014 */ stw r0, RecvDataLeng@sda21(r13)
|
|
/* 0CD22C 800D27CC 7FE3FB78 */ mr r3, r31
|
|
/* 0CD230 800D27D0 980D901C */ stb r0, EXIInputFlag@sda21(r13)
|
|
/* 0CD234 800D27D4 4BFCC551 */ bl OSRestoreInterrupts
|
|
/* 0CD238 800D27D8 80010024 */ lwz r0, 0x24(r1)
|
|
/* 0CD23C 800D27DC 38600000 */ li r3, 0
|
|
/* 0CD240 800D27E0 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 0CD244 800D27E4 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 0CD248 800D27E8 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 0CD24C 800D27EC 38210020 */ addi r1, r1, 0x20
|
|
/* 0CD250 800D27F0 7C0803A6 */ mtlr r0
|
|
/* 0CD254 800D27F4 4E800020 */ blr
|
|
|
|
glabel DBQueryData
|
|
/* 0CD258 800D27F8 7C0802A6 */ mflr r0
|
|
/* 0CD25C 800D27FC 38600000 */ li r3, 0
|
|
/* 0CD260 800D2800 90010004 */ stw r0, 4(r1)
|
|
/* 0CD264 800D2804 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 0CD268 800D2808 93E10014 */ stw r31, 0x14(r1)
|
|
/* 0CD26C 800D280C 800D9014 */ lwz r0, RecvDataLeng@sda21(r13)
|
|
/* 0CD270 800D2810 986D901C */ stb r3, EXIInputFlag@sda21(r13)
|
|
/* 0CD274 800D2814 2C000000 */ cmpwi r0, 0
|
|
/* 0CD278 800D2818 40820064 */ bne lbl_800D287C
|
|
/* 0CD27C 800D281C 4BFCC4E1 */ bl OSDisableInterrupts
|
|
/* 0CD280 800D2820 3BE30000 */ addi r31, r3, 0
|
|
/* 0CD284 800D2824 38610008 */ addi r3, r1, 8
|
|
/* 0CD288 800D2828 480001B5 */ bl DBGReadStatus
|
|
/* 0CD28C 800D282C 80010008 */ lwz r0, 8(r1)
|
|
/* 0CD290 800D2830 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD294 800D2834 41820040 */ beq lbl_800D2874
|
|
/* 0CD298 800D2838 38610008 */ addi r3, r1, 8
|
|
/* 0CD29C 800D283C 48000405 */ bl DBGReadMailbox
|
|
/* 0CD2A0 800D2840 80010008 */ lwz r0, 8(r1)
|
|
/* 0CD2A4 800D2844 540000FE */ clrlwi r0, r0, 3
|
|
/* 0CD2A8 800D2848 90010008 */ stw r0, 8(r1)
|
|
/* 0CD2AC 800D284C 80810008 */ lwz r4, 8(r1)
|
|
/* 0CD2B0 800D2850 548300CE */ rlwinm r3, r4, 0, 3, 7
|
|
/* 0CD2B4 800D2854 3C03E100 */ addis r0, r3, 0xe100
|
|
/* 0CD2B8 800D2858 28000000 */ cmplwi r0, 0
|
|
/* 0CD2BC 800D285C 40820018 */ bne lbl_800D2874
|
|
/* 0CD2C0 800D2860 5483047E */ clrlwi r3, r4, 0x11
|
|
/* 0CD2C4 800D2864 908D9010 */ stw r4, SendMailData@sda21(r13)
|
|
/* 0CD2C8 800D2868 38000001 */ li r0, 1
|
|
/* 0CD2CC 800D286C 906D9014 */ stw r3, RecvDataLeng@sda21(r13)
|
|
/* 0CD2D0 800D2870 980D901C */ stb r0, EXIInputFlag@sda21(r13)
|
|
lbl_800D2874:
|
|
/* 0CD2D4 800D2874 7FE3FB78 */ mr r3, r31
|
|
/* 0CD2D8 800D2878 4BFCC4AD */ bl OSRestoreInterrupts
|
|
lbl_800D287C:
|
|
/* 0CD2DC 800D287C 806D9014 */ lwz r3, RecvDataLeng@sda21(r13)
|
|
/* 0CD2E0 800D2880 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 0CD2E4 800D2884 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 0CD2E8 800D2888 38210018 */ addi r1, r1, 0x18
|
|
/* 0CD2EC 800D288C 7C0803A6 */ mtlr r0
|
|
/* 0CD2F0 800D2890 4E800020 */ blr
|
|
|
|
glabel DBInitInterrupts
|
|
/* 0CD2F4 800D2894 7C0802A6 */ mflr r0
|
|
/* 0CD2F8 800D2898 3C600002 */ lis r3, 2
|
|
/* 0CD2FC 800D289C 90010004 */ stw r0, 4(r1)
|
|
/* 0CD300 800D28A0 38638000 */ addi r3, r3, -32768
|
|
/* 0CD304 800D28A4 9421FFF8 */ stwu r1, -8(r1)
|
|
/* 0CD308 800D28A8 4BFCC81D */ bl __OSMaskInterrupts
|
|
/* 0CD30C 800D28AC 38600040 */ li r3, 0x40
|
|
/* 0CD310 800D28B0 4BFCC815 */ bl __OSMaskInterrupts
|
|
/* 0CD314 800D28B4 3C60800D */ lis r3, MWCallback@ha
|
|
/* 0CD318 800D28B8 380329A0 */ addi r0, r3, MWCallback@l
|
|
/* 0CD31C 800D28BC 3C60800D */ lis r3, DBGHandler@ha
|
|
/* 0CD320 800D28C0 900D900C */ stw r0, DBGCallback@sda21(r13)
|
|
/* 0CD324 800D28C4 38832960 */ addi r4, r3, DBGHandler@l
|
|
/* 0CD328 800D28C8 38600019 */ li r3, 0x19
|
|
/* 0CD32C 800D28CC 4BFCC47D */ bl __OSSetInterruptHandler
|
|
/* 0CD330 800D28D0 38600040 */ li r3, 0x40
|
|
/* 0CD334 800D28D4 4BFCC879 */ bl __OSUnmaskInterrupts
|
|
/* 0CD338 800D28D8 8001000C */ lwz r0, 0xc(r1)
|
|
/* 0CD33C 800D28DC 38210008 */ addi r1, r1, 8
|
|
/* 0CD340 800D28E0 7C0803A6 */ mtlr r0
|
|
/* 0CD344 800D28E4 4E800020 */ blr
|
|
|
|
glabel DBInitComm
|
|
/* 0CD348 800D28E8 7C0802A6 */ mflr r0
|
|
/* 0CD34C 800D28EC 90010004 */ stw r0, 4(r1)
|
|
/* 0CD350 800D28F0 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 0CD354 800D28F4 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 0CD358 800D28F8 93C10018 */ stw r30, 0x18(r1)
|
|
/* 0CD35C 800D28FC 3BC40000 */ addi r30, r4, 0
|
|
/* 0CD360 800D2900 93A10014 */ stw r29, 0x14(r1)
|
|
/* 0CD364 800D2904 3BA30000 */ addi r29, r3, 0
|
|
/* 0CD368 800D2908 4BFCC3F5 */ bl OSDisableInterrupts
|
|
/* 0CD36C 800D290C 380D901C */ addi r0, r13, EXIInputFlag@sda21
|
|
/* 0CD370 800D2910 900D9018 */ stw r0, pEXIInputFlag@sda21(r13)
|
|
/* 0CD374 800D2914 3C800002 */ lis r4, 2
|
|
/* 0CD378 800D2918 3BE30000 */ addi r31, r3, 0
|
|
/* 0CD37C 800D291C 800D9018 */ lwz r0, pEXIInputFlag@sda21(r13)
|
|
/* 0CD380 800D2920 38648000 */ addi r3, r4, -32768
|
|
/* 0CD384 800D2924 901D0000 */ stw r0, 0(r29)
|
|
/* 0CD388 800D2928 93CD9008 */ stw r30, MTRCallback@sda21(r13)
|
|
/* 0CD38C 800D292C 4BFCC799 */ bl __OSMaskInterrupts
|
|
/* 0CD390 800D2930 3C60CC00 */ lis r3, EXI_REGS_BASE@ha
|
|
/* 0CD394 800D2934 38000000 */ li r0, 0
|
|
/* 0CD398 800D2938 90036828 */ stw r0, (EXI_REGS_BASE + EXI_28)@l(r3)
|
|
/* 0CD39C 800D293C 7FE3FB78 */ mr r3, r31
|
|
/* 0CD3A0 800D2940 4BFCC3E5 */ bl OSRestoreInterrupts
|
|
/* 0CD3A4 800D2944 80010024 */ lwz r0, 0x24(r1)
|
|
/* 0CD3A8 800D2948 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 0CD3AC 800D294C 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 0CD3B0 800D2950 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 0CD3B4 800D2954 38210020 */ addi r1, r1, 0x20
|
|
/* 0CD3B8 800D2958 7C0803A6 */ mtlr r0
|
|
/* 0CD3BC 800D295C 4E800020 */ blr
|
|
|
|
DBGHandler:
|
|
/* 0CD3C0 800D2960 7C0802A6 */ mflr r0
|
|
/* 0CD3C4 800D2964 3CA0CC00 */ lis r5, PI_REGS_BASE@ha
|
|
/* 0CD3C8 800D2968 90010004 */ stw r0, 4(r1)
|
|
/* 0CD3CC 800D296C 38001000 */ li r0, 0x1000
|
|
/* 0CD3D0 800D2970 9421FFF8 */ stwu r1, -8(r1)
|
|
/* 0CD3D4 800D2974 818D900C */ lwz r12, DBGCallback@sda21(r13)
|
|
/* 0CD3D8 800D2978 90053000 */ stw r0, (PI_REGS_BASE + PI_INTSR)@l(r5)
|
|
/* 0CD3DC 800D297C 280C0000 */ cmplwi r12, 0
|
|
/* 0CD3E0 800D2980 41820010 */ beq lbl_800D2990
|
|
/* 0CD3E4 800D2984 7D8803A6 */ mtlr r12
|
|
/* 0CD3E8 800D2988 7C630734 */ extsh r3, r3
|
|
/* 0CD3EC 800D298C 4E800021 */ blrl
|
|
lbl_800D2990:
|
|
/* 0CD3F0 800D2990 8001000C */ lwz r0, 0xc(r1)
|
|
/* 0CD3F4 800D2994 38210008 */ addi r1, r1, 8
|
|
/* 0CD3F8 800D2998 7C0803A6 */ mtlr r0
|
|
/* 0CD3FC 800D299C 4E800020 */ blr
|
|
|
|
MWCallback:
|
|
/* 0CD400 800D29A0 7C0802A6 */ mflr r0
|
|
/* 0CD404 800D29A4 90010004 */ stw r0, 4(r1)
|
|
/* 0CD408 800D29A8 38000001 */ li r0, 1
|
|
/* 0CD40C 800D29AC 9421FFF8 */ stwu r1, -8(r1)
|
|
/* 0CD410 800D29B0 818D9008 */ lwz r12, MTRCallback@sda21(r13)
|
|
/* 0CD414 800D29B4 980D901C */ stb r0, EXIInputFlag@sda21(r13)
|
|
/* 0CD418 800D29B8 280C0000 */ cmplwi r12, 0
|
|
/* 0CD41C 800D29BC 41820010 */ beq lbl_800D29CC
|
|
/* 0CD420 800D29C0 7D8803A6 */ mtlr r12
|
|
/* 0CD424 800D29C4 38600000 */ li r3, 0
|
|
/* 0CD428 800D29C8 4E800021 */ blrl
|
|
lbl_800D29CC:
|
|
/* 0CD42C 800D29CC 8001000C */ lwz r0, 0xc(r1)
|
|
/* 0CD430 800D29D0 38210008 */ addi r1, r1, 8
|
|
/* 0CD434 800D29D4 7C0803A6 */ mtlr r0
|
|
/* 0CD438 800D29D8 4E800020 */ blr
|
|
|
|
DBGReadStatus:
|
|
/* 0CD43C 800D29DC 7C0802A6 */ mflr r0
|
|
/* 0CD440 800D29E0 38800002 */ li r4, 2
|
|
/* 0CD444 800D29E4 90010004 */ stw r0, 4(r1)
|
|
/* 0CD448 800D29E8 3C004000 */ lis r0, 0x4000
|
|
/* 0CD44C 800D29EC 9421FFC8 */ stwu r1, -0x38(r1)
|
|
/* 0CD450 800D29F0 BF610024 */ stmw r27, 0x24(r1)
|
|
/* 0CD454 800D29F4 3FC0CC00 */ lis r30, EXI_REGS_BASE@ha
|
|
/* 0CD458 800D29F8 3B630000 */ addi r27, r3, 0
|
|
/* 0CD45C 800D29FC 3BBE6800 */ addi r29, r30, EXI_REGS_BASE@l
|
|
/* 0CD460 800D2A00 38610018 */ addi r3, r1, 0x18
|
|
/* 0CD464 800D2A04 80BE6828 */ lwz r5, (EXI_REGS_BASE + EXI_28)@l(r30)
|
|
/* 0CD468 800D2A08 70A50405 */ andi. r5, r5, 0x405
|
|
/* 0CD46C 800D2A0C 60A500C0 */ ori r5, r5, 0xc0
|
|
/* 0CD470 800D2A10 94BD0028 */ stwu r5, EXI_28(r29)
|
|
/* 0CD474 800D2A14 38A00001 */ li r5, 1
|
|
/* 0CD478 800D2A18 90010018 */ stw r0, 0x18(r1)
|
|
/* 0CD47C 800D2A1C 480002D1 */ bl DBGEXIImm
|
|
/* 0CD480 800D2A20 7C600034 */ cntlzw r0, r3
|
|
/* 0CD484 800D2A24 541FD97E */ srwi r31, r0, 5
|
|
lbl_800D2A28:
|
|
/* 0CD488 800D2A28 3B9E6800 */ addi r28, r30, EXI_REGS_BASE@l
|
|
/* 0CD48C 800D2A2C 841C0034 */ lwzu r0, EXI_2CR(r28)
|
|
/* 0CD490 800D2A30 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD494 800D2A34 4082FFF4 */ bne lbl_800D2A28
|
|
/* 0CD498 800D2A38 387B0000 */ addi r3, r27, 0
|
|
/* 0CD49C 800D2A3C 38800004 */ li r4, 4
|
|
/* 0CD4A0 800D2A40 38A00000 */ li r5, 0
|
|
/* 0CD4A4 800D2A44 480002A9 */ bl DBGEXIImm
|
|
/* 0CD4A8 800D2A48 7C600034 */ cntlzw r0, r3
|
|
/* 0CD4AC 800D2A4C 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD4B0 800D2A50 7FE30378 */ or r3, r31, r0
|
|
lbl_800D2A54:
|
|
/* 0CD4B4 800D2A54 801C0000 */ lwz r0, 0(r28)
|
|
/* 0CD4B8 800D2A58 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD4BC 800D2A5C 4082FFF8 */ bne lbl_800D2A54
|
|
/* 0CD4C0 800D2A60 809D0000 */ lwz r4, 0(r29)
|
|
/* 0CD4C4 800D2A64 7C600034 */ cntlzw r0, r3
|
|
/* 0CD4C8 800D2A68 5403D97E */ srwi r3, r0, 5
|
|
/* 0CD4CC 800D2A6C 70800405 */ andi. r0, r4, 0x405
|
|
/* 0CD4D0 800D2A70 901D0000 */ stw r0, 0(r29)
|
|
/* 0CD4D4 800D2A74 BB610024 */ lmw r27, 0x24(r1)
|
|
/* 0CD4D8 800D2A78 8001003C */ lwz r0, 0x3c(r1)
|
|
/* 0CD4DC 800D2A7C 38210038 */ addi r1, r1, 0x38
|
|
/* 0CD4E0 800D2A80 7C0803A6 */ mtlr r0
|
|
/* 0CD4E4 800D2A84 4E800020 */ blr
|
|
|
|
DBGWrite:
|
|
/* 0CD4E8 800D2A88 7C0802A6 */ mflr r0
|
|
/* 0CD4EC 800D2A8C 90010004 */ stw r0, 4(r1)
|
|
/* 0CD4F0 800D2A90 546041EA */ rlwinm r0, r3, 8, 7, 0x15
|
|
/* 0CD4F4 800D2A94 6400A000 */ oris r0, r0, 0xa000
|
|
/* 0CD4F8 800D2A98 9421FFC0 */ stwu r1, -0x40(r1)
|
|
/* 0CD4FC 800D2A9C BF410028 */ stmw r26, 0x28(r1)
|
|
/* 0CD500 800D2AA0 3FA0CC00 */ lis r29, EXI_REGS_BASE@ha
|
|
/* 0CD504 800D2AA4 3BC50000 */ addi r30, r5, 0
|
|
/* 0CD508 800D2AA8 3B440000 */ addi r26, r4, 0
|
|
/* 0CD50C 800D2AAC 3BFD6800 */ addi r31, r29, EXI_REGS_BASE@l
|
|
/* 0CD510 800D2AB0 38610024 */ addi r3, r1, 0x24
|
|
/* 0CD514 800D2AB4 38800004 */ li r4, 4
|
|
/* 0CD518 800D2AB8 38A00001 */ li r5, 1
|
|
/* 0CD51C 800D2ABC 80DD6828 */ lwz r6, (EXI_REGS_BASE + EXI_28)@l(r29)
|
|
/* 0CD520 800D2AC0 70C60405 */ andi. r6, r6, 0x405
|
|
/* 0CD524 800D2AC4 60C600C0 */ ori r6, r6, 0xc0
|
|
/* 0CD528 800D2AC8 94DF0028 */ stwu r6, EXI_28(r31)
|
|
/* 0CD52C 800D2ACC 90010024 */ stw r0, 0x24(r1)
|
|
/* 0CD530 800D2AD0 4800021D */ bl DBGEXIImm
|
|
/* 0CD534 800D2AD4 7C600034 */ cntlzw r0, r3
|
|
/* 0CD538 800D2AD8 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD53C 800D2ADC 7C1B0378 */ mr r27, r0
|
|
lbl_800D2AE0:
|
|
/* 0CD540 800D2AE0 3B9D6800 */ addi r28, r29, EXI_REGS_BASE@l
|
|
/* 0CD544 800D2AE4 841C0034 */ lwzu r0, EXI_2CR(r28)
|
|
/* 0CD548 800D2AE8 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD54C 800D2AEC 4082FFF4 */ bne lbl_800D2AE0
|
|
/* 0CD550 800D2AF0 48000044 */ b lbl_800D2B34
|
|
lbl_800D2AF4:
|
|
/* 0CD554 800D2AF4 801A0000 */ lwz r0, 0(r26)
|
|
/* 0CD558 800D2AF8 38610020 */ addi r3, r1, 0x20
|
|
/* 0CD55C 800D2AFC 38800004 */ li r4, 4
|
|
/* 0CD560 800D2B00 90010020 */ stw r0, 0x20(r1)
|
|
/* 0CD564 800D2B04 38A00001 */ li r5, 1
|
|
/* 0CD568 800D2B08 3B5A0004 */ addi r26, r26, 4
|
|
/* 0CD56C 800D2B0C 480001E1 */ bl DBGEXIImm
|
|
/* 0CD570 800D2B10 7C600034 */ cntlzw r0, r3
|
|
/* 0CD574 800D2B14 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD578 800D2B18 7F7B0378 */ or r27, r27, r0
|
|
lbl_800D2B1C:
|
|
/* 0CD57C 800D2B1C 801C0000 */ lwz r0, 0(r28)
|
|
/* 0CD580 800D2B20 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD584 800D2B24 4082FFF8 */ bne lbl_800D2B1C
|
|
/* 0CD588 800D2B28 37DEFFFC */ addic. r30, r30, -4
|
|
/* 0CD58C 800D2B2C 40800008 */ bge lbl_800D2B34
|
|
/* 0CD590 800D2B30 3BC00000 */ li r30, 0
|
|
lbl_800D2B34:
|
|
/* 0CD594 800D2B34 2C1E0000 */ cmpwi r30, 0
|
|
/* 0CD598 800D2B38 4082FFBC */ bne lbl_800D2AF4
|
|
/* 0CD59C 800D2B3C 809F0000 */ lwz r4, 0(r31)
|
|
/* 0CD5A0 800D2B40 7F600034 */ cntlzw r0, r27
|
|
/* 0CD5A4 800D2B44 5403D97E */ srwi r3, r0, 5
|
|
/* 0CD5A8 800D2B48 70800405 */ andi. r0, r4, 0x405
|
|
/* 0CD5AC 800D2B4C 901F0000 */ stw r0, 0(r31)
|
|
/* 0CD5B0 800D2B50 BB410028 */ lmw r26, 0x28(r1)
|
|
/* 0CD5B4 800D2B54 80010044 */ lwz r0, 0x44(r1)
|
|
/* 0CD5B8 800D2B58 38210040 */ addi r1, r1, 0x40
|
|
/* 0CD5BC 800D2B5C 7C0803A6 */ mtlr r0
|
|
/* 0CD5C0 800D2B60 4E800020 */ blr
|
|
|
|
DBGRead:
|
|
/* 0CD5C4 800D2B64 7C0802A6 */ mflr r0
|
|
/* 0CD5C8 800D2B68 90010004 */ stw r0, 4(r1)
|
|
/* 0CD5CC 800D2B6C 546041EA */ rlwinm r0, r3, 8, 7, 0x15
|
|
/* 0CD5D0 800D2B70 64002000 */ oris r0, r0, 0x2000
|
|
/* 0CD5D4 800D2B74 9421FFC0 */ stwu r1, -0x40(r1)
|
|
/* 0CD5D8 800D2B78 BF410028 */ stmw r26, 0x28(r1)
|
|
/* 0CD5DC 800D2B7C 3FA0CC00 */ lis r29, EXI_REGS_BASE@ha
|
|
/* 0CD5E0 800D2B80 3BC50000 */ addi r30, r5, 0
|
|
/* 0CD5E4 800D2B84 3B440000 */ addi r26, r4, 0
|
|
/* 0CD5E8 800D2B88 3BFD6800 */ addi r31, r29, EXI_REGS_BASE@l
|
|
/* 0CD5EC 800D2B8C 38610024 */ addi r3, r1, 0x24
|
|
/* 0CD5F0 800D2B90 38800004 */ li r4, 4
|
|
/* 0CD5F4 800D2B94 38A00001 */ li r5, 1
|
|
/* 0CD5F8 800D2B98 80DD6828 */ lwz r6, (EXI_REGS_BASE + EXI_28)@l(r29)
|
|
/* 0CD5FC 800D2B9C 70C60405 */ andi. r6, r6, 0x405
|
|
/* 0CD600 800D2BA0 60C600C0 */ ori r6, r6, 0xc0
|
|
/* 0CD604 800D2BA4 94DF0028 */ stwu r6, EXI_28(r31)
|
|
/* 0CD608 800D2BA8 90010024 */ stw r0, 0x24(r1)
|
|
/* 0CD60C 800D2BAC 48000141 */ bl DBGEXIImm
|
|
/* 0CD610 800D2BB0 7C600034 */ cntlzw r0, r3
|
|
/* 0CD614 800D2BB4 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD618 800D2BB8 7C1B0378 */ mr r27, r0
|
|
lbl_800D2BBC:
|
|
/* 0CD61C 800D2BBC 3B9D6800 */ addi r28, r29, EXI_REGS_BASE@l
|
|
/* 0CD620 800D2BC0 841C0034 */ lwzu r0, EXI_2CR(r28)
|
|
/* 0CD624 800D2BC4 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD628 800D2BC8 4082FFF4 */ bne lbl_800D2BBC
|
|
/* 0CD62C 800D2BCC 48000044 */ b lbl_800D2C10
|
|
lbl_800D2BD0:
|
|
/* 0CD630 800D2BD0 38610020 */ addi r3, r1, 0x20
|
|
/* 0CD634 800D2BD4 38800004 */ li r4, 4
|
|
/* 0CD638 800D2BD8 38A00000 */ li r5, 0
|
|
/* 0CD63C 800D2BDC 48000111 */ bl DBGEXIImm
|
|
/* 0CD640 800D2BE0 7C600034 */ cntlzw r0, r3
|
|
/* 0CD644 800D2BE4 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD648 800D2BE8 7F7B0378 */ or r27, r27, r0
|
|
lbl_800D2BEC:
|
|
/* 0CD64C 800D2BEC 801C0000 */ lwz r0, 0(r28)
|
|
/* 0CD650 800D2BF0 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD654 800D2BF4 4082FFF8 */ bne lbl_800D2BEC
|
|
/* 0CD658 800D2BF8 80010020 */ lwz r0, 0x20(r1)
|
|
/* 0CD65C 800D2BFC 37DEFFFC */ addic. r30, r30, -4
|
|
/* 0CD660 800D2C00 901A0000 */ stw r0, 0(r26)
|
|
/* 0CD664 800D2C04 3B5A0004 */ addi r26, r26, 4
|
|
/* 0CD668 800D2C08 40800008 */ bge lbl_800D2C10
|
|
/* 0CD66C 800D2C0C 3BC00000 */ li r30, 0
|
|
lbl_800D2C10:
|
|
/* 0CD670 800D2C10 2C1E0000 */ cmpwi r30, 0
|
|
/* 0CD674 800D2C14 4082FFBC */ bne lbl_800D2BD0
|
|
/* 0CD678 800D2C18 809F0000 */ lwz r4, 0(r31)
|
|
/* 0CD67C 800D2C1C 7F600034 */ cntlzw r0, r27
|
|
/* 0CD680 800D2C20 5403D97E */ srwi r3, r0, 5
|
|
/* 0CD684 800D2C24 70800405 */ andi. r0, r4, 0x405
|
|
/* 0CD688 800D2C28 901F0000 */ stw r0, 0(r31)
|
|
/* 0CD68C 800D2C2C BB410028 */ lmw r26, 0x28(r1)
|
|
/* 0CD690 800D2C30 80010044 */ lwz r0, 0x44(r1)
|
|
/* 0CD694 800D2C34 38210040 */ addi r1, r1, 0x40
|
|
/* 0CD698 800D2C38 7C0803A6 */ mtlr r0
|
|
/* 0CD69C 800D2C3C 4E800020 */ blr
|
|
|
|
DBGReadMailbox:
|
|
/* 0CD6A0 800D2C40 7C0802A6 */ mflr r0
|
|
/* 0CD6A4 800D2C44 38800002 */ li r4, 2
|
|
/* 0CD6A8 800D2C48 90010004 */ stw r0, 4(r1)
|
|
/* 0CD6AC 800D2C4C 3C006000 */ lis r0, 0x6000
|
|
/* 0CD6B0 800D2C50 9421FFC8 */ stwu r1, -0x38(r1)
|
|
/* 0CD6B4 800D2C54 BF610024 */ stmw r27, 0x24(r1)
|
|
/* 0CD6B8 800D2C58 3FC0CC00 */ lis r30, EXI_REGS_BASE@ha
|
|
/* 0CD6BC 800D2C5C 3B630000 */ addi r27, r3, 0
|
|
/* 0CD6C0 800D2C60 3BBE6800 */ addi r29, r30, EXI_REGS_BASE@l
|
|
/* 0CD6C4 800D2C64 38610018 */ addi r3, r1, 0x18
|
|
/* 0CD6C8 800D2C68 80BE6828 */ lwz r5, (EXI_REGS_BASE + EXI_28)@l(r30)
|
|
/* 0CD6CC 800D2C6C 70A50405 */ andi. r5, r5, 0x405
|
|
/* 0CD6D0 800D2C70 60A500C0 */ ori r5, r5, 0xc0
|
|
/* 0CD6D4 800D2C74 94BD0028 */ stwu r5, EXI_28(r29)
|
|
/* 0CD6D8 800D2C78 38A00001 */ li r5, 1
|
|
/* 0CD6DC 800D2C7C 90010018 */ stw r0, 0x18(r1)
|
|
/* 0CD6E0 800D2C80 4800006D */ bl DBGEXIImm
|
|
/* 0CD6E4 800D2C84 7C600034 */ cntlzw r0, r3
|
|
/* 0CD6E8 800D2C88 541FD97E */ srwi r31, r0, 5
|
|
lbl_800D2C8C:
|
|
/* 0CD6EC 800D2C8C 3B9E6800 */ addi r28, r30, EXI_REGS_BASE@l
|
|
/* 0CD6F0 800D2C90 841C0034 */ lwzu r0, EXI_2CR(r28)
|
|
/* 0CD6F4 800D2C94 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD6F8 800D2C98 4082FFF4 */ bne lbl_800D2C8C
|
|
/* 0CD6FC 800D2C9C 387B0000 */ addi r3, r27, 0
|
|
/* 0CD700 800D2CA0 38800004 */ li r4, 4
|
|
/* 0CD704 800D2CA4 38A00000 */ li r5, 0
|
|
/* 0CD708 800D2CA8 48000045 */ bl DBGEXIImm
|
|
/* 0CD70C 800D2CAC 7C600034 */ cntlzw r0, r3
|
|
/* 0CD710 800D2CB0 5400D97E */ srwi r0, r0, 5
|
|
/* 0CD714 800D2CB4 7FE30378 */ or r3, r31, r0
|
|
lbl_800D2CB8:
|
|
/* 0CD718 800D2CB8 801C0000 */ lwz r0, 0(r28)
|
|
/* 0CD71C 800D2CBC 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD720 800D2CC0 4082FFF8 */ bne lbl_800D2CB8
|
|
/* 0CD724 800D2CC4 809D0000 */ lwz r4, 0(r29)
|
|
/* 0CD728 800D2CC8 7C600034 */ cntlzw r0, r3
|
|
/* 0CD72C 800D2CCC 5403D97E */ srwi r3, r0, 5
|
|
/* 0CD730 800D2CD0 70800405 */ andi. r0, r4, 0x405
|
|
/* 0CD734 800D2CD4 901D0000 */ stw r0, 0(r29)
|
|
/* 0CD738 800D2CD8 BB610024 */ lmw r27, 0x24(r1)
|
|
/* 0CD73C 800D2CDC 8001003C */ lwz r0, 0x3c(r1)
|
|
/* 0CD740 800D2CE0 38210038 */ addi r1, r1, 0x38
|
|
/* 0CD744 800D2CE4 7C0803A6 */ mtlr r0
|
|
/* 0CD748 800D2CE8 4E800020 */ blr
|
|
|
|
DBGEXIImm:
|
|
/* 0CD74C 800D2CEC 9421FFB8 */ stwu r1, -0x48(r1)
|
|
/* 0CD750 800D2CF0 28050000 */ cmplwi r5, 0
|
|
/* 0CD754 800D2CF4 BEC10020 */ stmw r22, 0x20(r1)
|
|
/* 0CD758 800D2CF8 41820138 */ beq lbl_800D2E30
|
|
/* 0CD75C 800D2CFC 3BA00000 */ li r29, 0
|
|
/* 0CD760 800D2D00 7C1D2000 */ cmpw r29, r4
|
|
/* 0CD764 800D2D04 3BC00000 */ li r30, 0
|
|
/* 0CD768 800D2D08 40800120 */ bge lbl_800D2E28
|
|
/* 0CD76C 800D2D0C 2C040008 */ cmpwi r4, 8
|
|
/* 0CD770 800D2D10 38C4FFF8 */ addi r6, r4, -8
|
|
/* 0CD774 800D2D14 4081025C */ ble lbl_800D2F70
|
|
/* 0CD778 800D2D18 38060007 */ addi r0, r6, 7
|
|
/* 0CD77C 800D2D1C 5400E8FE */ srwi r0, r0, 3
|
|
/* 0CD780 800D2D20 2C060000 */ cmpwi r6, 0
|
|
/* 0CD784 800D2D24 7C0903A6 */ mtctr r0
|
|
/* 0CD788 800D2D28 3BE30000 */ addi r31, r3, 0
|
|
/* 0CD78C 800D2D2C 40810244 */ ble lbl_800D2F70
|
|
lbl_800D2D30:
|
|
/* 0CD790 800D2D30 20DD0003 */ subfic r6, r29, 3
|
|
/* 0CD794 800D2D34 899F0000 */ lbz r12, 0(r31)
|
|
/* 0CD798 800D2D38 381D0001 */ addi r0, r29, 1
|
|
/* 0CD79C 800D2D3C 897F0001 */ lbz r11, 1(r31)
|
|
/* 0CD7A0 800D2D40 54CA1838 */ slwi r10, r6, 3
|
|
/* 0CD7A4 800D2D44 893F0002 */ lbz r9, 2(r31)
|
|
/* 0CD7A8 800D2D48 21000003 */ subfic r8, r0, 3
|
|
/* 0CD7AC 800D2D4C 88FF0003 */ lbz r7, 3(r31)
|
|
/* 0CD7B0 800D2D50 38DD0002 */ addi r6, r29, 2
|
|
/* 0CD7B4 800D2D54 881F0004 */ lbz r0, 4(r31)
|
|
/* 0CD7B8 800D2D58 7D8C5030 */ slw r12, r12, r10
|
|
/* 0CD7BC 800D2D5C 8AFF0005 */ lbz r23, 5(r31)
|
|
/* 0CD7C0 800D2D60 550A1838 */ slwi r10, r8, 3
|
|
/* 0CD7C4 800D2D64 8B3F0006 */ lbz r25, 6(r31)
|
|
/* 0CD7C8 800D2D68 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD7CC 800D2D6C 8B7F0007 */ lbz r27, 7(r31)
|
|
/* 0CD7D0 800D2D70 54C81838 */ slwi r8, r6, 3
|
|
/* 0CD7D4 800D2D74 7CDD00D0 */ neg r6, r29
|
|
/* 0CD7D8 800D2D78 3ADD0004 */ addi r22, r29, 4
|
|
/* 0CD7DC 800D2D7C 54C61838 */ slwi r6, r6, 3
|
|
/* 0CD7E0 800D2D80 22D60003 */ subfic r22, r22, 3
|
|
/* 0CD7E4 800D2D84 3B1D0005 */ addi r24, r29, 5
|
|
/* 0CD7E8 800D2D88 56D61838 */ slwi r22, r22, 3
|
|
/* 0CD7EC 800D2D8C 23180003 */ subfic r24, r24, 3
|
|
/* 0CD7F0 800D2D90 3B5D0006 */ addi r26, r29, 6
|
|
/* 0CD7F4 800D2D94 57181838 */ slwi r24, r24, 3
|
|
/* 0CD7F8 800D2D98 235A0003 */ subfic r26, r26, 3
|
|
/* 0CD7FC 800D2D9C 3B9D0007 */ addi r28, r29, 7
|
|
/* 0CD800 800D2DA0 575A1838 */ slwi r26, r26, 3
|
|
/* 0CD804 800D2DA4 239C0003 */ subfic r28, r28, 3
|
|
/* 0CD808 800D2DA8 579C1838 */ slwi r28, r28, 3
|
|
/* 0CD80C 800D2DAC 7FDE6378 */ or r30, r30, r12
|
|
/* 0CD810 800D2DB0 7D6A5030 */ slw r10, r11, r10
|
|
/* 0CD814 800D2DB4 7FDE5378 */ or r30, r30, r10
|
|
/* 0CD818 800D2DB8 7D284030 */ slw r8, r9, r8
|
|
/* 0CD81C 800D2DBC 7FDE4378 */ or r30, r30, r8
|
|
/* 0CD820 800D2DC0 7CE63030 */ slw r6, r7, r6
|
|
/* 0CD824 800D2DC4 7FDE3378 */ or r30, r30, r6
|
|
/* 0CD828 800D2DC8 7C00B030 */ slw r0, r0, r22
|
|
/* 0CD82C 800D2DCC 7FDE0378 */ or r30, r30, r0
|
|
/* 0CD830 800D2DD0 7EE0C030 */ slw r0, r23, r24
|
|
/* 0CD834 800D2DD4 7FDE0378 */ or r30, r30, r0
|
|
/* 0CD838 800D2DD8 7F20D030 */ slw r0, r25, r26
|
|
/* 0CD83C 800D2DDC 7FDE0378 */ or r30, r30, r0
|
|
/* 0CD840 800D2DE0 7F60E030 */ slw r0, r27, r28
|
|
/* 0CD844 800D2DE4 7FDE0378 */ or r30, r30, r0
|
|
/* 0CD848 800D2DE8 3BFF0008 */ addi r31, r31, 8
|
|
/* 0CD84C 800D2DEC 3BBD0008 */ addi r29, r29, 8
|
|
/* 0CD850 800D2DF0 4200FF40 */ bdnz lbl_800D2D30
|
|
/* 0CD854 800D2DF4 4800017C */ b lbl_800D2F70
|
|
lbl_800D2DF8:
|
|
/* 0CD858 800D2DF8 7C1D2050 */ subf r0, r29, r4
|
|
/* 0CD85C 800D2DFC 7C1D2000 */ cmpw r29, r4
|
|
/* 0CD860 800D2E00 7C0903A6 */ mtctr r0
|
|
/* 0CD864 800D2E04 40800024 */ bge lbl_800D2E28
|
|
lbl_800D2E08:
|
|
/* 0CD868 800D2E08 201D0003 */ subfic r0, r29, 3
|
|
/* 0CD86C 800D2E0C 88C70000 */ lbz r6, 0(r7)
|
|
/* 0CD870 800D2E10 54001838 */ slwi r0, r0, 3
|
|
/* 0CD874 800D2E14 7CC00030 */ slw r0, r6, r0
|
|
/* 0CD878 800D2E18 7FDE0378 */ or r30, r30, r0
|
|
/* 0CD87C 800D2E1C 38E70001 */ addi r7, r7, 1
|
|
/* 0CD880 800D2E20 3BBD0001 */ addi r29, r29, 1
|
|
/* 0CD884 800D2E24 4200FFE4 */ bdnz lbl_800D2E08
|
|
lbl_800D2E28:
|
|
/* 0CD888 800D2E28 3CC0CC00 */ lis r6, EXI_REGS_BASE@ha
|
|
/* 0CD88C 800D2E2C 93C66838 */ stw r30, (EXI_REGS_BASE + EXI_2DATA)@l(r6)
|
|
lbl_800D2E30:
|
|
/* 0CD890 800D2E30 3804FFFF */ addi r0, r4, -1
|
|
/* 0CD894 800D2E34 3CC0CC00 */ lis r6, EXI_REGS_BASE@ha
|
|
/* 0CD898 800D2E38 54A7103A */ slwi r7, r5, 2
|
|
/* 0CD89C 800D2E3C 39066800 */ addi r8, r6, EXI_REGS_BASE@l
|
|
/* 0CD8A0 800D2E40 60E60001 */ ori r6, r7, 1
|
|
/* 0CD8A4 800D2E44 54002036 */ slwi r0, r0, 4
|
|
/* 0CD8A8 800D2E48 7CC00378 */ or r0, r6, r0
|
|
/* 0CD8AC 800D2E4C 94080034 */ stwu r0, EXI_2CR(r8)
|
|
lbl_800D2E50:
|
|
/* 0CD8B0 800D2E50 80080000 */ lwz r0, 0(r8)
|
|
/* 0CD8B4 800D2E54 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 0CD8B8 800D2E58 4082FFF8 */ bne lbl_800D2E50
|
|
/* 0CD8BC 800D2E5C 28050000 */ cmplwi r5, 0
|
|
/* 0CD8C0 800D2E60 40820108 */ bne lbl_800D2F68
|
|
/* 0CD8C4 800D2E64 38A00000 */ li r5, 0
|
|
/* 0CD8C8 800D2E68 3CC0CC00 */ lis r6, EXI_REGS_BASE@ha
|
|
/* 0CD8CC 800D2E6C 7C052000 */ cmpw r5, r4
|
|
/* 0CD8D0 800D2E70 80066838 */ lwz r0, (EXI_REGS_BASE + EXI_2DATA)@l(r6)
|
|
/* 0CD8D4 800D2E74 408000F4 */ bge lbl_800D2F68
|
|
/* 0CD8D8 800D2E78 2C040008 */ cmpwi r4, 8
|
|
/* 0CD8DC 800D2E7C 38E4FFF8 */ addi r7, r4, -8
|
|
/* 0CD8E0 800D2E80 408100BC */ ble lbl_800D2F3C
|
|
/* 0CD8E4 800D2E84 38C70007 */ addi r6, r7, 7
|
|
/* 0CD8E8 800D2E88 54C6E8FE */ srwi r6, r6, 3
|
|
/* 0CD8EC 800D2E8C 2C070000 */ cmpwi r7, 0
|
|
/* 0CD8F0 800D2E90 7CC903A6 */ mtctr r6
|
|
/* 0CD8F4 800D2E94 408100A8 */ ble lbl_800D2F3C
|
|
lbl_800D2E98:
|
|
/* 0CD8F8 800D2E98 20C50003 */ subfic r6, r5, 3
|
|
/* 0CD8FC 800D2E9C 54C71838 */ slwi r7, r6, 3
|
|
/* 0CD900 800D2EA0 38C50001 */ addi r6, r5, 1
|
|
/* 0CD904 800D2EA4 7C083C30 */ srw r8, r0, r7
|
|
/* 0CD908 800D2EA8 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD90C 800D2EAC 99030000 */ stb r8, 0(r3)
|
|
/* 0CD910 800D2EB0 54C71838 */ slwi r7, r6, 3
|
|
/* 0CD914 800D2EB4 38C50002 */ addi r6, r5, 2
|
|
/* 0CD918 800D2EB8 7C0C3C30 */ srw r12, r0, r7
|
|
/* 0CD91C 800D2EBC 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD920 800D2EC0 99830001 */ stb r12, 1(r3)
|
|
/* 0CD924 800D2EC4 54C61838 */ slwi r6, r6, 3
|
|
/* 0CD928 800D2EC8 7C0B3430 */ srw r11, r0, r6
|
|
/* 0CD92C 800D2ECC 7CC500D0 */ neg r6, r5
|
|
/* 0CD930 800D2ED0 99630002 */ stb r11, 2(r3)
|
|
/* 0CD934 800D2ED4 54C71838 */ slwi r7, r6, 3
|
|
/* 0CD938 800D2ED8 38C50004 */ addi r6, r5, 4
|
|
/* 0CD93C 800D2EDC 7C0A3C30 */ srw r10, r0, r7
|
|
/* 0CD940 800D2EE0 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD944 800D2EE4 99430003 */ stb r10, 3(r3)
|
|
/* 0CD948 800D2EE8 54C71838 */ slwi r7, r6, 3
|
|
/* 0CD94C 800D2EEC 38C50005 */ addi r6, r5, 5
|
|
/* 0CD950 800D2EF0 7C093C30 */ srw r9, r0, r7
|
|
/* 0CD954 800D2EF4 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD958 800D2EF8 99230004 */ stb r9, 4(r3)
|
|
/* 0CD95C 800D2EFC 54C71838 */ slwi r7, r6, 3
|
|
/* 0CD960 800D2F00 7C083C30 */ srw r8, r0, r7
|
|
/* 0CD964 800D2F04 38C50006 */ addi r6, r5, 6
|
|
/* 0CD968 800D2F08 99030005 */ stb r8, 5(r3)
|
|
/* 0CD96C 800D2F0C 20E60003 */ subfic r7, r6, 3
|
|
/* 0CD970 800D2F10 38C50007 */ addi r6, r5, 7
|
|
/* 0CD974 800D2F14 54E71838 */ slwi r7, r7, 3
|
|
/* 0CD978 800D2F18 7C073C30 */ srw r7, r0, r7
|
|
/* 0CD97C 800D2F1C 20C60003 */ subfic r6, r6, 3
|
|
/* 0CD980 800D2F20 98E30006 */ stb r7, 6(r3)
|
|
/* 0CD984 800D2F24 54C61838 */ slwi r6, r6, 3
|
|
/* 0CD988 800D2F28 7C063430 */ srw r6, r0, r6
|
|
/* 0CD98C 800D2F2C 98C30007 */ stb r6, 7(r3)
|
|
/* 0CD990 800D2F30 38630008 */ addi r3, r3, 8
|
|
/* 0CD994 800D2F34 38A50008 */ addi r5, r5, 8
|
|
/* 0CD998 800D2F38 4200FF60 */ bdnz lbl_800D2E98
|
|
lbl_800D2F3C:
|
|
/* 0CD99C 800D2F3C 7CC52050 */ subf r6, r5, r4
|
|
/* 0CD9A0 800D2F40 7C052000 */ cmpw r5, r4
|
|
/* 0CD9A4 800D2F44 7CC903A6 */ mtctr r6
|
|
/* 0CD9A8 800D2F48 40800020 */ bge lbl_800D2F68
|
|
lbl_800D2F4C:
|
|
/* 0CD9AC 800D2F4C 20850003 */ subfic r4, r5, 3
|
|
/* 0CD9B0 800D2F50 54841838 */ slwi r4, r4, 3
|
|
/* 0CD9B4 800D2F54 7C042430 */ srw r4, r0, r4
|
|
/* 0CD9B8 800D2F58 98830000 */ stb r4, 0(r3)
|
|
/* 0CD9BC 800D2F5C 38630001 */ addi r3, r3, 1
|
|
/* 0CD9C0 800D2F60 38A50001 */ addi r5, r5, 1
|
|
/* 0CD9C4 800D2F64 4200FFE8 */ bdnz lbl_800D2F4C
|
|
lbl_800D2F68:
|
|
/* 0CD9C8 800D2F68 38600001 */ li r3, 1
|
|
/* 0CD9CC 800D2F6C 4800000C */ b lbl_800D2F78
|
|
lbl_800D2F70:
|
|
/* 0CD9D0 800D2F70 7CE3EA14 */ add r7, r3, r29
|
|
/* 0CD9D4 800D2F74 4BFFFE84 */ b lbl_800D2DF8
|
|
lbl_800D2F78:
|
|
/* 0CD9D8 800D2F78 BAC10020 */ lmw r22, 0x20(r1)
|
|
/* 0CD9DC 800D2F7C 38210048 */ addi r1, r1, 0x48
|
|
/* 0CD9E0 800D2F80 4E800020 */ blr
|
|
|
|
.section .sdata, "wa"
|
|
|
|
.balign 8
|
|
|
|
/* 000F17F8 80135578 0001 */
|
|
SendCount:
|
|
.byte 0x80
|
|
|
|
.section .sbss, "wa"
|
|
|
|
.balign 8
|
|
|
|
/* 000F1F68 80135CE8 0004 */
|
|
MTRCallback:
|
|
.skip 4
|
|
|
|
/* 000F1F6C 80135CEC 0004 */
|
|
DBGCallback:
|
|
.skip 4
|
|
|
|
/* 000F1F70 80135CF0 0004 */
|
|
SendMailData:
|
|
.skip 4
|
|
|
|
/* 000F1F74 80135CF4 0004 */
|
|
RecvDataLeng:
|
|
.skip 4
|
|
|
|
/* 000F1F78 80135CF8 0004 */
|
|
pEXIInputFlag:
|
|
.skip 4
|
|
|
|
/* 000F1F7C 80135CFC 0001 */
|
|
EXIInputFlag:
|
|
.skip 1
|