tp/asm/JAudio2/dsptask.s

240 lines
12 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 8029e6e0
.global DspHandShake
DspHandShake:
/* 8029E6E0 0029B620 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029E6E4 0029B624 7C 08 02 A6 */ mflr r0
/* 8029E6E8 0029B628 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029E6EC 0029B62C 60 00 00 00 */ nop
lbl_8029E6F0:
/* 8029E6F0 0029B630 48 0B 3D 51 */ bl DSPCheckMailFromDSP
/* 8029E6F4 0029B634 28 03 00 00 */ cmplwi r3, 0
/* 8029E6F8 0029B638 41 82 FF F8 */ beq lbl_8029E6F0
/* 8029E6FC 0029B63C 48 0B 3D 55 */ bl DSPReadMailFromDSP
/* 8029E700 0029B640 48 0B 3D 41 */ bl DSPCheckMailFromDSP
/* 8029E704 0029B644 48 00 08 9D */ bl Dsp_Running_Start
/* 8029E708 0029B648 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029E70C 0029B64C 7C 08 03 A6 */ mtlr r0
/* 8029E710 0029B650 38 21 00 10 */ addi r1, r1, 0x10
/* 8029E714 0029B654 4E 80 00 20 */ blr
/* 8029E718 0029B658 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E71C 0029B65C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
.global DspBoot
DspBoot:
/* 8029E720 0029B660 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029E724 0029B664 7C 08 02 A6 */ mflr r0
/* 8029E728 0029B668 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029E72C 0029B66C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8029E730 0029B670 7C 7F 1B 78 */ mr r31, r3
/* 8029E734 0029B674 48 00 01 AD */ bl DspInitWork
/* 8029E738 0029B678 3C 80 80 3C */ lis r4, lbl_803C7920@ha
/* 8029E73C 0029B67C 3C 60 80 43 */ lis r3, lbl_80431FE0@ha
/* 8029E740 0029B680 38 A4 79 20 */ addi r5, r4, lbl_803C7920@l
/* 8029E744 0029B684 3C C0 80 43 */ lis r6, lbl_80431F80@ha
/* 8029E748 0029B688 38 83 1F E0 */ addi r4, r3, lbl_80431FE0@l
.global DspHandShake
/* 8029E74C 0029B68C 3C 60 80 2A */ lis r3, DspHandShake@ha
/* 8029E750 0029B690 39 26 1F 80 */ addi r9, r6, lbl_80431F80@l
/* 8029E754 0029B694 38 C0 00 00 */ li r6, 0
/* 8029E758 0029B698 3D 05 80 00 */ addis r8, r5, 0x8000
/* 8029E75C 0029B69C 3C A4 80 00 */ addis r5, r4, 0x8000
.global DspHandShake
/* 8029E760 0029B6A0 38 03 E6 E0 */ addi r0, r3, DspHandShake@l
/* 8029E764 0029B6A4 39 40 00 F0 */ li r10, 0xf0
/* 8029E768 0029B6A8 38 E0 1F 00 */ li r7, 0x1f00
/* 8029E76C 0029B6AC 38 80 20 00 */ li r4, 0x2000
/* 8029E770 0029B6B0 38 60 00 10 */ li r3, 0x10
/* 8029E774 0029B6B4 91 49 00 04 */ stw r10, 4(r9)
/* 8029E778 0029B6B8 91 09 00 0C */ stw r8, 0xc(r9)
/* 8029E77C 0029B6BC 90 E9 00 10 */ stw r7, 0x10(r9)
/* 8029E780 0029B6C0 90 C9 00 14 */ stw r6, 0x14(r9)
/* 8029E784 0029B6C4 90 A9 00 18 */ stw r5, 0x18(r9)
/* 8029E788 0029B6C8 90 89 00 1C */ stw r4, 0x1c(r9)
/* 8029E78C 0029B6CC 90 C9 00 20 */ stw r6, 0x20(r9)
/* 8029E790 0029B6D0 B0 C9 00 24 */ sth r6, 0x24(r9)
/* 8029E794 0029B6D4 B0 69 00 26 */ sth r3, 0x26(r9)
/* 8029E798 0029B6D8 90 09 00 28 */ stw r0, 0x28(r9)
/* 8029E79C 0029B6DC 90 C9 00 2C */ stw r6, 0x2c(r9)
/* 8029E7A0 0029B6E0 90 C9 00 30 */ stw r6, 0x30(r9)
/* 8029E7A4 0029B6E4 93 E9 00 34 */ stw r31, 0x34(r9)
/* 8029E7A8 0029B6E8 48 0B 3D 15 */ bl DSPInit
/* 8029E7AC 0029B6EC 3C 60 80 43 */ lis r3, lbl_80431F80@ha
/* 8029E7B0 0029B6F0 38 63 1F 80 */ addi r3, r3, lbl_80431F80@l
/* 8029E7B4 0029B6F4 48 00 02 ED */ bl DSPAddPriorTask
/* 8029E7B8 0029B6F8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029E7BC 0029B6FC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8029E7C0 0029B700 7C 08 03 A6 */ mtlr r0
/* 8029E7C4 0029B704 38 21 00 10 */ addi r1, r1, 0x10
/* 8029E7C8 0029B708 4E 80 00 20 */ blr
/* 8029E7CC 0029B70C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E7D0 0029B710 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E7D4 0029B714 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E7D8 0029B718 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E7DC 0029B71C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
.global DSPSendCommands2
DSPSendCommands2:
/* 8029E7E0 0029B720 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8029E7E4 0029B724 7C 08 02 A6 */ mflr r0
/* 8029E7E8 0029B728 90 01 00 24 */ stw r0, 0x24(r1)
/* 8029E7EC 0029B72C 39 61 00 20 */ addi r11, r1, 0x20
/* 8029E7F0 0029B730 48 0C 39 E1 */ bl _savegpr_26
/* 8029E7F4 0029B734 7C 7A 1B 78 */ mr r26, r3
/* 8029E7F8 0029B738 7C 9B 23 78 */ mr r27, r4
/* 8029E7FC 0029B73C 7C BE 2B 78 */ mr r30, r5
lbl_8029E800:
/* 8029E800 0029B740 48 00 07 81 */ bl Dsp_Running_Check
/* 8029E804 0029B744 2C 03 00 00 */ cmpwi r3, 0
/* 8029E808 0029B748 41 82 FF F8 */ beq lbl_8029E800
/* 8029E80C 0029B74C 48 09 EE E9 */ bl __RAS_OSDisableInterrupts_begin
/* 8029E810 0029B750 7C 7D 1B 78 */ mr r29, r3
/* 8029E814 0029B754 48 0B 3C 1D */ bl DSPCheckMailToDSP
/* 8029E818 0029B758 28 03 00 00 */ cmplwi r3, 0
/* 8029E81C 0029B75C 41 82 00 14 */ beq lbl_8029E830
/* 8029E820 0029B760 7F A3 EB 78 */ mr r3, r29
/* 8029E824 0029B764 48 09 EE F9 */ bl OSRestoreInterrupts
/* 8029E828 0029B768 38 60 FF FF */ li r3, -1
/* 8029E82C 0029B76C 48 00 00 84 */ b lbl_8029E8B0
lbl_8029E830:
/* 8029E830 0029B770 7F 63 DB 78 */ mr r3, r27
/* 8029E834 0029B774 48 0B 3C 35 */ bl DSPSendMailToDSP
/* 8029E838 0029B778 48 0B 3C 45 */ bl DSPAssertInt
/* 8029E83C 0029B77C 60 00 00 00 */ nop
lbl_8029E840:
/* 8029E840 0029B780 48 0B 3B F1 */ bl DSPCheckMailToDSP
/* 8029E844 0029B784 28 03 00 00 */ cmplwi r3, 0
/* 8029E848 0029B788 40 82 FF F8 */ bne lbl_8029E840
/* 8029E84C 0029B78C 28 1B 00 00 */ cmplwi r27, 0
/* 8029E850 0029B790 40 82 00 08 */ bne lbl_8029E858
/* 8029E854 0029B794 3B 60 00 01 */ li r27, 1
lbl_8029E858:
/* 8029E858 0029B798 28 1E 00 00 */ cmplwi r30, 0
/* 8029E85C 0029B79C 41 82 00 14 */ beq lbl_8029E870
/* 8029E860 0029B7A0 80 7A 00 00 */ lwz r3, 0(r26)
/* 8029E864 0029B7A4 7F C4 F3 78 */ mr r4, r30
/* 8029E868 0029B7A8 48 00 00 B9 */ bl DspStartWork
/* 8029E86C 0029B7AC 7C 7C 1B 78 */ mr r28, r3
lbl_8029E870:
/* 8029E870 0029B7B0 3B C0 00 00 */ li r30, 0
/* 8029E874 0029B7B4 3B E0 00 00 */ li r31, 0
/* 8029E878 0029B7B8 48 00 00 24 */ b lbl_8029E89C
lbl_8029E87C:
/* 8029E87C 0029B7BC 7C 7A F8 2E */ lwzx r3, r26, r31
/* 8029E880 0029B7C0 48 0B 3B E9 */ bl DSPSendMailToDSP
/* 8029E884 0029B7C4 60 00 00 00 */ nop
lbl_8029E888:
/* 8029E888 0029B7C8 48 0B 3B A9 */ bl DSPCheckMailToDSP
/* 8029E88C 0029B7CC 28 03 00 00 */ cmplwi r3, 0
/* 8029E890 0029B7D0 40 82 FF F8 */ bne lbl_8029E888
/* 8029E894 0029B7D4 3B DE 00 01 */ addi r30, r30, 1
/* 8029E898 0029B7D8 3B FF 00 04 */ addi r31, r31, 4
lbl_8029E89C:
/* 8029E89C 0029B7DC 7C 1E D8 40 */ cmplw r30, r27
/* 8029E8A0 0029B7E0 41 80 FF DC */ blt lbl_8029E87C
/* 8029E8A4 0029B7E4 7F A3 EB 78 */ mr r3, r29
/* 8029E8A8 0029B7E8 48 09 EE 75 */ bl OSRestoreInterrupts
/* 8029E8AC 0029B7EC 7F 83 E3 78 */ mr r3, r28
lbl_8029E8B0:
/* 8029E8B0 0029B7F0 39 61 00 20 */ addi r11, r1, 0x20
/* 8029E8B4 0029B7F4 48 0C 39 69 */ bl _restgpr_26
/* 8029E8B8 0029B7F8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8029E8BC 0029B7FC 7C 08 03 A6 */ mtlr r0
/* 8029E8C0 0029B800 38 21 00 20 */ addi r1, r1, 0x20
/* 8029E8C4 0029B804 4E 80 00 20 */ blr
/* 8029E8C8 0029B808 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E8CC 0029B80C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E8D0 0029B810 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E8D4 0029B814 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E8D8 0029B818 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E8DC 0029B81C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
.global DspInitWork
DspInitWork:
/* 8029E8E0 0029B820 38 60 00 00 */ li r3, 0
/* 8029E8E4 0029B824 3C 80 80 43 */ lis r4, lbl_80433FE0@ha
/* 8029E8E8 0029B828 38 00 00 10 */ li r0, 0x10
/* 8029E8EC 0029B82C 7C 66 1B 78 */ mr r6, r3
/* 8029E8F0 0029B830 38 A4 3F E0 */ addi r5, r4, lbl_80433FE0@l
/* 8029E8F4 0029B834 7C 09 03 A6 */ mtctr r0
lbl_8029E8F8:
/* 8029E8F8 0029B838 7C 85 1A 14 */ add r4, r5, r3
/* 8029E8FC 0029B83C 38 63 00 08 */ addi r3, r3, 8
/* 8029E900 0029B840 90 C4 00 04 */ stw r6, 4(r4)
/* 8029E904 0029B844 42 00 FF F4 */ bdnz lbl_8029E8F8
/* 8029E908 0029B848 4E 80 00 20 */ blr
/* 8029E90C 0029B84C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E910 0029B850 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E914 0029B854 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E918 0029B858 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E91C 0029B85C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
.global DspStartWork
DspStartWork:
/* 8029E920 0029B860 80 ED 8D 84 */ lwz r7, lbl_80451304-_SDA_BASE_(r13)
/* 8029E924 0029B864 80 0D 8D 80 */ lwz r0, lbl_80451300-_SDA_BASE_(r13)
/* 8029E928 0029B868 38 C7 00 01 */ addi r6, r7, 1
/* 8029E92C 0029B86C 54 C8 07 3E */ clrlwi r8, r6, 0x1c
/* 8029E930 0029B870 7C 08 00 40 */ cmplw r8, r0
/* 8029E934 0029B874 40 82 00 0C */ bne lbl_8029E940
/* 8029E938 0029B878 38 60 00 00 */ li r3, 0
/* 8029E93C 0029B87C 4E 80 00 20 */ blr
lbl_8029E940:
/* 8029E940 0029B880 3C A0 80 43 */ lis r5, lbl_80433FE0@ha
/* 8029E944 0029B884 54 60 84 3E */ srwi r0, r3, 0x10
/* 8029E948 0029B888 54 E7 18 38 */ slwi r7, r7, 3
/* 8029E94C 0029B88C 91 0D 8D 84 */ stw r8, lbl_80451304-_SDA_BASE_(r13)
/* 8029E950 0029B890 38 A5 3F E0 */ addi r5, r5, lbl_80433FE0@l
/* 8029E954 0029B894 7C C3 33 78 */ mr r3, r6
/* 8029E958 0029B898 7C 05 3B 2E */ sthx r0, r5, r7
/* 8029E95C 0029B89C 7C A5 3A 14 */ add r5, r5, r7
/* 8029E960 0029B8A0 90 85 00 04 */ stw r4, 4(r5)
/* 8029E964 0029B8A4 4E 80 00 20 */ blr
/* 8029E968 0029B8A8 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E96C 0029B8AC 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E970 0029B8B0 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E974 0029B8B4 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E978 0029B8B8 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E97C 0029B8BC 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
.global DspFinishWork
DspFinishWork:
/* 8029E980 0029B8C0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029E984 0029B8C4 7C 08 02 A6 */ mflr r0
/* 8029E988 0029B8C8 3C 80 80 43 */ lis r4, lbl_80433FE0@ha
/* 8029E98C 0029B8CC 54 63 04 3E */ clrlwi r3, r3, 0x10
/* 8029E990 0029B8D0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029E994 0029B8D4 38 84 3F E0 */ addi r4, r4, lbl_80433FE0@l
/* 8029E998 0029B8D8 80 CD 8D 80 */ lwz r6, lbl_80451300-_SDA_BASE_(r13)
/* 8029E99C 0029B8DC 54 C5 18 38 */ slwi r5, r6, 3
/* 8029E9A0 0029B8E0 7C 04 2A 2E */ lhzx r0, r4, r5
/* 8029E9A4 0029B8E4 7C 03 00 40 */ cmplw r3, r0
/* 8029E9A8 0029B8E8 40 82 00 30 */ bne lbl_8029E9D8
/* 8029E9AC 0029B8EC 7C 64 2A 14 */ add r3, r4, r5
/* 8029E9B0 0029B8F0 81 83 00 04 */ lwz r12, 4(r3)
/* 8029E9B4 0029B8F4 28 0C 00 00 */ cmplwi r12, 0
/* 8029E9B8 0029B8F8 41 82 00 10 */ beq lbl_8029E9C8
/* 8029E9BC 0029B8FC 54 C3 04 3E */ clrlwi r3, r6, 0x10
/* 8029E9C0 0029B900 7D 89 03 A6 */ mtctr r12
/* 8029E9C4 0029B904 4E 80 04 21 */ bctrl
lbl_8029E9C8:
/* 8029E9C8 0029B908 80 6D 8D 80 */ lwz r3, lbl_80451300-_SDA_BASE_(r13)
/* 8029E9CC 0029B90C 38 03 00 01 */ addi r0, r3, 1
/* 8029E9D0 0029B910 54 00 07 3E */ clrlwi r0, r0, 0x1c
/* 8029E9D4 0029B914 90 0D 8D 80 */ stw r0, lbl_80451300-_SDA_BASE_(r13)
lbl_8029E9D8:
/* 8029E9D8 0029B918 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029E9DC 0029B91C 7C 08 03 A6 */ mtlr r0
/* 8029E9E0 0029B920 38 21 00 10 */ addi r1, r1, 0x10
/* 8029E9E4 0029B924 4E 80 00 20 */ blr
/* 8029E9E8 0029B928 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E9EC 0029B92C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E9F0 0029B930 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E9F4 0029B934 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E9F8 0029B938 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */
/* 8029E9FC 0029B93C 00 00 00 00 */ .4byte 0x00000000 /* unknown instruction */