Minor stuff (2)
This commit is contained in:
parent
b63b17c54f
commit
858efa604e
@ -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
|
@ -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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user