summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-23 06:48:07 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-23 06:48:07 +0000
commitc1ea912c6c9e573c855eb437234e45a3b340a6b9 (patch)
tree6604517ef5441788be94562082a1dbd8c86c4983 /EdkCompatibilityPkg/Foundation/Library/EfiCommonLib
parentb074cb3927d498a88bd1fb9a25bb62ae088cadff (diff)
downloadedk2-platforms-c1ea912c6c9e573c855eb437234e45a3b340a6b9.tar.xz
1) add in EfiCommonLib_Edk2.inf which will allow EfiCommonLib to build understand GCC and ICC tool-chain.
2) Add in 3 .asm files for ICC tool-chain. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5714 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkCompatibilityPkg/Foundation/Library/EfiCommonLib')
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf116
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiCopyMemRep1.asm86
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiSetMemRep4.asm75
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiZeroMemRep4.asm70
4 files changed, 347 insertions, 0 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf
new file mode 100644
index 0000000000..14e9e6b71c
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf
@@ -0,0 +1,116 @@
+#/*++
+#
+# Copyright (c) 2004 - 2007, 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:
+#
+# EfiCommonLib.inf
+#
+# Abstract:
+#
+# Component description file for the EFI common library.
+#
+#--*/
+
+[defines]
+BASE_NAME = EfiCommonLib
+COMPONENT_TYPE = LIBRARY
+
+[sources.common]
+ EfiCompareGuid.c
+ EfiCompareMem.c
+ ReportStatusCode.c
+ PostCode.c
+ String.c
+ ValueToString.c
+ LinkedList.c
+
+[sources.ia32]
+ Ia32/EfiCopyMemRep1.c | MSFT
+ Ia32/EfiSetMemRep4.c | MSFT
+ Ia32/EfiZeroMemRep4.c | MSFT
+# Ia32/EfiCopyMem.c
+# Ia32/EfiSetMem.c
+# Ia32/EfiZeroMem.c
+ Ia32/LShiftU64.c | MSFT
+ Ia32/RShiftU64.c | MSFT
+ Ia32/MultU64x32.c | MSFT
+ Ia32/DivU64x32.c | MSFT
+ Ia32/Power10U64.c | MSFT
+ Ia32/Log2.c | MSFT
+ Ia32/GetPowerOfTwo.c | MSFT
+
+ Ia32/EfiCopyMem.S | GCC
+ Ia32/EfiSetMem.S | GCC
+ Ia32/EfiZeroMem.S | GCC
+ Ia32/LShiftU64.S | GCC
+ Ia32/RShiftU64.S | GCC
+ Ia32/MultU64x32.S | GCC
+ Ia32/DivU64x32.S | GCC
+ Ia32/Power10U64.S | GCC
+ Ia32/Log2.S | GCC
+ Ia32/GetPowerOfTwo.S | GCC
+
+ Ia32/EfiCopyMemRep1.asm | INTEL
+ Ia32/EfiSetMemRep4.asm | INTEL
+ Ia32/EfiZeroMemRep4.asm | INTEL
+# Ia32/EfiCopyMem.asm | INTEL
+# Ia32/EfiSetMem.asm | INTEL
+# Ia32/EfiZeroMem.asm | INTEL
+ Ia32/LShiftU64.asm | INTEL
+ Ia32/RShiftU64.asm | INTEL
+ Ia32/MultU64x32.asm | INTEL
+ Ia32/DivU64x32.asm | INTEL
+ Ia32/Power10U64.asm | INTEL
+ Ia32/Log2.asm | INTEL
+ Ia32/GetPowerOfTwo.asm | INTEL
+
+[sources.ipf]
+ EfiCopyMem.c
+ EfiSetMem.c
+ EfiZeroMem.c
+ Math.c
+
+[sources.ebc]
+ EfiCopyMem.c
+ EfiSetMem.c
+ EfiZeroMem.c
+ Math.c
+
+[sources.x64]
+ x64/EfiCopyMemRep1.asm
+ x64/EfiSetMemRep4.asm
+ x64/EfiZeroMemRep4.asm
+# x64/EfiCopyMem.asm
+# x64/EfiSetMem.asm
+# x64/EfiZeroMem.asm
+ Math.c
+
+[includes.common]
+ $(EDK_SOURCE)/Foundation
+ $(EDK_SOURCE)/Foundation/Framework
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EDK_SOURCE)
+ $(EDK_SOURCE)/Foundation/Core/Dxe
+ $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+ $(EDK_SOURCE)/Foundation/Include/Pei
+ $(EDK_SOURCE)/Foundation/Library/Pei/Include
+ $(EDK_SOURCE)/Foundation/Framework/Ppi/CpuIo
+ $(EDK_SOURCE)/Foundation/Framework
+
+[libraries.common]
+ EdkFrameworkGuidLib
+
+[nmake.common]
+
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiCopyMemRep1.asm b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiCopyMemRep1.asm
new file mode 100644
index 0000000000..5b21ec1c2d
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiCopyMemRep1.asm
@@ -0,0 +1,86 @@
+;/*++
+;
+;Copyright (c) 2007, 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:
+;
+; EfiCopyMemRep1.asm
+;
+;Abstract:
+;
+; This is the code that uses rep movsb CopyMem service
+;
+;--*/
+;
+;---------------------------------------------------------------------------
+ .686
+ .model flat,C
+ .code
+
+;---------------------------------------------------------------------------
+;#include "Tiano.h"
+;
+;VOID
+;EfiCommonLibCopyMem (
+; IN VOID *Destination,
+; IN VOID *Source,
+; IN UINTN Count
+; )
+;/*++
+;
+;Routine Description:
+;
+; Copy Length bytes from Source to Destination.
+;
+;Arguments:
+;
+; Destination - Target of copy
+;
+; Source - Place to copy from
+;
+; Length - Number of bytes to copy
+;
+;Returns:
+;
+; None
+;
+;--*/
+EfiCommonLibCopyMem PROC
+ push ebp
+ mov ebp, esp
+ push esi
+ push edi
+ mov esi, dword ptr[ebp + 0Ch] ; esi <- Source
+ mov edi, dword ptr[ebp + 8] ; edi <- Destination
+ mov edx, dword ptr[ebp + 10h] ; edx <- Count
+ cmp esi, edi
+ je _CopyDone
+ cmp edx, 0
+ je _CopyDone
+ lea eax, [esi + edx - 1] ; eax <- End of Source
+ cmp esi, edi
+ jae _CopyBytes
+ cmp eax, edi
+ jb _CopyBytes ; Copy backward if overlapped
+ mov esi, eax ; esi <- End of Source
+ lea edi, [edi + edx - 1] ; edi <- End of Destination
+ std
+_CopyBytes:
+ mov ecx, edx
+ rep movsb ; Copy bytes backward
+ cld
+_CopyDone:
+ pop edi
+ pop esi
+ pop ebp
+ ret
+EfiCommonLibCopyMem ENDP
+ END
+
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiSetMemRep4.asm b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiSetMemRep4.asm
new file mode 100644
index 0000000000..5e64214fad
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiSetMemRep4.asm
@@ -0,0 +1,75 @@
+;/*++
+;
+;Copyright (c) 2007, 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:
+;
+ ;EfiSetMemRep4.c
+;
+;Abstract:
+;
+ ;This is the code that uses rep stosd SetMem service
+;
+;--*/
+;
+;---------------------------------------------------------------------------
+ .686
+ .model flat,C
+ .code
+
+;---------------------------------------------------------------------------
+;#include "Tiano.h"
+;
+;VOID
+;EfiCommonLibSetMem (
+ ;IN VOID *Buffer,
+ ;IN UINTN Count,
+ ;IN UINT8 Value
+ ;)
+;/*++
+;
+;Input: VOID *Buffer - Pointer to buffer to write
+ ;UINTN Count - Number of bytes to write
+ ;UINT8 Value - Value to write
+;
+;Output: None.
+;
+;Saves:
+;
+;Modifies:
+;
+;Description: This function uses rep stosd to set memory.
+;
+;--*/
+EfiCommonLibSetMem PROC
+ push ebp
+ mov ebp,esp
+ push edi
+ mov ecx,dword ptr [ebp+0Ch]
+ test ecx, ecx
+ je Exit
+ mov al,byte ptr [ebp+10h]
+ mov ah, al
+ shrd edx, eax, 16
+ shld eax, edx, 16
+ mov edx, ecx
+ mov edi,dword ptr [ebp+8]
+ shr ecx, 2
+ rep stosd
+ mov ecx, edx
+ and ecx, 3
+ rep stosb
+Exit:
+ pop edi
+ pop ebp
+ ret
+
+EfiCommonLibSetMem ENDP
+ END
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiZeroMemRep4.asm b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiZeroMemRep4.asm
new file mode 100644
index 0000000000..4817c10354
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiZeroMemRep4.asm
@@ -0,0 +1,70 @@
+;/*++
+;
+;Copyright (c) 2007, 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:
+;
+ ;EfiZeroMemRep4.asm
+;
+;Abstract:
+;
+ ;This is the code that uses rep stosd ZeroMem service
+;
+;--*/
+;
+;---------------------------------------------------------------------------
+ .686
+ .model flat,C
+ .code
+
+;---------------------------------------------------------------------------
+;#include "Tiano.h"
+;
+;VOID
+;EfiCommonLibZeroMem (
+ ;IN VOID *Buffer,
+ ;IN UINTN Count
+ ;)
+;/*++
+;
+;Input: VOID *Buffer - Pointer to buffer to clear
+ ;UINTN Count - Number of bytes to clear
+;
+;Output: None.
+;
+;Saves:
+;
+;Modifies:
+;
+;Description: This function uses rep stosd to zero memory.
+;
+;--*/
+EfiCommonLibZeroMem PROC
+ push ebp
+ mov ebp,esp
+ push edi
+ mov ecx,dword ptr [ebp+0Ch]
+ test ecx, ecx
+ je Exit
+ xor eax, eax
+ mov edi,dword ptr [ebp+8]
+ mov edx, ecx
+ shr ecx, 2
+ and edx, 3
+ rep stosd
+ mov ecx, edx
+ rep stosb
+Exit:
+ pop edi
+ pop ebp
+ ret
+
+EfiCommonLibZeroMem ENDP
+ END