dslinux/uClibc/libc/string/arm _memcpy.S memset.S

amadeus dslinux_amadeus at user.in-berlin.de
Fri Aug 18 15:05:09 CEST 2006


Update of /cvsroot/dslinux/dslinux/uClibc/libc/string/arm
In directory antilope:/tmp/cvs-serv8280/uClibc/libc/string/arm

Modified Files:
	_memcpy.S memset.S 
Log Message:
8bit write cleanup

Index: memset.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/uClibc/libc/string/arm/memset.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- memset.S	20 Feb 2006 16:39:04 -0000	1.2
+++ memset.S	18 Aug 2006 13:05:07 -0000	1.3
@@ -32,7 +32,12 @@
 	orr	a2, a2, a2, lsl $16
 1:
 	tst	a4, $3		@ aligned yet?
+#ifdef CONFIG_NDS_ROM8BIT
+	swpneb	ip, a2, [a4]
+	addne	a4, a4, #1
+#else 
 	strneb	a2, [a4], $1
+#endif
 	subne	a3, a3, $1
 	bne	1b
 	mov	ip, a2
@@ -56,6 +61,12 @@
 2:
 	movs	a3, a3		@ anything left?
 	moveq	pc, lr		@ nope
+#ifdef CONFIG_NDS_ROM8BIT
+3:	swpb	ip, a2, [a4]
+	add	a4, a4, #1
+	subs	a3, a3, #1
+	bne	3b
+#else
 	rsb	a3, a3, $7
 	add	pc, pc, a3, lsl $2
 	mov	r0, r0
@@ -66,6 +77,7 @@
 	strb	a2, [a4], $1
 	strb	a2, [a4], $1
 	strb	a2, [a4], $1
+#endif
 	mov	pc, lr
 
 .size memset,.-memset;

Index: _memcpy.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/uClibc/libc/string/arm/_memcpy.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- _memcpy.S	20 Feb 2006 16:39:04 -0000	1.2
+++ _memcpy.S	18 Aug 2006 13:05:07 -0000	1.3
@@ -145,11 +145,26 @@
 	/* copy the crud byte at a time */
 	cmp	r2, #2
 	ldrb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpb	r3, r3, [r0]
+	add	r0, r0, #1
+#else
 	strb	r3, [r0], #1
+#endif
 	ldrgeb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpgeb	r3, r3, [r0]
+	addge	r0, r0, #1
+#else
 	strgeb	r3, [r0], #1
+#endif
 	ldrgtb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpgtb	r3, r3, [r0]
+	addgt	r0, r0, #1
+#else
 	strgtb	r3, [r0], #1
+#endif
 	ldmia	sp!, {r0, pc}
 
 	/* erg - unaligned destination */
@@ -159,11 +174,26 @@
 
 	/* align destination with byte copies */
 	ldrb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpb	r3, r3, [r0]
+	add	r0, r0, #1
+#else
 	strb	r3, [r0], #1
+#endif
 	ldrgeb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpgeb	r3, r3, [r0]
+	addge	r0, r0, #1
+#else
 	strgeb	r3, [r0], #1
+#endif
 	ldrgtb	r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+	swpgtb	r3, r3, [r0]
+	addgt	r0, r0, #1
+#else
 	strgtb	r3, [r0], #1
+#endif
 	subs	r2, r2, r12
 	blt	.Lmemcpy_fl4		/* less the 4 bytes */
 
@@ -393,11 +423,26 @@
 	/* copy the crud byte at a time */
 	cmp	r2, #2
 	ldrb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	sub	r0, r0, #1
+	swpb	r3, r3, [r0]
+#else
 	strb	r3, [r0, #-1]!
+#endif
 	ldrgeb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	subge	r0, r0, #1
+	swpgeb	r3, r3, [r0]
+#else
 	strgeb	r3, [r0, #-1]!
+#endif
 	ldrgtb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	subgt	r0, r0, #1
+	swpgtb	r3, r3, [r0]
+#else
 	strgtb	r3, [r0, #-1]!
+#endif
 	mov	pc, lr
 
 	/* erg - unaligned destination */
@@ -406,11 +451,26 @@
 
 	/* align destination with byte copies */
 	ldrb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	sub	r0, r0, #1
+	swpb	r3, r3, [r0]
+#else
 	strb	r3, [r0, #-1]!
+#endif
 	ldrgeb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	subge	r0, r0, #1
+	swpgeb	r3, r3, [r0]
+#else
 	strgeb	r3, [r0, #-1]!
+#endif
 	ldrgtb	r3, [r1, #-1]!
+#ifdef CONFIG_NDS_ROM8BIT
+	subgt	r0, r0, #1
+	swpgtb	r3, r3, [r0]
+#else
 	strgtb	r3, [r0, #-1]!
+#endif
 	subs	r2, r2, r12
 	blt	.Lmemcpy_bl4		/* less than 4 bytes to go */
 	ands	r12, r1, #3




More information about the dslinux-commit mailing list