diff options
author | Pete Batard <pete@akeo.ie> | 2019-05-13 09:54:15 +0100 |
---|---|---|
committer | Leif Lindholm <leif.lindholm@linaro.org> | 2019-05-13 16:54:29 +0100 |
commit | d039044be43d69f4f2775ed0b30e952aa0ee4c00 (patch) | |
tree | d41f317a2319c2ab814cc80f556fb3cff2cfd4bc /ArmPkg/Library/CompilerIntrinsicsLib | |
parent | 482704df27ccc79ea96e3ffe93b8c7c19703409a (diff) | |
download | edk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.zip edk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.tar.gz edk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.tar.bz2 |
ArmPkg/CompilerIntrinsicsLib: Add lasr ARM assembly source for GCC
The new source is a port of the RVCT version.
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Pete Batard <pete@akeo.ie>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'ArmPkg/Library/CompilerIntrinsicsLib')
-rw-r--r-- | ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.S | 30 | ||||
-rw-r--r-- | ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf | 1 |
2 files changed, 31 insertions, 0 deletions
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.S new file mode 100644 index 0000000..feeea9e --- /dev/null +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.S @@ -0,0 +1,30 @@ +#------------------------------------------------------------------------------
+#
+# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#------------------------------------------------------------------------------
+
+#include <AsmMacroIoLib.h>
+
+#
+#UINT64
+#EFIAPI
+#__aeabi_lasr (
+# IN UINT64 Value
+# IN UINT32 Shift
+# );
+#
+ASM_FUNC(__aeabi_lasr)
+ subs r3,r2,#0x20
+ bpl L_Test
+ rsb r3,r2,#0x20
+ lsr r0,r0,r2
+ orr r0,r0,r1,LSL r3
+ asr r1,r1,r2
+ bx lr
+L_Test:
+ asr r0,r1,r3
+ asr r1,r1,#31
+ bx lr
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf index d6cc63d..aaf3de0 100644 --- a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf +++ b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf @@ -68,6 +68,7 @@ Arm/sourcery.S | GCC
Arm/uldiv.S | GCC
Arm/ldivmod.S | GCC
+ Arm/lasr.S | GCC
Arm/llsr.S | GCC
Arm/llsl.S | GCC
|