]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm
ArmPkg/CompilerIntrinsicesLib: Fixed memmove() and memset()
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / memmove.asm
index ff7552d1c642aa133b666bf04fd76d34bc0467a7..2147e29dbd26b3a00f2be35a9403159497c97942 100755 (executable)
@@ -1,6 +1,6 @@
 //------------------------------------------------------------------------------\r
 //\r
-// Copyright (c) 2011, ARM Limited. All rights reserved.\r
+// Copyright (c) 2011-2014, ARM Limited. All rights reserved.\r
 //\r
 // This program and the accompanying materials\r
 // are licensed and made available under the terms and conditions of the BSD License\r
 ;\r
 __aeabi_memmove\r
   CMP     r2, #0\r
-  BXEQ    r14\r
+  BXEQ    lr\r
   CMP     r0, r1\r
-  BXEQ    r14\r
+  BXEQ    lr\r
   BHI     memmove_backward\r
-  BLS     memmove_forward\r
 \r
 memmove_forward\r
   LDRB    r3, [r1], #1\r
   STRB    r3, [r0], #1\r
   SUBS    r2, r2, #1\r
-  BXEQ    r14\r
-  B       memmove_forward\r
+  BNE     memmove_forward\r
+  BX      lr\r
 \r
 memmove_backward\r
   add     r0, r2\r
   add     r1, r2\r
 memmove_backward_loop\r
-  LDRB    r3, [r1], #-1\r
-  STRB    r3, [r0], #-1\r
-  SUBS    r2, r2, #-1\r
-  BXEQ    r14\r
-  B       memmove_backward_loop\r
+  LDRB    r3, [r1, #-1]!\r
+  STRB    r3, [r0, #-1]!\r
+  SUBS    r2, r2, #1\r
+  BNE     memmove_backward_loop\r
+  BX      lr\r
 \r
   END\r