diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm new file mode 100644 index 00000000..2939aad4 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm @@ -0,0 +1,43 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; 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 + |