]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/PeiPalCallLib/PalCallLib.c
Refine code for ECC check.
[mirror_edk2.git] / MdePkg / Library / PeiPalCallLib / PalCallLib.c
index 6bd88367d9be0328f26e20e1ddac27309f9ad662..07f9f38ad0cd642abd0fa5884549fb4bbff0fe35 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   PAL Call Services Function.\r
 \r
-  Copyright (c) 2006 - 2007 Intel Corporation. All rights reserved\r
+  Copyright (c) 2006 - 2008 Intel Corporation. All rights reserved\r
   This software and associated documentation (if any) is furnished\r
   under a license and may only be used or copied in accordance\r
   with the terms of the license. Except as permitted by such\r
 #include <Library/DebugLib.h>\r
 \r
 /**\r
-\r
   Makes a PAL procedure call.\r
+\r
   This is a wrapper function to make a PAL procedure call.  Based on the Index value,\r
   this API will make static or stacked PAL call. Architected procedures may be designated\r
   as required or optional.  If a PAL procedure is specified as optional, a unique return\r
   code of 0xFFFFFFFFFFFFFFFF is returned in the Status field of the PAL_CALL_RETURN structure.\r
   This indicates that the procedure is not present in this PAL implementation.  It is the\r
-  caller¡¯s responsibility to check for this return code after calling any optional PAL\r
+  caller's responsibility to check for this return code after calling any optional PAL\r
   procedure. No parameter checking is performed on the 4 input parameters, but there are\r
   some common rules that the caller should follow when making a PAL call.  Any address\r
   passed to PAL as buffers for return parameters must be 8-byte aligned.  Unaligned addresses\r
   returned or undefined result may occur during the execution of the procedure.\r
   This function is only available on IPF.\r
 \r
-  @param Index - The PAL procedure Index number.\r
-  @param Arg2  - The 2nd parameter for PAL procedure calls.\r
-  @param Arg3  - The 3rd parameter for PAL procedure calls.\r
-  @param Arg4  - The 4th parameter for PAL procedure calls.\r
+  @param  Index  The PAL procedure Index number.\r
+  @param  Arg2   The 2nd parameter for PAL procedure calls.\r
+  @param  Arg3   The 3rd parameter for PAL procedure calls.\r
+  @param  Arg4   The 4th parameter for PAL procedure calls.\r
 \r
-  @return structure returned from the PAL Call procedure, including the status and return value.\r
+  @return Structure returned from the PAL Call procedure, including the status and return value.\r
 \r
 **/\r
 PAL_CALL_RETURN\r
@@ -61,36 +61,37 @@ PalCall (
 {\r
   UINT64                            PalCallAddress;\r
   PAL_CALL_RETURN                   ReturnVal;\r
-\r
-  EFI_PEI_SERVICES                  **PeiServices;\r
+  CONST EFI_PEI_SERVICES            **PeiServices;\r
   EFI_STATUS                        Status;\r
   EFI_SEC_PLATFORM_INFORMATION_PPI  *SecPlatformPpi;\r
   IPF_HANDOFF_STATUS                IpfStatus;\r
   UINT64                            RecordSize;\r
 \r
   //\r
-  // Get Pei Service Table Pointer\r
+  // Get PEI Service Table Pointer\r
   //\r
   PeiServices = GetPeiServicesTablePointer ();\r
 \r
   //\r
-  // Locate SEC Ppi\r
+  // Locate SEC Platform Information PPI\r
   //\r
-\r
   Status = PeiServicesLocatePpi (\r
-                             &gEfiSecPlatformInformationPpiGuid,\r
-                             0,\r
-                             NULL,\r
-                             (VOID **)&SecPlatformPpi\r
-                             );\r
+             &gEfiSecPlatformInformationPpiGuid,\r
+             0,\r
+             NULL,\r
+             (VOID **)&SecPlatformPpi\r
+             );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
+  //\r
+  // Retrieve PAL call address from platform information reported by the PPI\r
+  //\r
   RecordSize = sizeof (IpfStatus);\r
   SecPlatformPpi->PlatformInformation (\r
-                        PeiServices,\r
-                        &RecordSize,\r
-                        (EFI_SEC_PLATFORM_INFORMATION_RECORD *) &IpfStatus\r
-                        );\r
+                    PeiServices,\r
+                    &RecordSize,\r
+                    (EFI_SEC_PLATFORM_INFORMATION_RECORD *) &IpfStatus\r
+                    );\r
   PalCallAddress = IpfStatus.PalCallAddress;\r
 \r
   ReturnVal = AsmPalCall (PalCallAddress, Index, Arg2, Arg3, Arg4);\r