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

amadeus dslinux_amadeus at user.in-berlin.de
Thu Aug 17 12:53:10 CEST 2006


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

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

Index: memcpy.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib/memcpy.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- memcpy.S	20 Feb 2006 16:31:28 -0000	1.2
+++ memcpy.S	17 Aug 2006 10:53:08 -0000	1.3
@@ -9,6 +9,7 @@
  *
  *  ASM optimised string functions
  */
+#include <linux/config.h>
 #include <linux/linkage.h>
 #include <asm/assembler.h>
 
@@ -86,9 +87,18 @@
 		ldrb	r3, [r1], #1
 		ldrgeb	r4, [r1], #1
 		ldrgtb	r5, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+		swpb	r3, r3, [r0]
+		add	r0, r0, #1
+		swpgeb	r4, r4, [r0]
+		addge	r0, r0, #1
+		swpgtb	r5, r5, [r0]
+		addgt	r0, r0, #1
+#else
 		strb	r3, [r0], #1
 		strgeb	r4, [r0], #1
 		strgtb	r5, [r0], #1
+#endif
 		EXIT
 
 7:		rsb	ip, ip, #4
@@ -96,9 +106,18 @@
 		ldrb	r3, [r1], #1
 		ldrgeb	r4, [r1], #1
 		ldrgtb	r5, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+		swpb	r3, r3, [r0]
+		add	r0, r0, #1
+		swpgeb	r4, r4, [r0]
+		addge	r0, r0, #1
+		swpgtb	r5, r5, [r0]
+		addgt	r0, r0, #1
+#else
 		strb	r3, [r0], #1
 		strgeb	r4, [r0], #1
 		strgtb	r5, [r0], #1
+#endif
 		subs	r2, r2, ip
 		blt	6b
 		ands	ip, r1, #3
@@ -267,18 +286,36 @@
 		ldrb	r3, [r1, #-1]!
 		ldrgeb	r4, [r1, #-1]!
 		ldrgtb	r5, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+		sub	r0, r0, #1
+		swpb	r3, r3, [r0]
+		subge	r0, r0, #1
+		swpgeb	r4, r4, [r0]
+		subgt	r0, r0, #1
+		swpgtb	r5, r5, [r0]
+#else
 		strb	r3, [r0, #-1]!
 		strgeb	r4, [r0, #-1]!
 		strgtb	r5, [r0, #-1]!
+#endif
 		EXIT
 
 30:		cmp	ip, #2
 		ldrb	r3, [r1, #-1]!
 		ldrgeb	r4, [r1, #-1]!
 		ldrgtb	r5, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+		sub	r0, r0, #1
+		swpb	r3, r3, [r0]
+		subge	r0, r0, #1
+		swpgeb	r4, r4, [r0]
+		subgt	r0, r0, #1
+		swpgtb	r5, r5, [r0]
+#else
 		strb	r3, [r0, #-1]!
 		strgeb	r4, [r0, #-1]!
 		strgtb	r5, [r0, #-1]!
+#endif
 		subs	r2, r2, ip
 		blt	29b
 		ands	ip, r1, #3




More information about the dslinux-commit mailing list