]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Pei/Pcd.c
Add Feature Flag PcdDxePcdDatabaseTraverseEnabled and PcdPeiPcdDatabaseTraverseEnabled
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Pei / Pcd.c
index 6d90671852690becb94a2fab62c0fc6071fed955..fe2fa85f4470cbf49a937ad4b9b53fb0af08d3ab 100644 (file)
@@ -182,7 +182,10 @@ PeiPcdGetSize (
   //\r
   TokenNumber--;\r
 \r
-  ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);\r
 \r
   Size = (PeiPcdDb->Init.LocalTokenNumberTable[TokenNumber] & PCD_DATUM_TYPE_ALL_SET) >> PCD_DATUM_TYPE_SHIFT;\r
 \r
@@ -479,7 +482,14 @@ PeiPcdGetNextToken (
   UINTN               i;\r
   BOOLEAN             Found;\r
     \r
+  if (!FeaturePcdGet (PcdPeiPcdDatabaseTraverseEnabled)) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+    \r
   if (Guid == NULL) {\r
+    if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
+      return EFI_NOT_FOUND;\r
+    }\r
     (*TokenNumber)++;\r
     if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
@@ -567,6 +577,10 @@ PeiPcdGetNextTokenSpace (
   UINTN               i;\r
   BOOLEAN             Found;\r
 \r
+  if (!FeaturePcdGet (PcdPeiPcdDatabaseTraverseEnabled)) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
   ASSERT (Guid != NULL);\r
 \r
   if (PEI_EXMAP_TABLE_EMPTY) {\r