[Scummvm-cvs-logs] SF.net SVN: scummvm: [24798] scummvm/trunk/backends/platform/ds/arm9/source /fat/m3sd.s

agent-q at users.sourceforge.net agent-q at users.sourceforge.net
Fri Dec 1 23:36:16 CET 2006


Revision: 24798
          http://svn.sourceforge.net/scummvm/?rev=24798&view=rev
Author:   agent-q
Date:     2006-12-01 14:36:16 -0800 (Fri, 01 Dec 2006)

Log Message:
-----------
Adding new M3SD driver

Added Paths:
-----------
    scummvm/trunk/backends/platform/ds/arm9/source/fat/m3sd.s

Added: scummvm/trunk/backends/platform/ds/arm9/source/fat/m3sd.s
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/fat/m3sd.s	                        (rev 0)
+++ scummvm/trunk/backends/platform/ds/arm9/source/fat/m3sd.s	2006-12-01 22:36:16 UTC (rev 24798)
@@ -0,0 +1,200 @@
+
+	.equ CSYNC,	0x9800000
+	.equ SDDIR, 0x8800000
+	.equ SDCON,	0x9800000
+	.equ SDODA, 0x9000000
+
+	.TEXT
+    .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
+	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
+
+ at ------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
+ at ------end-----------------------------------
+
+ at -----------------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
+	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
+	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}
+
+DC_FlushRange:
+    add		r1, r1, r0
+    bic     r0, r0, #0x1F
+DC_FlushRangeLoop:
+    mcr     p15, 0, r0, c7, c14, 1
+    mcr     p15, 0, r0, c7, c5, 1
+    add     r0, r0, #0x20
+    cmp     r0, r1
+    blt     DC_FlushRangeLoop
+
+	mov		r0,#0
+	mcr     p15,0x0,r0,c7,c10,4
+    bx      lr
+ at ---------------------------------------
+	.end
+


Property changes on: scummvm/trunk/backends/platform/ds/arm9/source/fat/m3sd.s
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + LF


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list