2
64-bit Math Worker Function.
3
The 32-bit versions of C compiler generate calls to library routines
4
to handle 64-bit math. These functions use non-standard calling conventions.
6
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
7
This program and the accompanying materials are licensed and made available
8
under the terms and conditions of the BSD License which accompanies this
9
distribution. The full text of the license may be found at
10
http://opensource.org/licenses/bsd-license.php.
12
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17
#include <Library/BaseLib.h>
21
* Divides a 64-bit signed value with a 64-bit signed value and returns
22
* a 64-bit signed result.
24
__declspec(naked) void __cdecl _alldiv (void)
27
// Wrapper Implementation over EDKII DivS64x64Remainder() routine
30
// DivS64x64Remainder (
31
// IN UINT64 Dividend,
33
// OUT UINT64 *Remainder OPTIONAL
39
; Arguments are passed on the stack:
40
; 1st pushed: divisor (QWORD)
41
; 2nd pushed: dividend (QWORD)
44
; EDX:EAX contains the quotient (dividend/divisor)
45
; NOTE: this routine removes the parameters from the stack.
47
; Original local stack when calling _alldiv
60
; ESP---->|---------------|
64
; Set up the local stack for NULL Reminder pointer
70
; Set up the local stack for Divisor parameter
78
; Set up the local stack for Dividend parameter
86
; Call native DivS64x64Remainder of BaseLib
88
call DivS64x64Remainder