diff options
Diffstat (limited to 'asm/SDK/VF/nand_drv.s')
-rw-r--r-- | asm/SDK/VF/nand_drv.s | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/asm/SDK/VF/nand_drv.s b/asm/SDK/VF/nand_drv.s new file mode 100644 index 0000000..721fd8e --- /dev/null +++ b/asm/SDK/VF/nand_drv.s @@ -0,0 +1,222 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFi_NandFlushNANDFromHandleIdx
+VFi_NandFlushNANDFromHandleIdx:
+/* 8031BE1C 00317A7C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8031BE20 00317A80 7C 08 02 A6 */ mflr r0
+/* 8031BE24 00317A84 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031BE28 00317A88 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031BE2C 00317A8C 4B EA B2 ED */ bl _savegpr_23
+/* 8031BE30 00317A90 7C 7A 1B 78 */ mr r26, r3
+/* 8031BE34 00317A94 7C 9B 23 78 */ mr r27, r4
+/* 8031BE38 00317A98 4B FF ED A9 */ bl VFSysGetDriveP
+/* 8031BE3C 00317A9C 7C 77 1B 78 */ mr r23, r3
+/* 8031BE40 00317AA0 7F 43 D3 78 */ mr r3, r26
+/* 8031BE44 00317AA4 4B FF EC 39 */ bl VFSysGetHandleP
+/* 8031BE48 00317AA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031BE4C 00317AAC 41 82 00 24 */ beq lbl_8031BE70
+/* 8031BE50 00317AB0 80 63 00 00 */ lwz r3, 0(r3)
+/* 8031BE54 00317AB4 2C 03 00 00 */ cmpwi r3, 0
+/* 8031BE58 00317AB8 41 82 00 18 */ beq lbl_8031BE70
+/* 8031BE5C 00317ABC 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 8031BE60 00317AC0 28 00 00 01 */ cmplwi r0, 1
+/* 8031BE64 00317AC4 40 82 00 0C */ bne lbl_8031BE70
+/* 8031BE68 00317AC8 38 60 00 00 */ li r3, 0
+/* 8031BE6C 00317ACC 48 00 02 9C */ b lbl_8031C108
+lbl_8031BE70:
+/* 8031BE70 00317AD0 2C 17 00 00 */ cmpwi r23, 0
+/* 8031BE74 00317AD4 41 82 02 90 */ beq lbl_8031C104
+/* 8031BE78 00317AD8 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 8031BE7C 00317ADC 83 97 00 00 */ lwz r28, 0(r23)
+/* 8031BE80 00317AE0 3B B7 00 3C */ addi r29, r23, 0x3c
+/* 8031BE84 00317AE4 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
+/* 8031BE88 00317AE8 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
+/* 8031BE8C 00317AEC 3B E0 00 00 */ li r31, 0
+/* 8031BE90 00317AF0 3F 00 80 00 */ lis r24, 0x8000
+/* 8031BE94 00317AF4 3A E0 00 00 */ li r23, 0
+/* 8031BE98 00317AF8 48 00 00 50 */ b lbl_8031BEE8
+lbl_8031BE9C:
+/* 8031BE9C 00317AFC 7F 83 E3 78 */ mr r3, r28
+/* 8031BEA0 00317B00 4B FC C7 E9 */ bl NANDClose
+/* 8031BEA4 00317B04 2C 03 FF FD */ cmpwi r3, -3
+/* 8031BEA8 00317B08 7C 7F 1B 78 */ mr r31, r3
+/* 8031BEAC 00317B0C 41 82 00 08 */ beq lbl_8031BEB4
+/* 8031BEB0 00317B10 48 00 00 44 */ b lbl_8031BEF4
+lbl_8031BEB4:
+/* 8031BEB4 00317B14 80 18 00 F8 */ lwz r0, 0xf8(r24)
+/* 8031BEB8 00317B18 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
+/* 8031BEBC 00317B1C 54 00 F0 BE */ srwi r0, r0, 2
+/* 8031BEC0 00317B20 7C 79 00 16 */ mulhwu r3, r25, r0
+/* 8031BEC4 00317B24 7C C0 FE 70 */ srawi r0, r6, 0x1f
+/* 8031BEC8 00317B28 7C 97 31 D6 */ mullw r4, r23, r6
+/* 8031BECC 00317B2C 54 65 D1 BE */ srwi r5, r3, 6
+/* 8031BED0 00317B30 7C 65 30 16 */ mulhwu r3, r5, r6
+/* 8031BED4 00317B34 7C 05 01 D6 */ mullw r0, r5, r0
+/* 8031BED8 00317B38 7C 63 22 14 */ add r3, r3, r4
+/* 8031BEDC 00317B3C 7C 85 31 D6 */ mullw r4, r5, r6
+/* 8031BEE0 00317B40 7C 63 02 14 */ add r3, r3, r0
+/* 8031BEE4 00317B44 4B F5 68 21 */ bl OSSleepTicks
+lbl_8031BEE8:
+/* 8031BEE8 00317B48 2C 1E 00 00 */ cmpwi r30, 0
+/* 8031BEEC 00317B4C 3B DE FF FF */ addi r30, r30, -1
+/* 8031BEF0 00317B50 41 81 FF AC */ bgt lbl_8031BE9C
+lbl_8031BEF4:
+/* 8031BEF4 00317B54 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031BEF8 00317B58 40 80 00 20 */ bge lbl_8031BF18
+/* 8031BEFC 00317B5C 2C 1B 00 00 */ cmpwi r27, 0
+/* 8031BF00 00317B60 41 82 00 10 */ beq lbl_8031BF10
+/* 8031BF04 00317B64 7F 43 D3 78 */ mr r3, r26
+/* 8031BF08 00317B68 7F E4 FB 78 */ mr r4, r31
+/* 8031BF0C 00317B6C 4B FF FE 6D */ bl dCommon_setLastDeviceErrorToDisk2
+lbl_8031BF10:
+/* 8031BF10 00317B70 7F E3 FB 78 */ mr r3, r31
+/* 8031BF14 00317B74 48 00 01 F4 */ b lbl_8031C108
+lbl_8031BF18:
+/* 8031BF18 00317B78 28 1A 00 1A */ cmplwi r26, 0x1a
+/* 8031BF1C 00317B7C 40 80 00 BC */ bge lbl_8031BFD8
+/* 8031BF20 00317B80 3C 60 80 61 */ lis r3, lbl_8060FA50@ha
+/* 8031BF24 00317B84 57 40 20 36 */ slwi r0, r26, 4
+/* 8031BF28 00317B88 38 63 FA 50 */ addi r3, r3, lbl_8060FA50@l
+/* 8031BF2C 00317B8C 7C 63 02 14 */ add r3, r3, r0
+/* 8031BF30 00317B90 81 83 00 04 */ lwz r12, 4(r3)
+/* 8031BF34 00317B94 2C 0C 00 00 */ cmpwi r12, 0
+/* 8031BF38 00317B98 41 82 00 20 */ beq lbl_8031BF58
+/* 8031BF3C 00317B9C 7F A3 EB 78 */ mr r3, r29
+/* 8031BF40 00317BA0 7F 84 E3 78 */ mr r4, r28
+/* 8031BF44 00317BA4 38 A0 00 03 */ li r5, 3
+/* 8031BF48 00317BA8 7D 89 03 A6 */ mtctr r12
+/* 8031BF4C 00317BAC 4E 80 04 21 */ bctrl
+/* 8031BF50 00317BB0 7C 7F 1B 78 */ mr r31, r3
+/* 8031BF54 00317BB4 48 00 01 8C */ b lbl_8031C0E0
+lbl_8031BF58:
+/* 8031BF58 00317BB8 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 8031BF5C 00317BBC 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
+/* 8031BF60 00317BC0 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
+/* 8031BF64 00317BC4 3B E0 00 00 */ li r31, 0
+/* 8031BF68 00317BC8 3F 00 80 00 */ lis r24, 0x8000
+/* 8031BF6C 00317BCC 3A E0 00 00 */ li r23, 0
+/* 8031BF70 00317BD0 48 00 00 58 */ b lbl_8031BFC8
+lbl_8031BF74:
+/* 8031BF74 00317BD4 7F A3 EB 78 */ mr r3, r29
+/* 8031BF78 00317BD8 7F 84 E3 78 */ mr r4, r28
+/* 8031BF7C 00317BDC 38 A0 00 03 */ li r5, 3
+/* 8031BF80 00317BE0 4B FC C4 89 */ bl NANDOpen
+/* 8031BF84 00317BE4 2C 03 FF FD */ cmpwi r3, -3
+/* 8031BF88 00317BE8 7C 7F 1B 78 */ mr r31, r3
+/* 8031BF8C 00317BEC 41 82 00 08 */ beq lbl_8031BF94
+/* 8031BF90 00317BF0 48 00 01 50 */ b lbl_8031C0E0
+lbl_8031BF94:
+/* 8031BF94 00317BF4 80 18 00 F8 */ lwz r0, 0xf8(r24)
+/* 8031BF98 00317BF8 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
+/* 8031BF9C 00317BFC 54 00 F0 BE */ srwi r0, r0, 2
+/* 8031BFA0 00317C00 7C 79 00 16 */ mulhwu r3, r25, r0
+/* 8031BFA4 00317C04 7C C0 FE 70 */ srawi r0, r6, 0x1f
+/* 8031BFA8 00317C08 7C 97 31 D6 */ mullw r4, r23, r6
+/* 8031BFAC 00317C0C 54 65 D1 BE */ srwi r5, r3, 6
+/* 8031BFB0 00317C10 7C 65 30 16 */ mulhwu r3, r5, r6
+/* 8031BFB4 00317C14 7C 05 01 D6 */ mullw r0, r5, r0
+/* 8031BFB8 00317C18 7C 63 22 14 */ add r3, r3, r4
+/* 8031BFBC 00317C1C 7C 85 31 D6 */ mullw r4, r5, r6
+/* 8031BFC0 00317C20 7C 63 02 14 */ add r3, r3, r0
+/* 8031BFC4 00317C24 4B F5 67 41 */ bl OSSleepTicks
+lbl_8031BFC8:
+/* 8031BFC8 00317C28 2C 1E 00 00 */ cmpwi r30, 0
+/* 8031BFCC 00317C2C 3B DE FF FF */ addi r30, r30, -1
+/* 8031BFD0 00317C30 41 81 FF A4 */ bgt lbl_8031BF74
+/* 8031BFD4 00317C34 48 00 01 0C */ b lbl_8031C0E0
+lbl_8031BFD8:
+/* 8031BFD8 00317C38 3C 1A 00 01 */ addis r0, r26, 1
+/* 8031BFDC 00317C3C 28 00 FF F6 */ cmplwi r0, 0xfff6
+/* 8031BFE0 00317C40 40 82 00 84 */ bne lbl_8031C064
+/* 8031BFE4 00317C44 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 8031BFE8 00317C48 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
+/* 8031BFEC 00317C4C 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
+/* 8031BFF0 00317C50 3B E0 00 00 */ li r31, 0
+/* 8031BFF4 00317C54 3F 00 80 00 */ lis r24, 0x8000
+/* 8031BFF8 00317C58 3A E0 00 00 */ li r23, 0
+/* 8031BFFC 00317C5C 48 00 00 58 */ b lbl_8031C054
+lbl_8031C000:
+/* 8031C000 00317C60 7F A3 EB 78 */ mr r3, r29
+/* 8031C004 00317C64 7F 84 E3 78 */ mr r4, r28
+/* 8031C008 00317C68 38 A0 00 03 */ li r5, 3
+/* 8031C00C 00317C6C 4B FC C3 FD */ bl NANDOpen
+/* 8031C010 00317C70 2C 03 FF FD */ cmpwi r3, -3
+/* 8031C014 00317C74 7C 7F 1B 78 */ mr r31, r3
+/* 8031C018 00317C78 41 82 00 08 */ beq lbl_8031C020
+/* 8031C01C 00317C7C 48 00 00 C4 */ b lbl_8031C0E0
+lbl_8031C020:
+/* 8031C020 00317C80 80 18 00 F8 */ lwz r0, 0xf8(r24)
+/* 8031C024 00317C84 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
+/* 8031C028 00317C88 54 00 F0 BE */ srwi r0, r0, 2
+/* 8031C02C 00317C8C 7C 79 00 16 */ mulhwu r3, r25, r0
+/* 8031C030 00317C90 7C C0 FE 70 */ srawi r0, r6, 0x1f
+/* 8031C034 00317C94 7C 97 31 D6 */ mullw r4, r23, r6
+/* 8031C038 00317C98 54 65 D1 BE */ srwi r5, r3, 6
+/* 8031C03C 00317C9C 7C 65 30 16 */ mulhwu r3, r5, r6
+/* 8031C040 00317CA0 7C 05 01 D6 */ mullw r0, r5, r0
+/* 8031C044 00317CA4 7C 63 22 14 */ add r3, r3, r4
+/* 8031C048 00317CA8 7C 85 31 D6 */ mullw r4, r5, r6
+/* 8031C04C 00317CAC 7C 63 02 14 */ add r3, r3, r0
+/* 8031C050 00317CB0 4B F5 66 B5 */ bl OSSleepTicks
+lbl_8031C054:
+/* 8031C054 00317CB4 2C 1E 00 00 */ cmpwi r30, 0
+/* 8031C058 00317CB8 3B DE FF FF */ addi r30, r30, -1
+/* 8031C05C 00317CBC 41 81 FF A4 */ bgt lbl_8031C000
+/* 8031C060 00317CC0 48 00 00 80 */ b lbl_8031C0E0
+lbl_8031C064:
+/* 8031C064 00317CC4 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 8031C068 00317CC8 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
+/* 8031C06C 00317CCC 3A E3 4D D3 */ addi r23, r3, 0x10624DD3@l
+/* 8031C070 00317CD0 3B E0 00 00 */ li r31, 0
+/* 8031C074 00317CD4 3F 00 80 00 */ lis r24, 0x8000
+/* 8031C078 00317CD8 3B 20 00 00 */ li r25, 0
+/* 8031C07C 00317CDC 48 00 00 58 */ b lbl_8031C0D4
+lbl_8031C080:
+/* 8031C080 00317CE0 7F A3 EB 78 */ mr r3, r29
+/* 8031C084 00317CE4 7F 84 E3 78 */ mr r4, r28
+/* 8031C088 00317CE8 38 A0 00 03 */ li r5, 3
+/* 8031C08C 00317CEC 4B FC C4 09 */ bl NANDPrivateOpen
+/* 8031C090 00317CF0 2C 03 FF FD */ cmpwi r3, -3
+/* 8031C094 00317CF4 7C 7F 1B 78 */ mr r31, r3
+/* 8031C098 00317CF8 41 82 00 08 */ beq lbl_8031C0A0
+/* 8031C09C 00317CFC 48 00 00 44 */ b lbl_8031C0E0
+lbl_8031C0A0:
+/* 8031C0A0 00317D00 80 18 00 F8 */ lwz r0, 0xf8(r24)
+/* 8031C0A4 00317D04 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
+/* 8031C0A8 00317D08 54 00 F0 BE */ srwi r0, r0, 2
+/* 8031C0AC 00317D0C 7C 77 00 16 */ mulhwu r3, r23, r0
+/* 8031C0B0 00317D10 7C C0 FE 70 */ srawi r0, r6, 0x1f
+/* 8031C0B4 00317D14 7C 99 31 D6 */ mullw r4, r25, r6
+/* 8031C0B8 00317D18 54 65 D1 BE */ srwi r5, r3, 6
+/* 8031C0BC 00317D1C 7C 65 30 16 */ mulhwu r3, r5, r6
+/* 8031C0C0 00317D20 7C 05 01 D6 */ mullw r0, r5, r0
+/* 8031C0C4 00317D24 7C 63 22 14 */ add r3, r3, r4
+/* 8031C0C8 00317D28 7C 85 31 D6 */ mullw r4, r5, r6
+/* 8031C0CC 00317D2C 7C 63 02 14 */ add r3, r3, r0
+/* 8031C0D0 00317D30 4B F5 66 35 */ bl OSSleepTicks
+lbl_8031C0D4:
+/* 8031C0D4 00317D34 2C 1E 00 00 */ cmpwi r30, 0
+/* 8031C0D8 00317D38 3B DE FF FF */ addi r30, r30, -1
+/* 8031C0DC 00317D3C 41 81 FF A4 */ bgt lbl_8031C080
+lbl_8031C0E0:
+/* 8031C0E0 00317D40 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031C0E4 00317D44 40 80 00 20 */ bge lbl_8031C104
+/* 8031C0E8 00317D48 2C 1B 00 00 */ cmpwi r27, 0
+/* 8031C0EC 00317D4C 41 82 00 10 */ beq lbl_8031C0FC
+/* 8031C0F0 00317D50 7F 43 D3 78 */ mr r3, r26
+/* 8031C0F4 00317D54 7F E4 FB 78 */ mr r4, r31
+/* 8031C0F8 00317D58 4B FF FC 81 */ bl dCommon_setLastDeviceErrorToDisk2
+lbl_8031C0FC:
+/* 8031C0FC 00317D5C 7F E3 FB 78 */ mr r3, r31
+/* 8031C100 00317D60 48 00 00 08 */ b lbl_8031C108
+lbl_8031C104:
+/* 8031C104 00317D64 38 60 00 00 */ li r3, 0
+lbl_8031C108:
+/* 8031C108 00317D68 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031C10C 00317D6C 4B EA B0 59 */ bl _restgpr_23
+/* 8031C110 00317D70 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8031C114 00317D74 7C 08 03 A6 */ mtlr r0
+/* 8031C118 00317D78 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031C11C 00317D7C 4E 80 00 20 */ blr
|