diff options
author | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-07-21 10:03:20 +0000 |
---|---|---|
committer | qwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-07-21 10:03:20 +0000 |
commit | b962b6b54d90ef655c2567712e6cfe00bc3c3450 (patch) | |
tree | b096de4a6d004201fb54ed96d8b26614140bcf96 /EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S | |
parent | a1cb16bd836fca1363c9e3a5218348615d39fcbb (diff) | |
download | edk2-platforms-b962b6b54d90ef655c2567712e6cfe00bc3c3450.tar.xz |
Add in .S file for GCC tool-chain.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5537 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S')
-rw-r--r-- | EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S new file mode 100644 index 0000000000..9d4bd3bee1 --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/Power10U64.S @@ -0,0 +1,82 @@ +#/*++ +# +#Copyright (c) 2006, Intel Corporation +#All rights reserved. This program and the accompanying materials +#are licensed and made available under the terms and conditions of the BSD License +#which accompanies this distribution. The full text of the license may be found at +#http://opensource.org/licenses/bsd-license.php +# +#THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +#WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#Module Name: +# +# Power10U64.c +# +#Abstract: +# +# Calculates Operand * 10 ^ Power +# +#--*/ +# +##include "Tiano.h" +#include "EfiBind.h" +#--------------------------------------------------------------------------- + .686: + #.MODEL flat,C + .code: + +.globl ASM_PFX(DivU64x32) +#--------------------------------------------------------------------------- +# +#UINT64 +#MultU64x32 ( +# IN UINT64 Multiplicand, +# IN UINTN Multiplier +# ); +# +#UINT64 +#Power10U64 ( +# IN UINT64 Operand, +# IN UINTN Power +# ) +#/*++ +# +#Routine Description: +# +# Raise 10 to the power of Power, and multiply the result with Operand +# +#Arguments: +# +# Operand - multiplicand +# Power - power +# +#Returns: +# +# Operand * 10 ^ Power +# +#--*/ +ASM_PFX(Power10U64): + pushl %ebp + movl %esp, %ebp + movl 8(%ebp), %eax # dword ptr Operand[0] + movl 0xC(%ebp), %edx # dword ptr Operand[4] + movl 0x10(%ebp), %ecx #Power + jcxz _Power10U64_Done + +_Power10U64_Wend: + pushl $10 + push 0xC(%ebp) + push 0x8(%ebp) + call ASM_PFX(MultU64x32) + addl $0xc, %esp + movl %eax, 8(%ebp) # dword ptr Operand[0] + movl %edx, 0xC(%ebp) # dword ptr Operand[4] + loopl _Power10U64_Wend + +_Power10U64_Done: + + popl %ebp + ret +#Power10U64 ENDP + |