diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2010-03-29 10:29:46 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-03-29 17:33:33 +0100 |
commit | fd522a8dec11a08b5fdd23982193808e268be19e (patch) | |
tree | 0eb958250db72b19ff2e9da63c432e19be0122bb /arch/arm/lib | |
parent | 782a0fd16723bfc0e765d789e82853d5dc424e76 (diff) |
ARM: 6006/1: ARM: Use the correct NOP size in memmove for Thumb-2 kernel builds
When compiling the kernel to Thumb-2, using a 16-bit NOP in the
memmove() implementation causes the preceding ADD PC instruction to
branch incorrectly in the middle of a 32-bit LDR or STR instruction. The
memmove() code is now similar to the memcpy() template.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/lib')
-rw-r--r-- | arch/arm/lib/memmove.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S index 5025c863713..938fc14f962 100644 --- a/arch/arm/lib/memmove.S +++ b/arch/arm/lib/memmove.S @@ -74,7 +74,7 @@ ENTRY(memmove) rsb ip, ip, #32 addne pc, pc, ip @ C is always clear here b 7f -6: nop +6: W(nop) W(ldr) r3, [r1, #-4]! W(ldr) r4, [r1, #-4]! W(ldr) r5, [r1, #-4]! @@ -85,7 +85,7 @@ ENTRY(memmove) add pc, pc, ip nop - nop + W(nop) W(str) r3, [r0, #-4]! W(str) r4, [r0, #-4]! W(str) r5, [r0, #-4]! |