1 /** @file
2   Math worker functions.
3 
4   Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5   This program and the accompanying materials
6   are licensed and made available under the terms and conditions of the BSD License
7   which accompanies this distribution.  The full text of the license may be found at
8   http://opensource.org/licenses/bsd-license.php.
9 
10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 
15 
16 
17 
18 #include "BaseLibInternals.h"
19 
20 /**
21   Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
22   a 64-bit unsigned result and an optional 32-bit unsigned remainder.
23 
24   This function divides the 64-bit unsigned value Dividend by the 32-bit
25   unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
26   is not NULL, then the 32-bit unsigned remainder is returned in Remainder.
27   This function returns the 64-bit unsigned quotient.
28 
29   If Divisor is 0, then ASSERT().
30 
31   @param  Dividend  A 64-bit unsigned value.
32   @param  Divisor   A 32-bit unsigned value.
33   @param  Remainder A pointer to a 32-bit unsigned value. This parameter is
34                     optional and may be NULL.
35 
36   @return Dividend / Divisor
37 
38 **/
39 UINT64
40 EFIAPI
DivU64x32Remainder(IN UINT64 Dividend,IN UINT32 Divisor,OUT UINT32 * Remainder OPTIONAL)41 DivU64x32Remainder (
42   IN      UINT64                    Dividend,
43   IN      UINT32                    Divisor,
44   OUT     UINT32                    *Remainder  OPTIONAL
45   )
46 {
47   ASSERT (Divisor != 0);
48   return InternalMathDivRemU64x32 (Dividend, Divisor, Remainder);
49 }
50