.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global EUARTInit EUARTInit: /* 802B38B0 002AF510 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802B38B4 002AF514 7C 08 02 A6 */ mflr r0 /* 802B38B8 002AF518 90 01 00 24 */ stw r0, 0x24(r1) /* 802B38BC 002AF51C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802B38C0 002AF520 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13) /* 802B38C4 002AF524 2C 00 00 00 */ cmpwi r0, 0 /* 802B38C8 002AF528 41 82 00 0C */ beq lbl_802B38D4 /* 802B38CC 002AF52C 38 60 00 01 */ li r3, 1 /* 802B38D0 002AF530 48 00 00 C8 */ b lbl_802B3998 lbl_802B38D4: /* 802B38D4 002AF534 4B FB 4C 59 */ bl OSGetConsoleType /* 802B38D8 002AF538 54 60 00 C7 */ rlwinm. r0, r3, 0, 3, 3 /* 802B38DC 002AF53C 40 82 00 14 */ bne lbl_802B38F0 /* 802B38E0 002AF540 38 00 00 02 */ li r0, 2 /* 802B38E4 002AF544 38 60 00 00 */ li r3, 0 /* 802B38E8 002AF548 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13) /* 802B38EC 002AF54C 48 00 00 AC */ b lbl_802B3998 lbl_802B38F0: /* 802B38F0 002AF550 4B FB AE 6D */ bl OSDisableInterrupts /* 802B38F4 002AF554 38 00 00 F2 */ li r0, 0xf2 /* 802B38F8 002AF558 7C 7F 1B 78 */ mr r31, r3 /* 802B38FC 002AF55C 98 01 00 08 */ stb r0, 8(r1) /* 802B3900 002AF560 38 C1 00 08 */ addi r6, r1, 8 /* 802B3904 002AF564 38 60 00 00 */ li r3, 0 /* 802B3908 002AF568 38 80 00 01 */ li r4, 1 /* 802B390C 002AF56C 3C A0 B0 00 */ lis r5, 0xb000 /* 802B3910 002AF570 38 E0 00 01 */ li r7, 1 /* 802B3914 002AF574 4B FC 28 0D */ bl EXIWriteReg /* 802B3918 002AF578 2C 03 00 00 */ cmpwi r3, 0 /* 802B391C 002AF57C 40 82 00 1C */ bne lbl_802B3938 /* 802B3920 002AF580 38 00 00 05 */ li r0, 5 /* 802B3924 002AF584 7F E3 FB 78 */ mr r3, r31 /* 802B3928 002AF588 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13) /* 802B392C 002AF58C 4B FB AE 59 */ bl OSRestoreInterrupts /* 802B3930 002AF590 38 60 00 00 */ li r3, 0 /* 802B3934 002AF594 48 00 00 64 */ b lbl_802B3998 lbl_802B3938: /* 802B3938 002AF598 38 00 00 F3 */ li r0, 0xf3 /* 802B393C 002AF59C 38 C1 00 08 */ addi r6, r1, 8 /* 802B3940 002AF5A0 98 01 00 08 */ stb r0, 8(r1) /* 802B3944 002AF5A4 38 60 00 00 */ li r3, 0 /* 802B3948 002AF5A8 38 80 00 01 */ li r4, 1 /* 802B394C 002AF5AC 3C A0 B0 00 */ lis r5, 0xb000 /* 802B3950 002AF5B0 38 E0 00 01 */ li r7, 1 /* 802B3954 002AF5B4 4B FC 27 CD */ bl EXIWriteReg /* 802B3958 002AF5B8 2C 03 00 00 */ cmpwi r3, 0 /* 802B395C 002AF5BC 40 82 00 1C */ bne lbl_802B3978 /* 802B3960 002AF5C0 38 00 00 05 */ li r0, 5 /* 802B3964 002AF5C4 7F E3 FB 78 */ mr r3, r31 /* 802B3968 002AF5C8 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13) /* 802B396C 002AF5CC 4B FB AE 19 */ bl OSRestoreInterrupts /* 802B3970 002AF5D0 38 60 00 00 */ li r3, 0 /* 802B3974 002AF5D4 48 00 00 24 */ b lbl_802B3998 lbl_802B3978: /* 802B3978 002AF5D8 7F E3 FB 78 */ mr r3, r31 /* 802B397C 002AF5DC 4B FB AE 09 */ bl OSRestoreInterrupts /* 802B3980 002AF5E0 38 00 00 00 */ li r0, 0 /* 802B3984 002AF5E4 38 60 00 01 */ li r3, 1 /* 802B3988 002AF5E8 90 6D AE 88 */ stw r3, lbl_80640148-_SDA_BASE_(r13) /* 802B398C 002AF5EC 38 60 00 01 */ li r3, 1 /* 802B3990 002AF5F0 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13) /* 802B3994 002AF5F4 90 0D AE 90 */ stw r0, lbl_80640150-_SDA_BASE_(r13) lbl_802B3998: /* 802B3998 002AF5F8 80 01 00 24 */ lwz r0, 0x24(r1) /* 802B399C 002AF5FC 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802B39A0 002AF600 7C 08 03 A6 */ mtlr r0 /* 802B39A4 002AF604 38 21 00 20 */ addi r1, r1, 0x20 /* 802B39A8 002AF608 4E 80 00 20 */ blr .global InitializeUART InitializeUART: /* 802B39AC 002AF60C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802B39B0 002AF610 7C 08 02 A6 */ mflr r0 /* 802B39B4 002AF614 90 01 00 14 */ stw r0, 0x14(r1) /* 802B39B8 002AF618 4B FB 4B 75 */ bl OSGetConsoleType /* 802B39BC 002AF61C 54 60 00 C7 */ rlwinm. r0, r3, 0, 3, 3 /* 802B39C0 002AF620 40 82 00 14 */ bne lbl_802B39D4 /* 802B39C4 002AF624 38 00 00 00 */ li r0, 0 /* 802B39C8 002AF628 38 60 00 02 */ li r3, 2 /* 802B39CC 002AF62C 90 0D AE 94 */ stw r0, lbl_80640154-_SDA_BASE_(r13) /* 802B39D0 002AF630 48 00 00 14 */ b lbl_802B39E4 lbl_802B39D4: /* 802B39D4 002AF634 3C 80 A5 FF */ lis r4, 0xA5FF005A@ha /* 802B39D8 002AF638 38 60 00 00 */ li r3, 0 /* 802B39DC 002AF63C 38 04 00 5A */ addi r0, r4, 0xA5FF005A@l /* 802B39E0 002AF640 90 0D AE 94 */ stw r0, lbl_80640154-_SDA_BASE_(r13) lbl_802B39E4: /* 802B39E4 002AF644 80 01 00 14 */ lwz r0, 0x14(r1) /* 802B39E8 002AF648 7C 08 03 A6 */ mtlr r0 /* 802B39EC 002AF64C 38 21 00 10 */ addi r1, r1, 0x10 /* 802B39F0 002AF650 4E 80 00 20 */ blr .global WriteUARTN WriteUARTN: /* 802B39F4 002AF654 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802B39F8 002AF658 7C 08 02 A6 */ mflr r0 /* 802B39FC 002AF65C 90 01 00 34 */ stw r0, 0x34(r1) /* 802B3A00 002AF660 39 61 00 30 */ addi r11, r1, 0x30 /* 802B3A04 002AF664 4B F1 37 21 */ bl _savegpr_26 /* 802B3A08 002AF668 80 AD AE 94 */ lwz r5, lbl_80640154-_SDA_BASE_(r13) /* 802B3A0C 002AF66C 7C 7E 1B 78 */ mr r30, r3 /* 802B3A10 002AF670 7C 9F 23 78 */ mr r31, r4 /* 802B3A14 002AF674 3C 05 5A 01 */ addis r0, r5, 0x5a01 /* 802B3A18 002AF678 28 00 00 5A */ cmplwi r0, 0x5a /* 802B3A1C 002AF67C 41 82 00 0C */ beq lbl_802B3A28 /* 802B3A20 002AF680 38 60 00 02 */ li r3, 2 /* 802B3A24 002AF684 48 00 01 E4 */ b lbl_802B3C08 lbl_802B3A28: /* 802B3A28 002AF688 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13) /* 802B3A2C 002AF68C 2C 00 00 00 */ cmpwi r0, 0 /* 802B3A30 002AF690 40 82 00 18 */ bne lbl_802B3A48 /* 802B3A34 002AF694 4B FF FE 7D */ bl EUARTInit /* 802B3A38 002AF698 2C 03 00 00 */ cmpwi r3, 0 /* 802B3A3C 002AF69C 40 82 00 0C */ bne lbl_802B3A48 /* 802B3A40 002AF6A0 38 60 00 02 */ li r3, 2 /* 802B3A44 002AF6A4 48 00 01 C4 */ b lbl_802B3C08 lbl_802B3A48: /* 802B3A48 002AF6A8 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13) /* 802B3A4C 002AF6AC 2C 00 00 00 */ cmpwi r0, 0 /* 802B3A50 002AF6B0 40 82 00 14 */ bne lbl_802B3A64 /* 802B3A54 002AF6B4 38 00 00 01 */ li r0, 1 /* 802B3A58 002AF6B8 38 60 00 02 */ li r3, 2 /* 802B3A5C 002AF6BC 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13) /* 802B3A60 002AF6C0 48 00 01 A8 */ b lbl_802B3C08 lbl_802B3A64: /* 802B3A64 002AF6C4 38 60 00 00 */ li r3, 0 /* 802B3A68 002AF6C8 38 80 00 01 */ li r4, 1 /* 802B3A6C 002AF6CC 38 A0 00 00 */ li r5, 0 /* 802B3A70 002AF6D0 4B FC 1D D5 */ bl EXILock /* 802B3A74 002AF6D4 2C 03 00 00 */ cmpwi r3, 0 /* 802B3A78 002AF6D8 40 82 00 0C */ bne lbl_802B3A84 /* 802B3A7C 002AF6DC 38 60 00 00 */ li r3, 0 /* 802B3A80 002AF6E0 48 00 01 88 */ b lbl_802B3C08 lbl_802B3A84: /* 802B3A84 002AF6E4 7F C4 F3 78 */ mr r4, r30 /* 802B3A88 002AF6E8 38 60 00 0D */ li r3, 0xd /* 802B3A8C 002AF6EC 48 00 00 18 */ b lbl_802B3AA4 lbl_802B3A90: /* 802B3A90 002AF6F0 88 04 00 00 */ lbz r0, 0(r4) /* 802B3A94 002AF6F4 2C 00 00 0A */ cmpwi r0, 0xa /* 802B3A98 002AF6F8 40 82 00 08 */ bne lbl_802B3AA0 /* 802B3A9C 002AF6FC 98 64 00 00 */ stb r3, 0(r4) lbl_802B3AA0: /* 802B3AA0 002AF700 38 84 00 01 */ addi r4, r4, 1 lbl_802B3AA4: /* 802B3AA4 002AF704 7C 1E 20 50 */ subf r0, r30, r4 /* 802B3AA8 002AF708 7C 00 F8 40 */ cmplw r0, r31 /* 802B3AAC 002AF70C 41 80 FF E4 */ blt lbl_802B3A90 /* 802B3AB0 002AF710 3C 60 B0 00 */ lis r3, 0xB0000100@ha /* 802B3AB4 002AF714 83 82 A0 68 */ lwz r28, lbl_80642668-_SDA2_BASE_(r2) /* 802B3AB8 002AF718 38 03 01 00 */ addi r0, r3, 0xB0000100@l /* 802B3ABC 002AF71C 3B 40 00 00 */ li r26, 0 /* 802B3AC0 002AF720 90 01 00 14 */ stw r0, 0x14(r1) /* 802B3AC4 002AF724 3F A0 30 00 */ lis r29, 0x3000 /* 802B3AC8 002AF728 48 00 01 2C */ b lbl_802B3BF4 lbl_802B3ACC: /* 802B3ACC 002AF72C 7F 85 E3 78 */ mr r5, r28 /* 802B3AD0 002AF730 38 60 00 00 */ li r3, 0 /* 802B3AD4 002AF734 38 80 00 01 */ li r4, 1 /* 802B3AD8 002AF738 4B FC 15 D9 */ bl EXISelect /* 802B3ADC 002AF73C 2C 03 00 00 */ cmpwi r3, 0 /* 802B3AE0 002AF740 40 82 00 0C */ bne lbl_802B3AEC /* 802B3AE4 002AF744 3B 60 FF FF */ li r27, -1 /* 802B3AE8 002AF748 48 00 00 60 */ b lbl_802B3B48 lbl_802B3AEC: /* 802B3AEC 002AF74C 38 1D 01 00 */ addi r0, r29, 0x100 /* 802B3AF0 002AF750 38 81 00 08 */ addi r4, r1, 8 /* 802B3AF4 002AF754 90 01 00 08 */ stw r0, 8(r1) /* 802B3AF8 002AF758 38 60 00 00 */ li r3, 0 /* 802B3AFC 002AF75C 38 A0 00 04 */ li r5, 4 /* 802B3B00 002AF760 38 C0 00 01 */ li r6, 1 /* 802B3B04 002AF764 38 E0 00 00 */ li r7, 0 /* 802B3B08 002AF768 4B FC 0B 41 */ bl EXIImm /* 802B3B0C 002AF76C 38 60 00 00 */ li r3, 0 /* 802B3B10 002AF770 4B FC 0F 51 */ bl EXISync /* 802B3B14 002AF774 38 81 00 0C */ addi r4, r1, 0xc /* 802B3B18 002AF778 38 60 00 00 */ li r3, 0 /* 802B3B1C 002AF77C 38 A0 00 04 */ li r5, 4 /* 802B3B20 002AF780 38 C0 00 00 */ li r6, 0 /* 802B3B24 002AF784 38 E0 00 00 */ li r7, 0 /* 802B3B28 002AF788 4B FC 0B 21 */ bl EXIImm /* 802B3B2C 002AF78C 38 60 00 00 */ li r3, 0 /* 802B3B30 002AF790 4B FC 0F 31 */ bl EXISync /* 802B3B34 002AF794 38 60 00 00 */ li r3, 0 /* 802B3B38 002AF798 4B FC 16 A9 */ bl EXIDeselect /* 802B3B3C 002AF79C 80 01 00 0C */ lwz r0, 0xc(r1) /* 802B3B40 002AF7A0 54 00 46 BE */ rlwinm r0, r0, 8, 0x1a, 0x1f /* 802B3B44 002AF7A4 23 60 00 20 */ subfic r27, r0, 0x20 lbl_802B3B48: /* 802B3B48 002AF7A8 2C 1B 00 00 */ cmpwi r27, 0 /* 802B3B4C 002AF7AC 40 80 00 0C */ bge lbl_802B3B58 /* 802B3B50 002AF7B0 3B 40 00 03 */ li r26, 3 /* 802B3B54 002AF7B4 48 00 00 A8 */ b lbl_802B3BFC lbl_802B3B58: /* 802B3B58 002AF7B8 2C 1B 00 20 */ cmpwi r27, 0x20 /* 802B3B5C 002AF7BC 40 82 00 98 */ bne lbl_802B3BF4 /* 802B3B60 002AF7C0 7F 85 E3 78 */ mr r5, r28 /* 802B3B64 002AF7C4 38 60 00 00 */ li r3, 0 /* 802B3B68 002AF7C8 38 80 00 01 */ li r4, 1 /* 802B3B6C 002AF7CC 4B FC 15 45 */ bl EXISelect /* 802B3B70 002AF7D0 2C 03 00 00 */ cmpwi r3, 0 /* 802B3B74 002AF7D4 40 82 00 0C */ bne lbl_802B3B80 /* 802B3B78 002AF7D8 3B 40 00 03 */ li r26, 3 /* 802B3B7C 002AF7DC 48 00 00 80 */ b lbl_802B3BFC lbl_802B3B80: /* 802B3B80 002AF7E0 38 81 00 14 */ addi r4, r1, 0x14 /* 802B3B84 002AF7E4 38 60 00 00 */ li r3, 0 /* 802B3B88 002AF7E8 38 A0 00 04 */ li r5, 4 /* 802B3B8C 002AF7EC 38 C0 00 01 */ li r6, 1 /* 802B3B90 002AF7F0 38 E0 00 00 */ li r7, 0 /* 802B3B94 002AF7F4 4B FC 0A B5 */ bl EXIImm /* 802B3B98 002AF7F8 38 60 00 00 */ li r3, 0 /* 802B3B9C 002AF7FC 4B FC 0E C5 */ bl EXISync /* 802B3BA0 002AF800 48 00 00 3C */ b lbl_802B3BDC lbl_802B3BA4: /* 802B3BA4 002AF804 88 1E 00 00 */ lbz r0, 0(r30) /* 802B3BA8 002AF808 38 81 00 10 */ addi r4, r1, 0x10 /* 802B3BAC 002AF80C 38 60 00 00 */ li r3, 0 /* 802B3BB0 002AF810 38 A0 00 04 */ li r5, 4 /* 802B3BB4 002AF814 54 00 C0 0E */ slwi r0, r0, 0x18 /* 802B3BB8 002AF818 38 C0 00 01 */ li r6, 1 /* 802B3BBC 002AF81C 90 01 00 10 */ stw r0, 0x10(r1) /* 802B3BC0 002AF820 38 E0 00 00 */ li r7, 0 /* 802B3BC4 002AF824 4B FC 0A 85 */ bl EXIImm /* 802B3BC8 002AF828 38 60 00 00 */ li r3, 0 /* 802B3BCC 002AF82C 4B FC 0E 95 */ bl EXISync /* 802B3BD0 002AF830 3B DE 00 01 */ addi r30, r30, 1 /* 802B3BD4 002AF834 3B 7B FF FF */ addi r27, r27, -1 /* 802B3BD8 002AF838 3B FF FF FF */ addi r31, r31, -1 lbl_802B3BDC: /* 802B3BDC 002AF83C 2C 1B 00 00 */ cmpwi r27, 0 /* 802B3BE0 002AF840 40 81 00 0C */ ble lbl_802B3BEC /* 802B3BE4 002AF844 2C 1F 00 00 */ cmpwi r31, 0 /* 802B3BE8 002AF848 40 82 FF BC */ bne lbl_802B3BA4 lbl_802B3BEC: /* 802B3BEC 002AF84C 38 60 00 00 */ li r3, 0 /* 802B3BF0 002AF850 4B FC 15 F1 */ bl EXIDeselect lbl_802B3BF4: /* 802B3BF4 002AF854 2C 1F 00 00 */ cmpwi r31, 0 /* 802B3BF8 002AF858 40 82 FE D4 */ bne lbl_802B3ACC lbl_802B3BFC: /* 802B3BFC 002AF85C 38 60 00 00 */ li r3, 0 /* 802B3C00 002AF860 4B FC 1D 41 */ bl EXIUnlock /* 802B3C04 002AF864 7F 43 D3 78 */ mr r3, r26 lbl_802B3C08: /* 802B3C08 002AF868 39 61 00 30 */ addi r11, r1, 0x30 /* 802B3C0C 002AF86C 4B F1 35 65 */ bl _restgpr_26 /* 802B3C10 002AF870 80 01 00 34 */ lwz r0, 0x34(r1) /* 802B3C14 002AF874 7C 08 03 A6 */ mtlr r0 /* 802B3C18 002AF878 38 21 00 30 */ addi r1, r1, 0x30 /* 802B3C1C 002AF87C 4E 80 00 20 */ blr