1) Add in EcpEfiBreakPoint and EcpMemoryFence which will be defined as EFI_BREAKPOINT and MEMORY_FENCE.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6806 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2008-12-02 14:35:15 +00:00
parent 8ad4884016
commit f90eb36c15
9 changed files with 397 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
#/*++
#
# Copyright (c) 2004 - 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:
#
# EfiDriverLib.inf
#
# Abstract:
#
# Component description file for the EFI driver library.
#
#--*/
[defines]
BASE_NAME = EfiDriverLib
COMPONENT_TYPE = LIBRARY
[sources.common]
Debug.c
DevicePath.c
EfiDriverLib.c
DxeDriverLib.c
EfiGetConfigTable.c
EfiDriverModelLib.c
Event.c
Handle.c
LibGlobalSt.c
LibGlobalDs.c
LibGlobalErrorLevel.c
Lock.c
EfiLibAllocate.c
Perf.c
ReportStatusCode.c
GetImage.c
../Hob/Hob.c
[sources.ia32]
Ia32/PerformancePrimitives.c
[sources.x64]
X64/PerformancePrimitives.c
[sources.ipf]
Ipf/PerformancePrimitives.s
#
# Only for CYGWINGCC IPF tool chain, EFI_BREAKPOINT and MEMORY_FENCE
# is defined as two functions EcpEfiBreakPoint and EcpMemoryFence.
#
Ipf/AsmCpuMisc.s | GCC
[sources.ebc]
Ebc/PerformancePrimitives.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)/Foundation/Core/Dxe
$(EDK_SOURCE)/Foundation/Library/Dxe/Include
$(EDK_SOURCE)/Foundation/Cpu/Pentium/Include
[libraries.common]
EdkGuidLib
EdkProtocolLib
EdkFrameworkProtocolLib
EfiGuidLib
EfiProtocolLib
ArchProtocolLib
EfiCommonLib
[libraries.ia32]
CpuIA32Lib
[libraries.x64]
CpuIA32Lib
[libraries.ipf]
CpuIA64Lib
[nmake.common]

View File

@@ -0,0 +1,44 @@
/// @file
/// Contains an implementation of EcpEfiBreakPoint and EcpMemoryFence on Itanium-based
/// architecture.
///
/// Copyright (c) 2008, 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: AsmCpuMisc.s
///
///
.text
.proc EcpEfiBreakPoint
.type EcpEfiBreakPoint, @function
EcpEfiBreakPoint::
break.i 0;;
br.ret.dpnt b0;;
.endp EcpEfiBreakPoint
.proc EcpMemoryFence
.type EcpMemoryFence, @function
EcpMemoryFence::
mf;; // memory access ordering
// do we need the mf.a also here?
mf.a // wait for any IO to complete?
// not sure if we need serialization here, just put it, in case...
srlz.d;;
srlz.i;;
br.ret.dpnt b0;;
.endp EcpMemoryFence