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