From 19d9bf7725b9c0255e77e6656f2762d12887f70a Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Tue, 15 Dec 2015 15:01:58 +0000 Subject: [PATCH] ArmPkg/CompilerIntrinsicsLib: add GCC version of __aeabi_memset() CLANG for ARM may emit calls to __aeabi_memset(), which is subtly different from the default memset() [arguments 2 and 3 are reversed] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19281 6f19259b-4bc3-4df7-8a09-765794883524 --- .../CompilerIntrinsicsLib/Arm/memset.S | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.S index 0c7789eb58..bb75d7a70b 100644 --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.S +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.S @@ -15,8 +15,23 @@ .text + .syntax unified .align 2 GCC_ASM_EXPORT (memset) + GCC_ASM_EXPORT (__aeabi_memset) + +# VOID +# EFIAPI +# __aeabi_memset ( +# IN VOID *Destination, +# IN UINT32 Size +# IN UINT32 Character, +# ); +ASM_PFX(__aeabi_memset): + subs ip, r1, #0 + bxeq lr + mov r1, r2 + b L10 # VOID # EFIAPI @@ -26,13 +41,13 @@ # IN UINT32 Size # ); ASM_PFX(memset): - cmp r2, #0 + subs ip, r2, #0 bxeq lr @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 L10: strb r1, [r0], #1 - subs r2, r2, #1 + subs ip, ip, #1 @ While size is not 0 bne L10 bx lr