summaryrefslogtreecommitdiffstats
path: root/ArmPkg
diff options
context:
space:
mode:
authorPete Batard <pete@akeo.ie>2019-05-13 09:54:15 +0100
committerLeif Lindholm <leif.lindholm@linaro.org>2019-05-13 16:54:29 +0100
commitd039044be43d69f4f2775ed0b30e952aa0ee4c00 (patch)
treed41f317a2319c2ab814cc80f556fb3cff2cfd4bc /ArmPkg
parent482704df27ccc79ea96e3ffe93b8c7c19703409a (diff)
downloadedk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.tar.gz
edk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.tar.bz2
edk2-d039044be43d69f4f2775ed0b30e952aa0ee4c00.zip
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')
-rw-r--r--ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.S30
-rw-r--r--ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf1
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 0000000000..feeea9edd1
--- /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 d6cc63db75..aaf3de02a9 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