Minor stuff (2)

This commit is contained in:
Aurora 2016-10-17 23:39:13 +02:00
parent b63b17c54f
commit 858efa604e
2 changed files with 16 additions and 15 deletions

View File

@ -2,45 +2,45 @@
.create "build/emunand.bin", 0 .create "build/emunand.bin", 0
.arm .arm
nand_sd: ; Original code that still needs to be executed
; Original code that still needs to be executed.
mov r4, r0 mov r4, r0
mov r5, r1 mov r5, r1
mov r7, r2 mov r7, r2
mov r6, r3 mov r6, r3
; End. ; End
; If we're already trying to access the SD, return. ; If we're already trying to access the SD, return
ldr r2, [r0, #4] ldr r2, [r0, #4]
ldr r1, [sdmmc] ldr r1, [sdmmc]
cmp r2, r1 cmp r2, r1
beq nand_sd_ret beq out
str r1, [r0, #4] ; Set object to be SD str r1, [r0, #4] ; Set object to be SD
ldr r2, [r0, #8] ; Get sector to read 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) cmp r2, #0 ; For GW compatibility, see if we're trying to read the ncsd header (sector 0)
ldr r3, [nand_offset] ldr r3, [nand_offset]
add r2, r3 ; Add the offset to the NAND in the SD. add r2, r3 ; Add the offset to the NAND in the SD
ldreq r3, [ncsd_header_offset] ldreq r3, [ncsd_header_offset]
addeq r2, r3 ; If we're reading the ncsd header, add the offset of that sector. addeq r2, r3 ; If we're reading the ncsd header, add the offset of that sector
str r2, [r0, #8] ; Store sector to read str r2, [r0, #8] ; Store sector to read
nand_sd_ret: out:
; Restore registers. ; Restore registers.
mov r1, r5 mov r1, r5
mov r2, r7 mov r2, r7
mov r3, r6 mov r3, r6
; Return 4 bytes behind where we got called, ; Return 4 bytes behind where we got called,
; due to the offset of this function being stored there. ; due to the offset of this function being stored there
mov r0, lr mov r0, lr
add r0, #4 add r0, #4
bx r0 bx r0
.pool .pool
sdmmc: .ascii "SDMC" sdmmc: .ascii "SDMC"
nand_offset: .ascii "NAND" ; for rednand this should be 1 nand_offset: .ascii "NAND" ; For rednand this should be 1
ncsd_header_offset: .ascii "NCSD" ; depends on nand manufacturer + emunand type (GW/RED) ncsd_header_offset: .ascii "NCSD" ; Depends on nand manufacturer + emunand type (GW/RED)
.close .close

View File

@ -73,6 +73,7 @@
ldr r3, =0x1102 ; Low title id of the fs module ldr r3, =0x1102 ; Low title id of the fs module
cmp r2, r3 ; Compare the low title id to the id of the sm module cmp r2, r3 ; Compare the low title id to the id of the sm module
bne out ; Skip if they're not the same bne out ; Skip if they're not the same
ldr r2, =0x7401 ; strb r1, [r0, #16] ldr r2, =0x7401 ; strb r1, [r0, #16]
ldr r3, =0x2000 ; movs r0, #0 ldr r3, =0x2000 ; movs r0, #0