diff options
Diffstat (limited to 'EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/DivU64x32.asm')
-rw-r--r-- | EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/DivU64x32.asm | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/DivU64x32.asm b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/DivU64x32.asm deleted file mode 100644 index 42ae896773..0000000000 --- a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/DivU64x32.asm +++ /dev/null @@ -1,87 +0,0 @@ -;---------------------------------------------------------------------------
-;/*++
-;
-;Copyright (c) 2006, 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:
-;
-; DivU64x32.c
-;
-;Abstract:
-;
-; 64-bit division function for IA-32
-;
-;--*/
-
-;---------------------------------------------------------------------------
- .386
- .model flat,C
- .code
-
-;---------------------------------------------------------------------------
-;UINT64
-;DivU64x32 (
-; IN UINT64 Dividend,
-; IN UINTN Divisor,
-; OUT UINTN *Remainder OPTIONAL
-; )
-;/*++
-
-;Routine Description:
-
-; This routine allows a 64 bit value to be divided with a 32 bit value returns
-; 64bit result and the Remainder.
-;
-;Arguments:
-
-; Dividend - dividend
-; Divisor - divisor
-; Remainder - buffer for remainder
-;
-;Returns:
-
-; Dividend / Divisor
-; Remainder = Dividend mod Divisor
-;
-;N.B. only works for 31bit divisors!!
-;
-;--*/
-;---------------------------------------------------------------------------
-
-DivU64x32 PROC
- push ebp
- mov ebp, esp
- xor edx, edx ; Clear EDX
-
- mov eax, [ebp + 0Ch] ; Put high 32 bits of 64-bit dividend in EAX
- mov ecx, [ebp + 10h] ; Put 32 bits divisor in ECX
- div ecx ; Dividend Divisor Quoitent...Remainder
- ; 0:EAX / ECX = EAX EDX
-
- push eax ; Push quoitent in stack
-
- mov eax, [ebp + 8] ; Put low 32 bits of 64-bit dividend in EAX
- div ecx ; Leave the REMAINDER in EDX as High 32-bit of new dividend
- ; Dividend Divisor Quoitent...Remainder
- ; EDX:EAX / ECX = EAX EDX
-
- mov ecx, [ebp + 14h] ; Put &REMAINDER to ecx
-
- jecxz Label1 ; If ecx == 0, no remainder exist, return with quoitent in EDX directly
- mov dword ptr [ecx], edx ; Put EDX through REMAINDER pointer in ECX
-
-Label1:
- pop edx ; Pop High 32-bit QUOITENT to EDX
- pop ebp
-
- ret
-
-DivU64x32 ENDP
- END
|