]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/PeiServicesTablePointerLib: add missing MigratePeiServicesTablePointer()
authorEugene Cohen <eugene@hp.com>
Wed, 25 Nov 2015 20:06:41 +0000 (20:06 +0000)
committerabiesheuvel <abiesheuvel@Edk2>
Wed, 25 Nov 2015 20:06:41 +0000 (20:06 +0000)
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

ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c

index c2a4a354badf5b454859a5492cfeb30e6ee2c4a7..9320637525d688dddd6b87e8f9b92a8c93ef64b7 100644 (file)
@@ -60,3 +60,26 @@ GetPeiServicesTablePointer (
 {\r
   return (CONST EFI_PEI_SERVICES **)ArmReadTpidrurw();\r
 }\r
+\r
+/**\r
+Perform CPU specific actions required to migrate the PEI Services Table\r
+pointer from temporary RAM to permanent RAM.\r
+\r
+For IA32 CPUs, the PEI Services Table pointer is stored in the 4 bytes\r
+immediately preceding the Interrupt Descriptor Table (IDT) in memory.\r
+For X64 CPUs, the PEI Services Table pointer is stored in the 8 bytes\r
+immediately preceding the Interrupt Descriptor Table (IDT) in memory.\r
+For Itanium and ARM CPUs, a the PEI Services Table Pointer is stored in\r
+a dedicated CPU register.  This means that there is no memory storage\r
+associated with storing the PEI Services Table pointer, so no additional\r
+migration actions are required for Itanium or ARM CPUs.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+MigratePeiServicesTablePointer(\r
+VOID\r
+)\r
+{\r
+  return;\r
+}\r