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

@@ -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)

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

View File

@@ -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]