]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.asm
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EfiCommonLib / Ia32 / Power10U64.asm
CommitLineData
478db76b 1;/*++\r
2;\r
4ea9375a
HT
3;Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4;This program and the accompanying materials \r
478db76b 5;are licensed and made available under the terms and conditions of the BSD License \r
6;which accompanies this distribution. The full text of the license may be found at \r
7;http://opensource.org/licenses/bsd-license.php \r
8; \r
9;THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10;WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11;\r
12;Module Name:\r
13;\r
14; Power10U64.c\r
15;\r
16;Abstract:\r
17;\r
18; Calculates Operand * 10 ^ Power\r
19;\r
20;--*/\r
21;\r
22;#include "Tiano.h"\r
23;---------------------------------------------------------------------------\r
24 .686\r
25 .model flat,C\r
26 .code\r
27\r
28MultU64x32 PROTO C\r
29;---------------------------------------------------------------------------\r
30;\r
31;UINT64\r
32;MultU64x32 (\r
33; IN UINT64 Multiplicand,\r
34; IN UINTN Multiplier\r
35; );\r
36;\r
37;UINT64\r
38;Power10U64 (\r
39; IN UINT64 Operand,\r
40; IN UINTN Power\r
41; )\r
42;/*++\r
43;\r
44;Routine Description:\r
45;\r
46; Raise 10 to the power of Power, and multiply the result with Operand\r
47;\r
48;Arguments:\r
49;\r
50; Operand - multiplicand\r
51; Power - power\r
52;\r
53;Returns:\r
54;\r
55; Operand * 10 ^ Power\r
56;\r
57;--*/\r
58Power10U64 PROC\r
59 push ebp\r
60 mov ebp, esp\r
61 mov eax, dword ptr [ebp + 8]; dword ptr Operand[0]\r
62 mov edx, dword ptr [ebp + 0Ch]; dword ptr Operand[4]\r
63 mov ecx, dword ptr [ebp + 10h] ;Power\r
64 jcxz _Power10U64_Done\r
65 \r
66_Power10U64_Wend:\r
3e99020d 67 push ecx\r
478db76b 68 push 10\r
69 push [ebp + 0Ch]; dword ptr Operand[4]\r
70 push [ebp + 8]; dword ptr Operand[0]\r
71 call MultU64x32\r
72 add esp, 0cH\r
3e99020d 73 pop ecx\r
478db76b 74 mov [ebp + 8] , eax; dword ptr Operand[0]\r
75 mov [ebp + 0Ch] , edx; dword ptr Operand[4]\r
76 loop _Power10U64_Wend\r
77\r
78_Power10U64_Done:\r
79\r
80 pop ebp\r
81 ret\r
82Power10U64 ENDP\r
83 END\r