]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Pei/Service.c
Support HII VOID* dynamic/dynamicEx type PCD.
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Pei / Service.c
index ab3059c7356ad3fbe72db401f4331118aaf07e7f..66e72f75e78c44b22ded2274b8ac55c664bb7f5e 100644 (file)
@@ -412,6 +412,7 @@ SetWorker (
   switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {\r
     case PCD_TYPE_VPD:\r
     case PCD_TYPE_HII:\r
+    case PCD_TYPE_HII|PCD_TYPE_STRING:\r
     {\r
       ASSERT (FALSE);\r
       return EFI_INVALID_PARAMETER;\r
@@ -624,6 +625,7 @@ GetWorker (
       return (VOID *) (UINTN) (PcdGet32 (PcdVpdBaseAddress) + VpdHead->Offset);\r
     }\r
       \r
+    case PCD_TYPE_HII|PCD_TYPE_STRING:\r
     case PCD_TYPE_HII:\r
     {\r
       VariableHead = (VARIABLE_HEAD *) ((UINT8 *)PeiPcdDb + Offset);\r
@@ -639,7 +641,11 @@ GetWorker (
         //\r
         // Return the default value specified by Platform Integrator \r
         //\r
-        return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);\r
+        if ((LocalTokenNumber & PCD_TYPE_ALL_SET) == (PCD_TYPE_HII|PCD_TYPE_STRING)) {\r
+          return (VOID*)&StringTable[*(UINT16*)((UINT8*)PeiPcdDb + VariableHead->DefaultValueOffset)];\r
+        } else {\r
+          return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);\r
+        }\r
       }\r
     }\r
 \r