-
Notifications
You must be signed in to change notification settings - Fork 561
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Move emuNAND hook to ITCM, fixing previously untested emuNAND support for 5.0 (and possibly more versions). This was a very long-standing bug - Fix booting on versions 4.x to 8.x, and restore full support for 5.x to 8.x. All Arm11 custom sysmodules and k11ext have been disabled on 4.x because the Luma3DS v13.0 changes couldn't be ported (this means no Rosalina and no region-free and such, and while I could restore some of the functionality, you should just update *after* installing Luma, like you've been instructed to)
- Loading branch information
Showing
8 changed files
with
89 additions
and
140 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
.section .emunand_patch, "aw", %progbits | ||
.arm | ||
.align 4 | ||
|
||
@ Code originally by Normmatt | ||
|
||
.global emunandPatch | ||
emunandPatch: | ||
@ Original code that still needs to be executed | ||
mov r4, r0 | ||
mov r5, r1 | ||
mov r7, r2 | ||
mov r6, r3 | ||
@ End | ||
|
||
@ If we're already trying to access the SD, return | ||
ldr r2, [r0, #4] | ||
ldr r1, emunandPatchSdmmcStructPtr | ||
cmp r2, r1 | ||
beq out | ||
|
||
str r1, [r0, #4] @ Set object to be SD | ||
ldr r2, [r0, #8] @ Get sector to read | ||
cmp r2, #0 @ For GW compatibility, see if we're trying to read the ncsd header (sector 0) | ||
|
||
ldr r3, emunandPatchNandOffset | ||
add r2, r3 @ Add the offset to the NAND in the SD | ||
|
||
ldreq r3, emunandPatchNcsdHeaderOffset | ||
addeq r2, r3 @ If we're reading the ncsd header, add the offset of that sector | ||
|
||
str r2, [r0, #8] @ Store sector to read | ||
|
||
out: | ||
@ Restore registers. | ||
mov r1, r5 | ||
mov r2, r7 | ||
mov r3, r6 | ||
|
||
@ Return 4 bytes behind where we got called, | ||
@ due to the offset of this function being stored there | ||
mov r0, lr | ||
add r0, #4 | ||
bx r0 | ||
|
||
.pool | ||
|
||
.global emunandPatchSdmmcStructPtr | ||
.global emunandPatchNandOffset | ||
.global emunandPatchNcsdHeaderOffset | ||
|
||
emunandPatchSdmmcStructPtr: .word 0 @ Pointer to sdmmc struct | ||
emunandPatchNandOffset: .word 0 @ For rednand this should be 1 | ||
emunandPatchNcsdHeaderOffset: .word 0 @ Depends on nand manufacturer + emunand type (GW/RED) | ||
|
||
.pool | ||
.balign 4 | ||
|
||
_emunandPatchEnd: | ||
|
||
.global emunandPatchSize | ||
emunandPatchSize: | ||
.word _emunandPatchEnd - emunandPatch |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters