]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.asm
Inline ASM in .c file is specific to MS tool-chain. Other tool-chain (such as Intel...
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EfiCommonLib / Ia32 / Power10U64.asm
1 ;/*++
2 ;
3 ;Copyright (c) 2006, Intel Corporation
4 ;All rights reserved. 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 10
68 push [ebp + 0Ch]; dword ptr Operand[4]
69 push [ebp + 8]; dword ptr Operand[0]
70 call MultU64x32
71 add esp, 0cH
72 mov [ebp + 8] , eax; dword ptr Operand[0]
73 mov [ebp + 0Ch] , edx; dword ptr Operand[4]
74 loop _Power10U64_Wend
75
76 _Power10U64_Done:
77
78 pop ebp
79 ret
80 Power10U64 ENDP
81 END