From 67effb9191423d8e5d9e386eaa0f389267c775ce Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Tue, 31 Jan 2023 18:52:49 -0400 Subject: asm: Start work on importing the Dolphin SDK It's a start, but need to import more. --- asm/Dolphin/os/OSReset.s | 330 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100644 asm/Dolphin/os/OSReset.s (limited to 'asm/Dolphin/os/OSReset.s') diff --git a/asm/Dolphin/os/OSReset.s b/asm/Dolphin/os/OSReset.s new file mode 100644 index 0000000..a7b42f7 --- /dev/null +++ b/asm/Dolphin/os/OSReset.s @@ -0,0 +1,330 @@ +.include "macros.inc" + +.section .text + +.global func_80370400 +.type func_80370400, @function +func_80370400: +/* 80370400 80ADCA70 */ lwz r5, lbl_805c6890@sda21(0) +/* 80370404 48000008 */ b lbl_8037040c +lbl_80370408: +/* 80370408 80A50008 */ lwz r5, 8(r5) +lbl_8037040c: +/* 8037040C 28050000 */ cmplwi r5, 0 +/* 80370410 41820014 */ beq- lbl_80370424 +/* 80370414 80850004 */ lwz r4, 4(r5) +/* 80370418 80030004 */ lwz r0, 4(r3) +/* 8037041C 7C040040 */ cmplw r4, r0 +/* 80370420 4081FFE8 */ ble+ lbl_80370408 +lbl_80370424: +/* 80370424 28050000 */ cmplwi r5, 0 +/* 80370428 40820034 */ bne- lbl_8037045c +/* 8037042C 38ADCA70 */ addi r5, 0, lbl_805c6890@sda21 +/* 80370430 84850004 */ lwzu r4, 4(r5) +/* 80370434 28040000 */ cmplwi r4, 0 +/* 80370438 4082000C */ bne- lbl_80370444 +/* 8037043C 906DCA70 */ stw r3, lbl_805c6890@sda21(0) +/* 80370440 48000008 */ b lbl_80370448 +lbl_80370444: +/* 80370444 90640008 */ stw r3, 8(r4) +lbl_80370448: +/* 80370448 9083000C */ stw r4, 0xc(r3) +/* 8037044C 38000000 */ li r0, 0x0 +/* 80370450 90030008 */ stw r0, 8(r3) +/* 80370454 90650000 */ stw r3, 0(r5) +/* 80370458 4E800020 */ blr +lbl_8037045c: +/* 8037045C 90A30008 */ stw r5, 8(r3) +/* 80370460 8085000C */ lwz r4, 0xc(r5) +/* 80370464 9065000C */ stw r3, 0xc(r5) +/* 80370468 28040000 */ cmplwi r4, 0 +/* 8037046C 9083000C */ stw r4, 0xc(r3) +/* 80370470 4082000C */ bne- lbl_8037047c +/* 80370474 906DCA70 */ stw r3, lbl_805c6890@sda21(0) +/* 80370478 4E800020 */ blr +lbl_8037047c: +/* 8037047C 90640008 */ stw r3, 8(r4) +/* 80370480 4E800020 */ blr +.size func_80370400, . - func_80370400 + + +.global func_80370484 +.type func_80370484, @function +func_80370484: +/* 80370484 48000020 */ b lbl_803704a4 +lbl_80370488: +/* 80370488 7D10FAA6 */ mfspr r8, 0x3f0 +/* 8037048C 61080008 */ ori r8, r8, 8 +/* 80370490 7D10FBA6 */ mtspr 0x3f0, r8 +/* 80370494 4C00012C */ isync +/* 80370498 7C0004AC */ sync 0 +/* 8037049C 60000000 */ nop +/* 803704A0 48000008 */ b lbl_803704a8 +lbl_803704a4: +/* 803704A4 48000020 */ b lbl_803704c4 +lbl_803704a8: +/* 803704A8 7CAC42E6 */ mftb r5, 0x10c +lbl_803704ac: +/* 803704AC 7CCC42E6 */ mftb r6, 0x10c +/* 803704B0 7CE53050 */ subf r7, r5, r6 +/* 803704B4 28071124 */ cmplwi r7, 0x1124 +/* 803704B8 4180FFF4 */ blt+ lbl_803704ac +/* 803704BC 60000000 */ nop +/* 803704C0 48000008 */ b lbl_803704c8 +lbl_803704c4: +/* 803704C4 48000020 */ b lbl_803704e4 +lbl_803704c8: +/* 803704C8 3D00CC00 */ lis r8, 0xcc00 +/* 803704CC 61083000 */ ori r8, r8, 0x3000 +/* 803704D0 38800003 */ li r4, 0x3 +/* 803704D4 90880024 */ stw r4, 0x24(r8) +/* 803704D8 90680024 */ stw r3, 0x24(r8) +/* 803704DC 60000000 */ nop +/* 803704E0 48000008 */ b lbl_803704e8 +lbl_803704e4: +/* 803704E4 4800000C */ b lbl_803704f0 +lbl_803704e8: +/* 803704E8 60000000 */ nop +/* 803704EC 4BFFFFFC */ b lbl_803704e8 +lbl_803704f0: +/* 803704F0 4BFFFF98 */ b lbl_80370488 +.size func_80370484, . - func_80370484 + + +.global func_803704f4 +.type func_803704f4, @function +func_803704f4: +/* 803704F4 7C0802A6 */ mflr r0 +/* 803704F8 90010004 */ stw r0, 4(r1) +/* 803704FC 9421FFE8 */ stwu r1, -0x18(r1) +/* 80370500 93E10014 */ stw r31, 0x14(r1) +/* 80370504 7C7F1B78 */ mr r31, r3 +/* 80370508 4BFFE5CD */ bl func_8036ead4 +/* 8037050C 3C60CC00 */ lis r3, 0xcc00 +/* 80370510 38632000 */ addi r3, r3, 0x2000 +/* 80370514 38000000 */ li r0, 0x0 +/* 80370518 B0030002 */ sth r0, 2(r3) +/* 8037051C 4BFFD4F5 */ bl func_8036da10 +/* 80370520 57E31838 */ slwi r3, r31, 3 +/* 80370524 4BFFFF61 */ bl func_80370484 +/* 80370528 8001001C */ lwz r0, 0x1c(r1) +/* 8037052C 83E10014 */ lwz r31, 0x14(r1) +/* 80370530 38210018 */ addi r1, r1, 0x18 +/* 80370534 7C0803A6 */ mtlr r0 +/* 80370538 4E800020 */ blr +.size func_803704f4, . - func_803704f4 + + +.global func_8037053c +.type func_8037053c, @function +func_8037053c: +/* 8037053C 7C0802A6 */ mflr r0 +/* 80370540 90010004 */ stw r0, 4(r1) +/* 80370544 9421FFC0 */ stwu r1, -0x40(r1) +/* 80370548 BF410028 */ stmw r26, 0x28(r1) +/* 8037054C 7C7A1B78 */ mr r26, r3 +/* 80370550 7C9D2378 */ mr r29, r4 +/* 80370554 7CBE2B78 */ mr r30, r5 +/* 80370558 4800125D */ bl func_803717b4 +/* 8037055C 4BFFD299 */ bl func_8036d7f4 +/* 80370560 2C1A0002 */ cmpwi r26, 0x2 +/* 80370564 40820010 */ bne- lbl_80370574 +/* 80370568 38600001 */ li r3, 0x1 +/* 8037056C 4800AAC1 */ bl func_8037b02c +/* 80370570 7C7F1B78 */ mr r31, r3 +lbl_80370574: +/* 80370574 48000004 */ b lbl_80370578 +lbl_80370578: +/* 80370578 48000004 */ b lbl_8037057c +lbl_8037057c: +/* 8037057C 836DCA70 */ lwz r27, lbl_805c6890@sda21(0) +/* 80370580 3B800000 */ li r28, 0x0 +/* 80370584 48000004 */ b lbl_80370588 +lbl_80370588: +/* 80370588 48000004 */ b lbl_8037058c +lbl_8037058c: +/* 8037058C 48000024 */ b lbl_803705b0 +lbl_80370590: +/* 80370590 38600000 */ li r3, 0x0 +/* 80370594 819B0000 */ lwz r12, 0(r27) +/* 80370598 7D8803A6 */ mtlr r12 +/* 8037059C 4E800021 */ blrl +/* 803705A0 7C600034 */ cntlzw r0, r3 +/* 803705A4 837B0008 */ lwz r27, 8(r27) +/* 803705A8 5400D97E */ srwi r0, r0, 5 +/* 803705AC 7F9C0378 */ or r28, r28, r0 +lbl_803705b0: +/* 803705B0 281B0000 */ cmplwi r27, 0 +/* 803705B4 4082FFDC */ bne+ lbl_80370590 +/* 803705B8 48000C6D */ bl func_80371224 +/* 803705BC 7C600034 */ cntlzw r0, r3 +/* 803705C0 5400D97E */ srwi r0, r0, 5 +/* 803705C4 7F9C0378 */ or r28, r28, r0 +/* 803705C8 2C1C0000 */ cmpwi r28, 0x0 +/* 803705CC 4182000C */ beq- lbl_803705d8 +/* 803705D0 38000000 */ li r0, 0x0 +/* 803705D4 48000008 */ b lbl_803705dc +lbl_803705d8: +/* 803705D8 38000001 */ li r0, 0x1 +lbl_803705dc: +/* 803705DC 2C000000 */ cmpwi r0, 0x0 +/* 803705E0 4182FF9C */ beq+ lbl_8037057c +/* 803705E4 2C1A0001 */ cmpwi r26, 0x1 +/* 803705E8 40820038 */ bne- lbl_80370620 +/* 803705EC 2C1E0000 */ cmpwi r30, 0x0 +/* 803705F0 41820030 */ beq- lbl_80370620 +/* 803705F4 48000829 */ bl func_80370e1c +/* 803705F8 88030013 */ lbz r0, 0x13(r3) +/* 803705FC 60000040 */ ori r0, r0, 0x40 +/* 80370600 98030013 */ stb r0, 0x13(r3) +/* 80370604 38600001 */ li r3, 0x1 +/* 80370608 48000BD5 */ bl func_803711dc +/* 8037060C 48000004 */ b lbl_80370610 +lbl_80370610: +/* 80370610 48000004 */ b lbl_80370614 +lbl_80370614: +/* 80370614 48000C11 */ bl func_80371224 +/* 80370618 2C030000 */ cmpwi r3, 0x0 +/* 8037061C 4182FFF8 */ beq+ lbl_80370614 +lbl_80370620: +/* 80370620 4BFFE4B5 */ bl func_8036ead4 +/* 80370624 838DCA70 */ lwz r28, lbl_805c6890@sda21(0) +/* 80370628 3B600000 */ li r27, 0x0 +/* 8037062C 48000004 */ b lbl_80370630 +lbl_80370630: +/* 80370630 48000004 */ b lbl_80370634 +lbl_80370634: +/* 80370634 48000024 */ b lbl_80370658 +lbl_80370638: +/* 80370638 38600001 */ li r3, 0x1 +/* 8037063C 819C0000 */ lwz r12, 0(r28) +/* 80370640 7D8803A6 */ mtlr r12 +/* 80370644 4E800021 */ blrl +/* 80370648 7C600034 */ cntlzw r0, r3 +/* 8037064C 839C0008 */ lwz r28, 8(r28) +/* 80370650 5400D97E */ srwi r0, r0, 5 +/* 80370654 7F7B0378 */ or r27, r27, r0 +lbl_80370658: +/* 80370658 281C0000 */ cmplwi r28, 0 +/* 8037065C 4082FFDC */ bne+ lbl_80370638 +/* 80370660 48000BC5 */ bl func_80371224 +/* 80370664 4BFFD4D5 */ bl func_8036db38 +/* 80370668 2C1A0001 */ cmpwi r26, 0x1 +/* 8037066C 40820028 */ bne- lbl_80370694 +/* 80370670 4BFFE465 */ bl func_8036ead4 +/* 80370674 3C60CC00 */ lis r3, 0xcc00 +/* 80370678 38632000 */ addi r3, r3, 0x2000 +/* 8037067C 38000000 */ li r0, 0x0 +/* 80370680 B0030002 */ sth r0, 2(r3) +/* 80370684 4BFFD38D */ bl func_8036da10 +/* 80370688 57A31838 */ slwi r3, r29, 3 +/* 8037068C 4BFFFDF9 */ bl func_80370484 +/* 80370690 48000060 */ b lbl_803706f0 +lbl_80370694: +/* 80370694 2C1A0000 */ cmpwi r26, 0x0 +/* 80370698 40820058 */ bne- lbl_803706f0 +/* 8037069C 3C608000 */ lis r3, 0x8000 +/* 803706A0 806300DC */ lwz r3, 0xdc(r3) +/* 803706A4 48000004 */ b lbl_803706a8 +lbl_803706a8: +/* 803706A8 48000004 */ b lbl_803706ac +lbl_803706ac: +/* 803706AC 4800002C */ b lbl_803706d8 +lbl_803706b0: +/* 803706B0 A00302C8 */ lhz r0, 0x2c8(r3) +/* 803706B4 836302FC */ lwz r27, 0x2fc(r3) +/* 803706B8 2C000004 */ cmpwi r0, 0x4 +/* 803706BC 41820014 */ beq- lbl_803706d0 +/* 803706C0 40800014 */ bge- lbl_803706d4 +/* 803706C4 2C000001 */ cmpwi r0, 0x1 +/* 803706C8 41820008 */ beq- lbl_803706d0 +/* 803706CC 48000008 */ b lbl_803706d4 +lbl_803706d0: +/* 803706D0 48001889 */ bl func_80371f58 +lbl_803706d4: +/* 803706D4 7F63DB78 */ mr r3, r27 +lbl_803706d8: +/* 803706D8 28030000 */ cmplwi r3, 0 +/* 803706DC 4082FFD4 */ bne+ lbl_803706b0 +/* 803706E0 48001115 */ bl func_803717f4 +/* 803706E4 7FA3EB78 */ mr r3, r29 +/* 803706E8 7FC4F378 */ mr r4, r30 +/* 803706EC 4BFFFB55 */ bl func_80370240 +lbl_803706f0: +/* 803706F0 3C608000 */ lis r3, 0x8000 +/* 803706F4 806300DC */ lwz r3, 0xdc(r3) +/* 803706F8 48000004 */ b lbl_803706fc +lbl_803706fc: +/* 803706FC 48000004 */ b lbl_80370700 +lbl_80370700: +/* 80370700 4800002C */ b lbl_8037072c +lbl_80370704: +/* 80370704 A00302C8 */ lhz r0, 0x2c8(r3) +/* 80370708 836302FC */ lwz r27, 0x2fc(r3) +/* 8037070C 2C000004 */ cmpwi r0, 0x4 +/* 80370710 41820014 */ beq- lbl_80370724 +/* 80370714 40800014 */ bge- lbl_80370728 +/* 80370718 2C000001 */ cmpwi r0, 0x1 +/* 8037071C 41820008 */ beq- lbl_80370724 +/* 80370720 48000008 */ b lbl_80370728 +lbl_80370724: +/* 80370724 48001835 */ bl func_80371f58 +lbl_80370728: +/* 80370728 7F63DB78 */ mr r3, r27 +lbl_8037072c: +/* 8037072C 28030000 */ cmplwi r3, 0 +/* 80370730 4082FFD4 */ bne+ lbl_80370704 +/* 80370734 3FA08000 */ lis r29, 0x8000 +/* 80370738 387D0040 */ addi r3, r29, 0x40 +/* 8037073C 38800000 */ li r4, 0x0 +/* 80370740 38A0008C */ li r5, 0x8c +/* 80370744 4BC9DBF1 */ bl func_8000e334 +/* 80370748 387D00D4 */ addi r3, r29, 0xd4 +/* 8037074C 38800000 */ li r4, 0x0 +/* 80370750 38A00014 */ li r5, 0x14 +/* 80370754 4BC9DBE1 */ bl func_8000e334 +/* 80370758 387D00F4 */ addi r3, r29, 0xf4 +/* 8037075C 38800000 */ li r4, 0x0 +/* 80370760 38A00004 */ li r5, 0x4 +/* 80370764 4BC9DBD1 */ bl func_8000e334 +/* 80370768 387D3000 */ addi r3, r29, 0x3000 +/* 8037076C 38800000 */ li r4, 0x0 +/* 80370770 38A000C0 */ li r5, 0xc0 +/* 80370774 4BC9DBC1 */ bl func_8000e334 +/* 80370778 387D30C8 */ addi r3, r29, 0x30c8 +/* 8037077C 38800000 */ li r4, 0x0 +/* 80370780 38A0000C */ li r5, 0xc +/* 80370784 4BC9DBB1 */ bl func_8000e334 +/* 80370788 387D30E2 */ addi r3, r29, 0x30e2 +/* 8037078C 38800000 */ li r4, 0x0 +/* 80370790 38A00001 */ li r5, 0x1 +/* 80370794 4BC9DBA1 */ bl func_8000e334 +/* 80370798 7FE3FB78 */ mr r3, r31 +/* 8037079C 4800A891 */ bl func_8037b02c +/* 803707A0 BB410028 */ lmw r26, 0x28(r1) +/* 803707A4 80010044 */ lwz r0, 0x44(r1) +/* 803707A8 38210040 */ addi r1, r1, 0x40 +/* 803707AC 7C0803A6 */ mtlr r0 +/* 803707B0 4E800020 */ blr +.size func_8037053c, . - func_8037053c + + +.global func_803707b4 +.type func_803707b4, @function +func_803707b4: +/* 803707B4 3C608000 */ lis r3, 0x8000 +/* 803707B8 880330E2 */ lbz r0, 0x30e2(r3) +/* 803707BC 28000000 */ cmplwi r0, 0 +/* 803707C0 4182000C */ beq- lbl_803707cc +/* 803707C4 3C608000 */ lis r3, 0x8000 +/* 803707C8 48000018 */ b lbl_803707e0 +lbl_803707cc: +/* 803707CC 3C60CC00 */ lis r3, 0xcc00 +/* 803707D0 38633000 */ addi r3, r3, 0x3000 +/* 803707D4 80030024 */ lwz r0, 0x24(r3) +/* 803707D8 54000038 */ rlwinm r0, r0, 0, 0, 0x1c +/* 803707DC 5403E8FE */ srwi r3, r0, 3 +lbl_803707e0: +/* 803707E0 4E800020 */ blr +.size func_803707b4, . - func_803707b4 + -- cgit v1.2.3-13-gbd6f