diff options
author | oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-09-07 19:09:39 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-09-07 19:09:39 +0000 |
commit | 796b0b15e8d3bee61926ef5d3583c35c95aead6f (patch) | |
tree | 722767e4f2c13bed548a348a728907029f17c212 /ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm | |
parent | 6b062a863f5c81a3064fff86c608d1a5eae8bf72 (diff) | |
download | edk2-platforms-796b0b15e8d3bee61926ef5d3583c35c95aead6f.tar.xz |
ArmPkg/CompilerIntrinsicsLib: Add memory intrinsics for RVCT
New intrinsics: __aeabi_memmove, __aeabi_memset, __aeabi_memclr and __aeabi_memclr4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12293 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm')
-rwxr-xr-x | ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm new file mode 100755 index 0000000000..5c6b808f1e --- /dev/null +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> +// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +//------------------------------------------------------------------------------ + + + EXPORT __aeabi_memset + EXPORT __aeabi_memclr + EXPORT __aeabi_memclr4 + + AREA Memset, CODE, READONLY + +; +;VOID +;EFIAPI +;__aeabi_memset ( +; IN VOID *Destination, +; IN UINT32 Character, +; IN UINT32 Size +; ); +; +__aeabi_memset + + ; args = 0, pretend = 0, frame = 0 + ; frame_needed = 1, uses_anonymous_args = 0 + stmfd sp!, {r7, lr} + mov ip, #0 + add r7, sp, #0 + mov lr, r0 + b L9 +L10 + and r3, r1, #255 + add ip, ip, #1 + strb r3, [lr], #1 +L9 + cmp ip, r2 + bne L10 + ldmfd sp!, {r7, pc} + +__aeabi_memclr + mov r1, #0 + b __aeabi_memset + +__aeabi_memclr4 + mov r1, #0 + b __aeabi_memset |