dslinux/linux-2.6.x/arch/arm/lib uaccess.S
amadeus
dslinux_amadeus at user.in-berlin.de
Thu Aug 17 12:00:32 CEST 2006
Update of /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib
In directory antilope:/tmp/cvs-serv8167/linux-2.6.x/arch/arm/lib
Modified Files:
uaccess.S
Log Message:
8bit write cleanup
Index: uaccess.S
===================================================================
RCS file: /cvsroot/dslinux/dslinux/linux-2.6.x/arch/arm/lib/uaccess.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- uaccess.S 20 Feb 2006 16:31:28 -0000 1.2
+++ uaccess.S 17 Aug 2006 10:00:29 -0000 1.3
@@ -11,6 +11,7 @@
* These are highly optimised both for the 4k page size
* and for various alignments.
*/
+#include <linux/config.h>
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/errno.h>
@@ -31,11 +32,26 @@
rsb ip, ip, #4
cmp ip, #2
ldrb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
USER( strbt r3, [r0], #1) @ May fault
+#endif
ldrgeb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
USER( strgebt r3, [r0], #1) @ May fault
+#endif
ldrgtb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
USER( strgtbt r3, [r0], #1) @ May fault
+#endif
sub r2, r2, ip
b .c2u_dest_aligned
@@ -108,11 +124,26 @@
beq .c2u_finished
.c2u_nowords: cmp ip, #2
ldrb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
USER( strbt r3, [r0], #1) @ May fault
+#endif
ldrgeb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
USER( strgebt r3, [r0], #1) @ May fault
+#endif
ldrgtb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
USER( strgtbt r3, [r0], #1) @ May fault
+#endif
b .c2u_finished
.c2u_not_enough:
@@ -187,11 +218,26 @@
teq ip, #0
beq .c2u_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
USER( strbt r3, [r0], #1) @ May fault
+#endif
movge r3, r7, get_byte_2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
USER( strgebt r3, [r0], #1) @ May fault
+#endif
movgt r3, r7, get_byte_3
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
USER( strgtbt r3, [r0], #1) @ May fault
+#endif
b .c2u_finished
.c2u_2fupi: subs r2, r2, #4
@@ -254,11 +300,26 @@
teq ip, #0
beq .c2u_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
USER( strbt r3, [r0], #1) @ May fault
+#endif
movge r3, r7, get_byte_3
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
USER( strgebt r3, [r0], #1) @ May fault
+#endif
ldrgtb r3, [r1], #0
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
USER( strgtbt r3, [r0], #1) @ May fault
+#endif
b .c2u_finished
.c2u_3fupi: subs r2, r2, #4
@@ -321,11 +382,26 @@
teq ip, #0
beq .c2u_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
USER( strbt r3, [r0], #1) @ May fault
+#endif
ldrgeb r3, [r1], #1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
USER( strgebt r3, [r0], #1) @ May fault
+#endif
ldrgtb r3, [r1], #0
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
USER( strgtbt r3, [r0], #1) @ May fault
+#endif
b .c2u_finished
.section .fixup,"ax"
@@ -344,11 +420,26 @@
rsb ip, ip, #4
cmp ip, #2
USER( ldrbt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
strb r3, [r0], #1
+#endif
USER( ldrgebt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
strgeb r3, [r0], #1
+#endif
USER( ldrgtbt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
strgtb r3, [r0], #1
+#endif
sub r2, r2, ip
b .cfu_dest_aligned
@@ -420,11 +511,26 @@
beq .cfu_finished
.cfu_nowords: cmp ip, #2
USER( ldrbt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
strb r3, [r0], #1
+#endif
USER( ldrgebt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
strgeb r3, [r0], #1
+#endif
USER( ldrgtbt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
strgtb r3, [r0], #1
+#endif
b .cfu_finished
.cfu_not_enough:
@@ -500,11 +606,26 @@
teq ip, #0
beq .cfu_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
strb r3, [r0], #1
+#endif
movge r3, r7, get_byte_2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
strgeb r3, [r0], #1
+#endif
movgt r3, r7, get_byte_3
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
strgtb r3, [r0], #1
+#endif
b .cfu_finished
.cfu_2fupi: subs r2, r2, #4
@@ -567,11 +688,26 @@
teq ip, #0
beq .cfu_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
strb r3, [r0], #1
+#endif
movge r3, r7, get_byte_3
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
strgeb r3, [r0], #1
+#endif
USER( ldrgtbt r3, [r1], #0) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
strgtb r3, [r0], #1
+#endif
b .cfu_finished
.cfu_3fupi: subs r2, r2, #4
@@ -634,11 +770,26 @@
teq ip, #0
beq .cfu_finished
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r3, r3, [r0]
+ add r0, r0, #1
+#else
strb r3, [r0], #1
+#endif
USER( ldrgebt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgeb r3, r3, [r0]
+ addge r0, r0, #1
+#else
strgeb r3, [r0], #1
+#endif
USER( ldrgtbt r3, [r1], #1) @ May fault
+#ifdef CONFIG_NDS_ROM8BIT
+ swpgtb r3, r3, [r0]
+ addgt r0, r0, #1
+#else
strgtb r3, [r0], #1
+#endif
b .cfu_finished
.section .fixup,"ax"
@@ -671,9 +822,21 @@
ands ip, r0, #3
beq 1f
cmp ip, #2
+#ifdef CONFIG_NDS_ROM8BIT
+ swpb r2, r2, [r0]
+ add r0, r0, #1
+ mov r2, #0
+ swpleb r2, r2, [r0]
+ addle r0, r0, #1
+ movle r2, #0
+ swpltb r2, r2, [r0]
+ addlt r0, r0, #1
+ movlt r2, #0
+#else
USER( strbt r2, [r0], #1)
USER( strlebt r2, [r0], #1)
USER( strltbt r2, [r0], #1)
+#endif
rsb ip, ip, #4
sub r1, r1, ip @ 7 6 5 4 3 2 1
1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7
@@ -683,10 +846,25 @@
adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3
USER( strplt r2, [r0], #4)
2: tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x
+#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
USER( strnebt r2, [r0], #1)
USER( strnebt r2, [r0], #1)
+#endif
tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1
+#ifdef CONFIG_NDS_ROM8BIT
+ swpneb r2, r2, [r0]
+ addne r0, r0, #1
+ movne r2, #0
+#else
USER( strnebt r2, [r0], #1)
+#endif
mov r0, #0
LOADREGS(fd,sp!, {r1, pc})
More information about the dslinux-commit
mailing list