From 76aee8f4cf7b5729b8d1b5de9286f3ee94b557d1 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Mon, 28 Jan 2013 11:40:04 +0000 Subject: ArmPkg/CompilerIntrinsicsLib: Add missing __aeabi_llsl and __aeabi_llsr for GCC Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14103 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S | 40 ++++++++++++++++++++++ ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S | 40 ++++++++++++++++++++++ .../CompilerIntrinsicsLib.inf | 6 +++- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S create mode 100644 ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S (limited to 'ArmPkg') diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S new file mode 100644 index 0000000000..ba8ab1cf58 --- /dev/null +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S @@ -0,0 +1,40 @@ +#------------------------------------------------------------------------------ +# +# Copyright (c) 2013, ARM. All rights reserved.
+# +# 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. +# +#------------------------------------------------------------------------------ + + +.text +.align 2 +GCC_ASM_EXPORT(__aeabi_llsl) + +# +#VOID +#EFIAPI +#__aeabi_llsl ( +# IN VOID *Destination, +# IN VOID *Source, +# IN UINT32 Size +# ); +# +ASM_PFX(__aeabi_llsl): + subs r3,r2,#0x20 + bpl 1f + rsb r3,r2,#0x20 + lsl r1,r1,r2 + orr r1,r1,r0,lsr r3 + lsl r0,r0,r2 + bx lr +1: + lsl r1,r0,r3 + mov r0,#0 + bx lr diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S new file mode 100644 index 0000000000..3d2c106270 --- /dev/null +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S @@ -0,0 +1,40 @@ +#------------------------------------------------------------------------------ +# +# Copyright (c) 2013, ARM. All rights reserved.
+# +# 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. +# +#------------------------------------------------------------------------------ + + +.text +.align 2 +GCC_ASM_EXPORT(__aeabi_llsr) + +# +#VOID +#EFIAPI +#__aeabi_llsr ( +# IN VOID *Destination, +# IN VOID *Source, +# IN UINT32 Size +# ); +# +ASM_PFX(__aeabi_llsr): + subs r3,r2,#0x20 + bpl 1f + rsb r3,r2,#0x20 + lsr r0,r0,r2 + orr r0,r0,r1,lsl r3 + lsr r1,r1,r2 + bx lr +1: + lsr r0,r1,r3 + mov r1,#0 + bx lr diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf index e6e728af65..53b1b15c77 100644 --- a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf +++ b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf @@ -2,7 +2,7 @@ # Base Library implementation. # # Copyright (c) 2009, Apple Inc. All rights reserved.
-# Copyright (c) 2011, ARM Limited. All rights reserved. +# Copyright (c) 2011-2013, ARM Limited. All rights reserved. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -95,6 +95,10 @@ Arm/uldiv.S | GCC Arm/ldivmod.S | GCC + Arm/llsr.S | GCC + Arm/llsl.S | GCC + + [Packages] MdePkg/MdePkg.dec -- cgit v1.2.3