summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMark Salter <msalter@redhat.com>1997-09-02 18:49:12 +0000
committerMark Salter <msalter@redhat.com>1997-09-02 18:49:12 +0000
commitaa9d6d509fb25984950935b0e1077589fd12b6a8 (patch)
tree594d2f4a5dc7d4e5395d9c5c9b3c0ae9a60270b9 /arch
parent513536edb3db60429c8c31ca431b28fd16eed8ca (diff)
Fixed unaligned copies
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/lib/copy_user.S9
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/mips/lib/copy_user.S b/arch/mips/lib/copy_user.S
index ea691f4fa..30fa6d6e9 100644
--- a/arch/mips/lib/copy_user.S
+++ b/arch/mips/lib/copy_user.S
@@ -34,10 +34,10 @@
*/
not_even_the_same_alignment:
LONG_SUBU v1,zero,a1
- andi v1,a1,3
+ andi v1,3
sltu t0,v0,v1
MOVN(v1,v0,t0)
- beqz v1,align4 # -> finished
+ beqz v1,3f # -> finished
LONG_ADDU v1,a0 # delay slot
1: lb $1,(a1)
EX(1b, fault)
@@ -47,7 +47,7 @@ not_even_the_same_alignment:
LONG_ADDIU a0,1
bne a0,v1,1b
LONG_SUBU v0,1 # delay slot
-
+3:
/*
* Ok. We've fixed the alignment of the copy src for this case.
* Now let's copy in the usual BLOCK_SIZE byte blocks using unaligned
@@ -107,7 +107,7 @@ not_w_aligned:
andi v1,3
sltu t0,v0,v1
MOVN(v1,v0,t0)
- beqz v1,3f # -> finished
+ beqz v1,align4 # -> finished
LONG_ADDU v1,a0 # delay slot
1: lb $1,(a1)
EX(1b, fault)
@@ -119,7 +119,6 @@ not_w_aligned:
LONG_SUBU v0,1 # delay slot
b align4
nop # delay slot
-3:
/* ---------------------------------------------------------------------- */