mirror of https://github.com/acidanthera/audk.git
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:
parent
8ad4884016
commit
f90eb36c15
|
@ -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]
|
|
@ -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
|
|
@ -47,6 +47,60 @@ Abstract:
|
||||||
|
|
||||||
#include EFI_PROTOCOL_DEFINITION (DebugMask)
|
#include EFI_PROTOCOL_DEFINITION (DebugMask)
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && defined(ECP_CPU_IPF)
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpEfiBreakPoint (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU.
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU. The breakpoint must be implemented such
|
||||||
|
that code can resume normal execution after the breakpoint.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpMemoryFence (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Used to serialize load and store operations.
|
||||||
|
|
||||||
|
All loads and stores that proceed calls to this function are guaranteed to be
|
||||||
|
globally visible when this function returns.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
CHAR8 *Language;
|
CHAR8 *Language;
|
||||||
CHAR16 *UnicodeString;
|
CHAR16 *UnicodeString;
|
||||||
|
|
|
@ -54,6 +54,60 @@ extern EFI_DXE_SERVICES *gDS;
|
||||||
extern UINTN gRtErrorLevel;
|
extern UINTN gRtErrorLevel;
|
||||||
extern FVB_ENTRY *mFvbEntry;
|
extern FVB_ENTRY *mFvbEntry;
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && defined(ECP_CPU_IPF)
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpEfiBreakPoint (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU.
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU. The breakpoint must be implemented such
|
||||||
|
that code can resume normal execution after the breakpoint.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpMemoryFence (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Used to serialize load and store operations.
|
||||||
|
|
||||||
|
All loads and stores that proceed calls to this function are guaranteed to be
|
||||||
|
globally visible when this function returns.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
EfiRuntimeLibFvbVirtualNotifyEvent (
|
EfiRuntimeLibFvbVirtualNotifyEvent (
|
||||||
|
|
|
@ -31,6 +31,60 @@ Abstract:
|
||||||
#include EFI_GUID_DEFINITION (PeiPeCoffLoader)
|
#include EFI_GUID_DEFINITION (PeiPeCoffLoader)
|
||||||
#include EFI_PPI_DEFINITION (FindFv)
|
#include EFI_PPI_DEFINITION (FindFv)
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && defined(ECP_CPU_IPF)
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpEfiBreakPoint (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU.
|
||||||
|
|
||||||
|
Generates a breakpoint on the CPU. The breakpoint must be implemented such
|
||||||
|
that code can resume normal execution after the breakpoint.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
EcpMemoryFence (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Used to serialize load and store operations.
|
||||||
|
|
||||||
|
All loads and stores that proceed calls to this function are guaranteed to be
|
||||||
|
globally visible when this function returns.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
VOID
|
||||||
|
|
||||||
|
--*/
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if (PI_SPECIFICATION_VERSION >= 0x00010000)
|
#if (PI_SPECIFICATION_VERSION >= 0x00010000)
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -83,6 +83,11 @@ COMPONENT_TYPE = LIBRARY
|
||||||
Ipf/Ia_64Gen.h
|
Ipf/Ia_64Gen.h
|
||||||
Ipf/HwAccess.s
|
Ipf/HwAccess.s
|
||||||
Ipf/PeiServicePointer.c
|
Ipf/PeiServicePointer.c
|
||||||
|
#
|
||||||
|
# Only for CYGWINGCC IPF tool chain, EFI_BREAKPOINT and MEMORY_FENCE
|
||||||
|
# is defined as two functions EcpEfiBreakPoint and EcpMemoryFence.
|
||||||
|
#
|
||||||
|
Ipf/AsmCpuMisc.s | GCC
|
||||||
|
|
||||||
|
|
||||||
[libraries.common]
|
[libraries.common]
|
||||||
|
|
|
@ -57,6 +57,11 @@ COMPONENT_TYPE = LIBRARY
|
||||||
Ipf/Fvb.c
|
Ipf/Fvb.c
|
||||||
Ipf/EsalLib.s
|
Ipf/EsalLib.s
|
||||||
Ipf/IpfCpuCache.s
|
Ipf/IpfCpuCache.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]
|
[sources.ebc]
|
||||||
Ebc/RuntimeLib.c
|
Ebc/RuntimeLib.c
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue