summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Library/PeiServicesTablePointerLib
diff options
context:
space:
mode:
authorEugene Cohen <eugene@hp.com>2015-11-25 20:06:41 +0000
committerabiesheuvel <abiesheuvel@Edk2>2015-11-25 20:06:41 +0000
commitebe32e8910f017e2dd8f8b33ddcf2d2059490b43 (patch)
tree936a98d59eed190a95c49ef0376848b45027e6b4 /ArmPkg/Library/PeiServicesTablePointerLib
parent95ac787f02d5c85d046af5cefa3b49f0f8841733 (diff)
downloadedk2-ebe32e8910f017e2dd8f8b33ddcf2d2059490b43.tar.gz
edk2-ebe32e8910f017e2dd8f8b33ddcf2d2059490b43.tar.bz2
edk2-ebe32e8910f017e2dd8f8b33ddcf2d2059490b43.zip
ArmPkg/PeiServicesTablePointerLib: add missing MigratePeiServicesTablePointer()
As of SVN 15115, the PEI core needs a MigratePeiServicesTablePointer function. Background: The ArmPkg variant of the PeiServicesTablePointerLib implements the standard PEI Services table retrieval mechanism as defined in the PI Specification Volume 1 section 5.4.4 using the TPIDRURW registers. No special action is required on ARM to migrate the PEI Services table pointer after main memory initialization but a function must be implemented nonetheless. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eugene Cohen <eugene@hp.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18953 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Library/PeiServicesTablePointerLib')
-rw-r--r--ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c b/ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
index c2a4a354ba..9320637525 100644
--- a/ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
+++ b/ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
@@ -60,3 +60,26 @@ GetPeiServicesTablePointer (
{
return (CONST EFI_PEI_SERVICES **)ArmReadTpidrurw();
}
+
+/**
+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(
+VOID
+)
+{
+ return;
+}