]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm
ArmPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / memmove.asm
CommitLineData
3402aac7 1//------------------------------------------------------------------------------\r
1e57a462 2//\r
284fb5c8 3// Copyright (c) 2011-2014, ARM Limited. All rights reserved.\r
1e57a462 4//\r
4059386c 5// SPDX-License-Identifier: BSD-2-Clause-Patent\r
1e57a462 6//\r
7//------------------------------------------------------------------------------\r
8\r
9\r
1e57a462 10\r
efda1775 11 INCLUDE AsmMacroExport.inc\r
1e57a462 12\r
13;\r
14;VOID\r
15;EFIAPI\r
16;__aeabi_memmove (\r
17; IN VOID *Destination,\r
18; IN CONST VOID *Source,\r
19; IN UINT32 Size\r
20; );\r
21;\r
efda1775 22 RVCT_ASM_EXPORT __aeabi_memmove\r
1e57a462 23 CMP r2, #0\r
284fb5c8 24 BXEQ lr\r
1e57a462 25 CMP r0, r1\r
284fb5c8 26 BXEQ lr\r
1e57a462 27 BHI memmove_backward\r
1e57a462 28\r
29memmove_forward\r
30 LDRB r3, [r1], #1\r
31 STRB r3, [r0], #1\r
32 SUBS r2, r2, #1\r
284fb5c8
OM
33 BNE memmove_forward\r
34 BX lr\r
1e57a462 35\r
36memmove_backward\r
37 add r0, r2\r
38 add r1, r2\r
39memmove_backward_loop\r
284fb5c8
OM
40 LDRB r3, [r1, #-1]!\r
41 STRB r3, [r0, #-1]!\r
42 SUBS r2, r2, #1\r
43 BNE memmove_backward_loop\r
44 BX lr\r
1e57a462 45\r
46 END\r