]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.asm
Maintainers.txt: Remove EdkCompatibilityPkg information
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EfiCommonLib / Ia32 / Power10U64.asm
1 ;/*++
2 ;
3 ;Copyright (c) 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 ;Module Name:
13 ;
14 ; Power10U64.c
15 ;
16 ;Abstract:
17 ;
18 ; Calculates Operand * 10 ^ Power
19 ;
20 ;--*/
21 ;
22 ;#include "Tiano.h"
23 ;---------------------------------------------------------------------------
24 .686
25 .model flat,C
26 .code
27
28 MultU64x32 PROTO C
29 ;---------------------------------------------------------------------------
30 ;
31 ;UINT64
32 ;MultU64x32 (
33 ; IN UINT64 Multiplicand,
34 ; IN UINTN Multiplier
35 ; );
36 ;
37 ;UINT64
38 ;Power10U64 (
39 ; IN UINT64 Operand,
40 ; IN UINTN Power
41 ; )
42 ;/*++
43 ;
44 ;Routine Description:
45 ;
46 ; Raise 10 to the power of Power, and multiply the result with Operand
47 ;
48 ;Arguments:
49 ;
50 ; Operand - multiplicand
51 ; Power - power
52 ;
53 ;Returns:
54 ;
55 ; Operand * 10 ^ Power
56 ;
57 ;--*/
58 Power10U64 PROC
59 push ebp
60 mov ebp, esp
61 mov eax, dword ptr [ebp + 8]; dword ptr Operand[0]
62 mov edx, dword ptr [ebp + 0Ch]; dword ptr Operand[4]
63 mov ecx, dword ptr [ebp + 10h] ;Power
64 jcxz _Power10U64_Done
65
66 _Power10U64_Wend:
67 push ecx
68 push 10
69 push [ebp + 0Ch]; dword ptr Operand[4]
70 push [ebp + 8]; dword ptr Operand[0]
71 call MultU64x32
72 add esp, 0cH
73 pop ecx
74 mov [ebp + 8] , eax; dword ptr Operand[0]
75 mov [ebp + 0Ch] , edx; dword ptr Operand[4]
76 loop _Power10U64_Wend
77
78 _Power10U64_Done:
79
80 pop ebp
81 ret
82 Power10U64 ENDP
83 END