提交 fd522a8d 编写于 作者: C Catalin Marinas 提交者: Russell King

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: NCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 782a0fd1
...@@ -74,7 +74,7 @@ ENTRY(memmove) ...@@ -74,7 +74,7 @@ ENTRY(memmove)
rsb ip, ip, #32 rsb ip, ip, #32
addne pc, pc, ip @ C is always clear here addne pc, pc, ip @ C is always clear here
b 7f b 7f
6: nop 6: W(nop)
W(ldr) r3, [r1, #-4]! W(ldr) r3, [r1, #-4]!
W(ldr) r4, [r1, #-4]! W(ldr) r4, [r1, #-4]!
W(ldr) r5, [r1, #-4]! W(ldr) r5, [r1, #-4]!
...@@ -85,7 +85,7 @@ ENTRY(memmove) ...@@ -85,7 +85,7 @@ ENTRY(memmove)
add pc, pc, ip add pc, pc, ip
nop nop
nop W(nop)
W(str) r3, [r0, #-4]! W(str) r3, [r0, #-4]!
W(str) r4, [r0, #-4]! W(str) r4, [r0, #-4]!
W(str) r5, [r0, #-4]! W(str) r5, [r0, #-4]!
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册