summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiming Gao <liming.gao@intel.com>2016-08-10 20:22:58 +0800
committerHao Wu <hao.a.wu@intel.com>2016-10-26 14:50:48 +0800
commit67e1135b223cbb0bf73b017ba3101b6ab67ac18a (patch)
tree9db5a18ea422a573da033101abc3b0290b846139
parent6e44f5aa43f824e49fe0dde291397a606fc91126 (diff)
downloadedk2-67e1135b223cbb0bf73b017ba3101b6ab67ac18a.tar.gz
edk2-67e1135b223cbb0bf73b017ba3101b6ab67ac18a.tar.bz2
edk2-67e1135b223cbb0bf73b017ba3101b6ab67ac18a.zip
CryptoPkg IntrinsicLib: Add the missing nasm source file
Add two name files IntrinsicLib Ia32 MathLShiftS64.nasm and MathRShiftU64.nasm Cc: Qin Long <qin.long@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Qin Long <qin.long@intel.com> (cherry picked from commit cbe09e31218bc2b84a0f1c57f0fa8e72fe0830d5)
-rw-r--r--CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm48
-rw-r--r--CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm49
-rw-r--r--CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf4
3 files changed, 100 insertions, 1 deletions
diff --git a/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm b/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm
new file mode 100644
index 0000000000..a30edbf7d2
--- /dev/null
+++ b/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm
@@ -0,0 +1,48 @@
+;------------------------------------------------------------------------------
+;
+; Copyright (c) 2016, Intel Corporation. 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.
+;
+; Module Name:
+;
+; MathLShiftS64.nasm
+;
+; Abstract:
+;
+; 64-bit Math Worker Function.
+; Shifts a 64-bit signed value left by a certain number of bits.
+;
+;------------------------------------------------------------------------------
+
+ SECTION .text
+
+global ASM_PFX(__ashldi3)
+;------------------------------------------------------------------------------
+;
+; void __cdecl __ashldi3 (void)
+;
+;------------------------------------------------------------------------------
+ASM_PFX(__ashldi3):
+ cmp cl,0x40
+ jnc ReturnZero
+ cmp cl,0x20
+ jnc More32
+ shld edx,eax,cl
+ shl eax,cl
+ ret
+More32:
+ mov edx,eax
+ xor eax,eax
+ and cl,0x1f
+ shl edx,cl
+ ret
+ReturnZero:
+ xor eax,eax
+ xor edx,edx
+ ret
diff --git a/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm b/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm
new file mode 100644
index 0000000000..9bf1711c9b
--- /dev/null
+++ b/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm
@@ -0,0 +1,49 @@
+;------------------------------------------------------------------------------
+;
+; Copyright (c) 2016, Intel Corporation. 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.
+;
+; Module Name:
+;
+; MathRShiftU64.nasm
+;
+; Abstract:
+;
+; 64-bit Math Worker Function.
+; Shifts a 64-bit unsigned value right by a certain number of bits.
+;
+;------------------------------------------------------------------------------
+
+ SECTION .text
+
+;------------------------------------------------------------------------------
+;
+; void __cdecl __ashrdi3 (void)
+;
+;------------------------------------------------------------------------------
+global ASM_PFX(__ashrdi3)
+ASM_PFX(__ashrdi3):
+ cmp cl,0x40
+ jnc _Exit
+ cmp cl,0x20
+ jnc More32
+ shrd eax,edx,cl
+ shr edx,cl
+ ret
+More32:
+ mov eax,edx
+ xor edx,edx
+ and cl,0x1f
+ shr eax,cl
+ ret
+_Exit:
+ xor eax,eax
+ xor edx,edx
+ ret
+
diff --git a/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf b/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
index de61dc40ea..cd09f53e26 100644
--- a/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
+++ b/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
@@ -1,7 +1,7 @@
## @file
# Intrinsic Routines Wrapper Library Instance.
#
-# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2010 - 2016, Intel Corporation. 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
@@ -41,6 +41,8 @@
Ia32/MathLShiftS64.S | GCC
Ia32/MathRShiftU64.S | GCC
+ Ia32/MathLShiftS64.nasm | GCC
+ Ia32/MathRShiftU64.nasm | GCC
[Sources.X64]
CopyMem.c