Home | History | Annotate | Download | only in Ia32
      1 /*++
      2 
      3 Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 
     13 Module Name:
     14 
     15   MultU64x32.c
     16 
     17 Abstract:
     18 
     19 
     20 
     21 --*/
     22 
     23 #include "BaseLibInternals.h"
     24 
     25 UINT64
     26 EFIAPI
     27 InternalMathMultU64x32 (
     28   IN      UINT64                    Multiplicand,
     29   IN      UINT32                    Multiplier
     30   )
     31 {
     32   _asm {
     33     mov     ecx, Multiplier
     34     mov     eax, ecx
     35     imul    ecx, dword ptr [Multiplicand + 4]  // overflow not detectable
     36     mul     dword ptr [Multiplicand + 0]
     37     add     edx, ecx
     38   }
     39 }
     40 
     41