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)
|
||||
|
||||
#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 {
|
||||
CHAR8 *Language;
|
||||
CHAR16 *UnicodeString;
|
||||
|
|
|
@ -54,6 +54,60 @@ extern EFI_DXE_SERVICES *gDS;
|
|||
extern UINTN gRtErrorLevel;
|
||||
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
|
||||
EFIAPI
|
||||
EfiRuntimeLibFvbVirtualNotifyEvent (
|
||||
|
|
|
@ -31,6 +31,60 @@ Abstract:
|
|||
#include EFI_GUID_DEFINITION (PeiPeCoffLoader)
|
||||
#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)
|
||||
|
||||
|
|
|
@ -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/HwAccess.s
|
||||
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]
|
||||
|
|
|
@ -57,6 +57,11 @@ COMPONENT_TYPE = LIBRARY
|
|||
Ipf/Fvb.c
|
||||
Ipf/EsalLib.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]
|
||||
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