1. Add new API MigratePeiServicesTablePointer() in PeiServicesTablePointerLib class.
2. PeiCore will call this API to migrate the PEI Services Table pointer from temporary RAM to permanent RAM. Signed-off-by: Gao, Liming <liming.gao@intel.com> Reviewed-by: Kinney, Michael D <michael.d.kinney@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15114 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
This library is used for PEIM which does executed from flash device directly but
|
||||
executed in memory.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
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
|
||||
@@ -88,4 +88,28 @@ PeiServicesTablePointerLibConstructor (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Perform CPU specific actions required to migrate the PEI Services Table
|
||||
pointer from temporary RAM to permanent RAM.
|
||||
|
||||
For IA32 CPUs, the PEI Services Table pointer is stored in the 4 bytes
|
||||
immediately preceding the Interrupt Descriptor Table (IDT) in memory.
|
||||
For X64 CPUs, the PEI Services Table pointer is stored in the 8 bytes
|
||||
immediately preceding the Interrupt Descriptor Table (IDT) in memory.
|
||||
For Itanium and ARM CPUs, a the PEI Services Table Pointer is stored in
|
||||
a dedicated CPU register. This means that there is no memory storage
|
||||
associated with storing the PEI Services Table pointer, so no additional
|
||||
migration actions are required for Itanium or ARM CPUs.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
MigratePeiServicesTablePointer (
|
||||
)
|
||||
{
|
||||
//
|
||||
// PEI Services Table pointer is cached in the global variable. No additional
|
||||
// migration actions are required.
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user