aboutsummaryrefslogtreecommitdiff
path: root/arch/avr32/lib/memcpy.S
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-08-27 13:12:40 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-08-27 13:12:40 +1000
commitf480fe3916de2e2cbb6e384cb685f0f1d8272188 (patch)
tree141c60a2a263f1c01907e692d4aef1e6b699d8c7 /arch/avr32/lib/memcpy.S
parent4f0dbc2781b9dc457159b676289f874ab2dc3560 (diff)
parentf415c413f458837bd0c27086b79aca889f9435e4 (diff)
Merge commit 'origin/master' into next
Diffstat (limited to 'arch/avr32/lib/memcpy.S')
-rw-r--r--arch/avr32/lib/memcpy.S16
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/avr32/lib/memcpy.S b/arch/avr32/lib/memcpy.S
index 0abb26142b6..c2ca49d705a 100644
--- a/arch/avr32/lib/memcpy.S
+++ b/arch/avr32/lib/memcpy.S
@@ -24,8 +24,8 @@ memcpy:
brne 1f
/* At this point, "from" is word-aligned */
-2: sub r10, 4
- mov r9, r12
+2: mov r9, r12
+5: sub r10, 4
brlt 4f
3: ld.w r8, r11++
@@ -49,6 +49,7 @@ memcpy:
/* Handle unaligned "from" pointer */
1: sub r10, 4
+ movlt r9, r12
brlt 4b
add r10, r9
lsl r9, 2
@@ -59,4 +60,13 @@ memcpy:
st.b r12++, r8
ld.ub r8, r11++
st.b r12++, r8
- rjmp 2b
+ mov r8, r12
+ add pc, pc, r9
+ sub r8, 1
+ nop
+ sub r8, 1
+ nop
+ sub r8, 1
+ nop
+ mov r9, r8
+ rjmp 5b