dslinux/linux-2.6.x/arch/arm/lib memzero.S

amadeus dslinux_amadeus at user.in-berlin.de
Sun Aug 13 12:33:39 CEST 2006


Update of /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib
In directory antilope:/tmp/cvs-serv21568/linux-2.6.x/arch/arm/lib

Modified Files:
	memzero.S 
Log Message:
8bit write cleanup

Index: memzero.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib/memzero.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- memzero.S	20 Feb 2006 16:31:28 -0000	1.2
+++ memzero.S	13 Aug 2006 10:33:36 -0000	1.3
@@ -21,9 +21,21 @@
 1:	subs	r1, r1, #4		@ 1 do we have enough
 	blt	5f			@ 1 bytes to align with?
 	cmp	r3, #2			@ 1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpltb	r2, r2, [r0]
+	addlt	r0, r0, #1
+	movlt	r2, #0
+	swpleb	r2, r2, [r0]
+	addle	r0, r0, #1
+	movlt	r2, #0
+	swpb	r2, r2, [r0]
+	add	r0, r0, #1
+	mov	r2, #0
+#else
 	strltb	r2, [r0], #1		@ 1
 	strleb	r2, [r0], #1		@ 1
 	strb	r2, [r0], #1		@ 1
+#endif
 	add	r1, r1, r3		@ 1 (r1 = r1 - (4 - r3))
 /*
  * The pointer is now aligned and the length is adjusted.  Try doing the
@@ -73,8 +85,23 @@
  * may have an unaligned pointer as well.
  */
 5:	tst	r1, #2			@ 1 2 bytes or more?
+#ifdef CONFIG_NDS_ROM8BIT
+	swpneb	r2, r2, [r0]
+	addne	r0, r0, #1
+	movne	r2, #0
+	swpneb	r2, r2, [r0]
+	addne	r0, r0, #1
+	movne	r2, #0
+#else
 	strneb	r2, [r0], #1		@ 1
 	strneb	r2, [r0], #1		@ 1
+#endif
 	tst	r1, #1			@ 1 a byte left over
+#ifdef CONFIG_NDS_ROM8BIT
+	swpneb	r2, r2, [r0]
+	addne	r0, r0, #1
+	movne	r2, #0
+#else
 	strneb	r2, [r0], #1		@ 1
+#endif
 	RETINSTR(mov,pc,lr)		@ 1




More information about the dslinux-commit mailing list