diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-01-31 01:41:16 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-01-31 01:41:16 +0000 |
commit | ded219589f184b296190aebcba56b57564f5f337 (patch) | |
tree | e6bb727254e9bf591aad23c7c4ea1fdecf408cbf /libc/string/arm/_memcpy.S | |
parent | 5093fcf1205133dff7181b5d5d12da8db6a724a9 (diff) |
Khem Raj says:
add support for using BX instruction for THUMB aware architectures
Diffstat (limited to 'libc/string/arm/_memcpy.S')
-rw-r--r-- | libc/string/arm/_memcpy.S | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libc/string/arm/_memcpy.S b/libc/string/arm/_memcpy.S index e8d78af23..3704f96b5 100644 --- a/libc/string/arm/_memcpy.S +++ b/libc/string/arm/_memcpy.S @@ -37,7 +37,7 @@ * by Erik Andersen <andersen@codepoet.org> */ - +#include <features.h> #include <endian.h> /* @@ -83,8 +83,11 @@ _memcpy: bcc .Lmemcpy_backwards moveq r0, #0 /* Quick abort for len=0 */ - moveq pc, lr - +#if defined(__USE_BX__) + bxeq lr +#else + moveq pc, lr +#endif stmdb sp!, {r0, lr} /* memcpy() returns dest addr */ subs r2, r2, #4 blt .Lmemcpy_fl4 /* less than 4 bytes */ @@ -389,8 +392,11 @@ _memcpy: .Lmemcpy_bl4: /* less than 4 bytes to go */ adds r2, r2, #4 +#if defined(__USE_BX__) + bxeq lr +#else moveq pc, lr /* done */ - +#endif /* copy the crud byte at a time */ cmp r2, #2 ldrb r3, [r1, #-1]! @@ -399,8 +405,11 @@ _memcpy: strgeb r3, [r0, #-1]! ldrgtb r3, [r1, #-1]! strgtb r3, [r0, #-1]! +#if defined(__USE_BX__) + bx lr +#else mov pc, lr - +#endif /* erg - unaligned destination */ .Lmemcpy_bdestul: cmp r12, #2 |