diff options
Diffstat (limited to 'backends/platform/ds/arm9/source/fat/io_m3sd_asm.s')
-rw-r--r-- | backends/platform/ds/arm9/source/fat/io_m3sd_asm.s | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s b/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s index 18bbee75ce..66d41173ff 100644 --- a/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s +++ b/backends/platform/ds/arm9/source/fat/io_m3sd_asm.s @@ -193,200 +193,3 @@ sd_data_write_busy2: ldmfd r13!,{r4-r5,r15} @-----------------end------------------- - - .TEXT -@ AREA M3SD, CODE, READONLY -@ ENTRY -@----------------------------------- -@ EXPORT SD_crc16 -@ EXPORT SD_data_write - -@CSYNC EQU 0x9800000 -@SDDIR EQU 0x8800000 -@SDCON EQU 0x9800000 -@SDODA EQU 0x9000000 -.equ CSYNC,0x9800000 -.equ SDDIR,0x8800000 -.equ SDCON,0x9800000 -.equ SDODA,0x9000000 - - .ALIGN - .CODE 32 - -clkout: - stmfd r13!,{r0-r1} - ldr r1,=SDDIR - mov r0,#0x4 - strh r0,[r1] - mov r0,r0 - mov r0,r0 - mov r0,#0xc - strh r0,[r1] - ldmfd r13!,{r0-r1} - bx r14 - -clkin: - stmfd r13!,{r0-r1} - ldr r1,=SDDIR - mov r0,#0x0 - strh r0,[r1] - mov r0,r0 - mov r0,r0 - mov r0,#0x8 - strh r0,[r1] - ldmfd r13!,{r0-r1} - bx r14 - -wait_ready: - stmfd r13!,{r0-r2} - mov r2,#32 - mov r1,#SDODA -sd_write_loop2: - mov r0,#0xff @end bit - strh r0,[r1] - bl clkout - subs r2, r2, #1 - bne sd_write_loop2 - -sd_write_busy: - bl clkin - ldrh r0,[r1] - tst r0,#0x100 - beq sd_write_busy - ldmfd r13!,{r0-r1} - bx r14 - -@------void SD_crc16(u16* buff,u16 num,u16* crc16buff) - - .GLOBAL SD_crc16 - -SD_crc16: - stmfd r13!,{r4-r9} - mov r9,r2 - - mov r3,#0 - mov r4,#0 - mov r5,#0 - mov r6,#0 - - ldr r7,=0x80808080 - ldr r8,=0x1021 - mov r1,r1,lsl #3 -sd_crc16_loop: - - tst r7,#0x80 - ldrneb r2,[r0],#1 - - mov r3,r3,lsl #1 - tst r3,#0x10000 - eorne r3,r3,r8 - tst r2,r7,lsr #24 - eorne r3,r3,r8 - - mov r4,r4,lsl #1 - tst r4,#0x10000 - eorne r4,r4,r8 - tst r2,r7,lsr #25 - eorne r4,r4,r8 - - mov r5,r5,lsl #1 - tst r5,#0x10000 - eorne r5,r5,r8 - tst r2,r7,lsr #26 - eorne r5,r5,r8 - - mov r6,r6,lsl #1 - tst r6,#0x10000 - eorne r6,r6,r8 - tst r2,r7,lsr #27 - eorne r6,r6,r8 - - mov r7,r7,ror #4 - subs r1,r1,#4 - bne sd_crc16_loop - - mov r2,r9 - mov r8,#16 -sd_crc16_write_data: - mov r7,r7,lsl #4 - tst r3,#0x8000 - orrne r7,r7,#8 - tst r4,#0x8000 - orrne r7,r7,#4 - tst r5,#0x8000 - orrne r7,r7,#2 - tst r6,#0x8000 - orrne r7,r7,#1 - - mov r3,r3,lsl #1 - mov r4,r4,lsl #1 - mov r5,r5,lsl #1 - mov r6,r6,lsl #1 - - sub r8,r8,#1 - tst r8,#1 - streqb r7,[r2],#1 - cmp r8,#0 - bne sd_crc16_write_data - - ldmfd r13!,{r4-r9} - bx r14 -@------end----------------------------------- - -@-----------------viod SD_data_write(u16 *buff,u16* crc16buff)------------------- - .GLOBAL SD_data_write -SD_data_write: - stmfd r13!,{r4-r5,r14} - mov r5,#512 - mov r2,#SDODA -sd_data_write_busy: - bl clkin - ldrh r3,[r2] - tst r3,#0x100 - beq sd_data_write_busy - - mov r3,#0 @star bit - strh r3,[r2] - bl clkout - -sd_data_write_loop: - ldrh r4,[r0],#2 - mov r3,r4,lsr#4 - strh r3,[r2] - bl clkout - mov r3,r4 - strh r3,[r2] - bl clkout - mov r3,r4,lsr#12 - strh r3,[r2] - bl clkout - mov r3,r4,lsr#8 - strh r3,[r2] - bl clkout - - subs r5, r5, #2 - bne sd_data_write_loop - - cmp r1,#0 - movne r0,r1 - movne r1,#0 - movne r5,#8 - bne sd_data_write_loop - - mov r5,#32 -sd_data_write_loop2: - mov r3,#0xff @end bit - strh r3,[r2] - bl clkout - subs r5, r5, #1 - bne sd_data_write_loop2 - -sd_data_write_busy2: - bl clkin - ldrh r3,[r2] - tst r3,#0x100 - beq sd_data_write_busy2 - - ldmfd r13!,{r4-r5,r15} -@-----------------end------------------- - |