From cbe09e31218bc2b84a0f1c57f0fa8e72fe0830d5 Mon Sep 17 00:00:00 2001 From: Liming Gao Date: Wed, 10 Aug 2016 20:22:58 +0800 Subject: [PATCH] CryptoPkg IntrinsicLib: Add the missing nasm source file Add two name files IntrinsicLib Ia32 MathLShiftS64.nasm and MathRShiftU64.nasm Cc: Qin Long Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao Reviewed-by: Qin Long --- .../IntrinsicLib/Ia32/MathLShiftS64.nasm | 48 ++++++++++++++++++ .../IntrinsicLib/Ia32/MathRShiftU64.nasm | 49 +++++++++++++++++++ .../Library/IntrinsicLib/IntrinsicLib.inf | 4 +- 3 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm create mode 100644 CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm 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.
+; 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.
+; 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.
+# Copyright (c) 2010 - 2016, Intel Corporation. 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 @@ -41,6 +41,8 @@ Ia32/MathLShiftS64.S | GCC Ia32/MathRShiftU64.S | GCC + Ia32/MathLShiftS64.nasm | GCC + Ia32/MathRShiftU64.nasm | GCC [Sources.X64] CopyMem.c -- 2.39.2