]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Pei/Service.c
1) remove some dead code from WinNtBusDriver.c
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Pei / Service.c
index 01fe0151bf302591e9f5135c643a5ae7adbc261b..8d03d9c2b190ae4b6427d78bac6f9bf5a820424e 100644 (file)
@@ -46,12 +46,27 @@ PeiRegisterCallBackWorker (
 \r
   if (Guid == NULL) {\r
     TokenNumber = ExTokenNumber;\r
+\r
+    //\r
+    // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+    // We have to decrement TokenNumber by 1 to make it usable\r
+    // as the array index.\r
+    //\r
+    TokenNumber--;\r
     ASSERT (TokenNumber < PEI_NEX_TOKEN_NUMBER);\r
   } else {\r
     TokenNumber = GetExPcdTokenNumber (Guid, ExTokenNumber);\r
+\r
+    //\r
+    // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+    // We have to decrement TokenNumber by 1 to make it usable\r
+    // as the array index.\r
+    //\r
+    TokenNumber--;\r
     ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
   }\r
 \r
+\r
   LocalTokenNumber = GetPcdDatabase()->Init.LocalTokenNumberTable[TokenNumber];\r
 \r
   ASSERT ((LocalTokenNumber & PCD_TYPE_HII) == 0);\r
@@ -248,6 +263,13 @@ InvokeCallbackOnSet (
   PCD_PPI_CALLBACK    *CallbackTable;\r
   UINTN               Idx;\r
 \r
+  //\r
+  // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+  // We have to decrement TokenNumber by 1 to make it usable\r
+  // as the array index.\r
+  //\r
+  TokenNumber--;\r
+  \r
   if (Guid == NULL)\r
     ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
 \r
@@ -287,6 +309,13 @@ SetWorker (
   UINTN               Offset;\r
   VOID                *InternalData;\r
 \r
+  //\r
+  // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+  // We have to decrement TokenNumber by 1 to make it usable\r
+  // as the array index.\r
+  //\r
+  TokenNumber--;\r
+\r
   ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
     \r
   PeiPcdDb = GetPcdDatabase ();\r
@@ -305,7 +334,7 @@ SetWorker (
   // type PCD entry in ExSetWorker.\r
   //\r
   if (TokenNumber < PEI_NEX_TOKEN_NUMBER) {\r
-    InvokeCallbackOnSet (0, NULL, TokenNumber, Data, Size);\r
+    InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, Size);\r
   }\r
 \r
   if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == PCD_TYPE_SKU_ENABLED) {\r
@@ -425,9 +454,16 @@ GetWorker (
   UINT32              LocalTokenNumber;\r
   UINTN               Size;\r
 \r
+  //\r
+  // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+  // We have to decrement TokenNumber by 1 to make it usable\r
+  // as the array index.\r
+  //\r
+  TokenNumber--;\r
+\r
   ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
 \r
-  Size = PeiPcdGetSize(TokenNumber);\r
+  Size = PeiPcdGetSize(TokenNumber + 1);\r
   \r
   ASSERT (GetSize == Size || GetSize == 0);\r
 \r
@@ -464,16 +500,14 @@ GetWorker (
         return (VOID *) ((UINT8 *) Data + VariableHead->Offset);\r
       } else {\r
         //\r
-        // BugBug: Need to support default value. The current implementation\r
-        // will return a memory buffer with ALL ZERO.\r
-        // \r
-        return AllocateZeroPool (Size);\r
+        // Return the default value specified by Platform Integrator \r
+        //\r
+        return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);\r
       }\r
     }\r
 \r
     case PCD_TYPE_DATA:\r
       return (VOID *) ((UINT8 *)PeiPcdDb + Offset);\r
-      break;\r
 \r
     case PCD_TYPE_STRING:\r
       StringTableIdx = (UINT16) *((UINT8 *) PeiPcdDb + Offset);\r