dslinux/linux-2.6.x/arch/arm/lib io-readsb.S io-readsl.S
amadeus
dslinux_amadeus at user.in-berlin.de
Sun Aug 13 12:31:38 CEST 2006
Update of /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib
In directory antilope:/tmp/cvs-serv21131/linux-2.6.x/arch/arm/lib
Modified Files:
io-readsb.S io-readsl.S
Log Message:
8bit write cleanup
Index: io-readsl.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib/io-readsl.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- io-readsl.S 20 Feb 2006 16:31:28 -0000 1.2
+++ io-readsl.S 13 Aug 2006 10:31:36 -0000 1.3
@@ -9,6 +9,7 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
+#include <linux/config.h>
ENTRY(__raw_readsl)
teq r2, #0 @ do we have to check for the zero len?
@@ -38,14 +39,28 @@
3: ldr r3, [r0]
cmp ip, #2
mov ip, r3, get_byte_0
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb ip, ip, [r1]
+ add r1, r1, #1
+#else
strb ip, [r1], #1
+#endif
bgt 6f
mov ip, r3, get_byte_1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb ip, ip, [r1]
+ add r1, r1, #1
+#else
strb ip, [r1], #1
+#endif
beq 5f
mov ip, r3, get_byte_2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb ip, ip, [r1]
+ add r1, r1, #1
+#else
strb ip, [r1], #1
-
+#endif
4: subs r2, r2, #1
mov ip, r3, pull #24
ldrne r3, [r0]
@@ -70,9 +85,23 @@
bne 6b
mov r3, ip, get_byte_2
+#ifdef CONFIG_NDS_ROM8BIT
+ add r2, r1, #2
+ swpb r3, r3, [r2]
+#else
strb r3, [r1, #2]
+#endif
7: mov r3, ip, get_byte_1
+#ifdef CONFIG_NDS_ROM8BIT
+ add r2, r1, #1
+ swpb r3, r3, [r2]
+#else
strb r3, [r1, #1]
+#endif
8: mov r3, ip, get_byte_0
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r1]
+#else
strb r3, [r1, #0]
+#endif
mov pc, lr
Index: io-readsb.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib/io-readsb.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- io-readsb.S 20 Feb 2006 16:31:28 -0000 1.2
+++ io-readsb.S 13 Aug 2006 10:31:36 -0000 1.3
@@ -9,17 +9,33 @@
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
+#include <linux/config.h>
.insb_align: rsb ip, ip, #4
cmp ip, r2
movgt ip, r2
cmp ip, #2
ldrb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r1]
+ add r1, r1, #1
+#else
strb r3, [r1], #1
+#endif
ldrgeb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r1]
+ addge r1, r1, #1
+#else
strgeb r3, [r1], #1
+#endif
ldrgtb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r1]
+ addgt r1, r1, #1
+#else
strgtb r3, [r1], #1
+#endif
subs r2, r2, ip
bne .insb_aligned
@@ -113,10 +129,23 @@
cmp r2, #2
ldrb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r1]
+ add r1, r1, #1
+#else
strb r3, [r1], #1
+#endif
ldrgeb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r1]
+ addge r1, r1, #1
+#else
strgeb r3, [r1], #1
+#endif
ldrgtb r3, [r0]
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r1]
+#else
strgtb r3, [r1]
-
+#endif
LOADREGS(fd, sp!, {r4 - r6, pc})
More information about the dslinux-commit
mailing list