mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
arm: Make arch specific memcpy thumb-safe.
The current arch implementation of memcpy cannot be called from thumb code, because it does not use bx instructions on return. This patch addresses that. Note, that this patch does not touch the hot loop of memcpy, so performance is not affected. Tested on MXS (arm926ejs) with and without thumb-mode enabled. Signed-off-by: Klaus Goger <klaus.goger@theobroma-systems.com> Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
This commit is contained in:
parent
f41a824b23
commit
ba08afe837
1 changed files with 5 additions and 3 deletions
|
@ -59,7 +59,7 @@
|
|||
#endif
|
||||
ENTRY(memcpy)
|
||||
cmp r0, r1
|
||||
moveq pc, lr
|
||||
bxeq lr
|
||||
|
||||
enter r4, lr
|
||||
|
||||
|
@ -147,7 +147,8 @@ ENTRY(memcpy)
|
|||
str1b r0, r4, cs, abort=21f
|
||||
str1b r0, ip, cs, abort=21f
|
||||
|
||||
exit r4, pc
|
||||
exit r4, lr
|
||||
bx lr
|
||||
|
||||
9: rsb ip, ip, #4
|
||||
cmp ip, #2
|
||||
|
@ -256,7 +257,8 @@ ENTRY(memcpy)
|
|||
.endm
|
||||
|
||||
.macro copy_abort_end
|
||||
ldmfd sp!, {r4, pc}
|
||||
ldmfd sp!, {r4, lr}
|
||||
bx lr
|
||||
.endm
|
||||
|
||||
ENDPROC(memcpy)
|
||||
|
|
Loading…
Reference in a new issue