]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Pcd.c
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Pcd.c
diff --git a/EdkModulePkg/Universal/PCD/Dxe/Pcd.c b/EdkModulePkg/Universal/PCD/Dxe/Pcd.c
deleted file mode 100644 (file)
index 01a26bb..0000000
+++ /dev/null
@@ -1,732 +0,0 @@
-/** @file\r
-PCD DXE driver\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-\r
-Module Name: Pcd.c\r
-\r
-**/\r
-\r
-#include "Service.h"\r
-\r
-EFI_LOCK mPcdDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE(TPL_CALLBACK);\r
-\r
-PCD_PROTOCOL mPcdInstance = {\r
-  DxePcdSetSku,\r
-\r
-  DxePcdGet8,\r
-  DxePcdGet16,\r
-  DxePcdGet32,\r
-  DxePcdGet64,\r
-  DxePcdGetPtr,\r
-  DxePcdGetBool,\r
-  DxePcdGetSize,\r
-\r
-  DxePcdGet8Ex,\r
-  DxePcdGet16Ex,\r
-  DxePcdGet32Ex,\r
-  DxePcdGet64Ex,\r
-  DxePcdGetPtrEx,\r
-  DxePcdGetBoolEx,\r
-  DxePcdGetSizeEx,\r
-\r
-  DxePcdSet8,\r
-  DxePcdSet16,\r
-  DxePcdSet32,\r
-  DxePcdSet64,\r
-  DxePcdSetPtr,\r
-  DxePcdSetBool,\r
-\r
-  DxePcdSet8Ex,\r
-  DxePcdSet16Ex,\r
-  DxePcdSet32Ex,\r
-  DxePcdSet64Ex,\r
-  DxePcdSetPtrEx,\r
-  DxePcdSetBoolEx,\r
-\r
-  DxeRegisterCallBackOnSet,\r
-  DxeUnRegisterCallBackOnSet,\r
-  DxePcdGetNextToken,\r
-  DxePcdGetNextTokenSpace\r
-};\r
-\r
-\r
-//\r
-// Static global to reduce the code size\r
-//\r
-static EFI_HANDLE mNewHandle = NULL;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PcdDxeInit (\r
-  IN EFI_HANDLE           ImageHandle,\r
-  IN EFI_SYSTEM_TABLE     *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS          Status;\r
-\r
-  //\r
-  // Make sure the Pcd Protocol is not already installed in the system\r
-  //\r
-\r
-  ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gPcdProtocolGuid);\r
-\r
-  BuildPcdDxeDataBase ();\r
-\r
-  Status = gBS->InstallProtocolInterface (\r
-                  &mNewHandle,\r
-                  &gPcdProtocolGuid,\r
-                  EFI_NATIVE_INTERFACE,\r
-                  &mPcdInstance\r
-                  );\r
-\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return EFI_SUCCESS;\r
-\r
-}\r
-\r
-\r
-VOID\r
-EFIAPI\r
-DxePcdSetSku (\r
-  IN  UINTN         SkuId\r
-  )\r
-{\r
-  mPcdDatabase->PeiDb.Init.SystemSkuId = (SKU_ID) SkuId;\r
-  \r
-  return;\r
-}\r
-\r
-\r
-\r
-UINT8\r
-EFIAPI\r
-DxePcdGet8 (\r
-  IN UINTN                    TokenNumber\r
-  )\r
-{\r
-  return *((UINT8 *) GetWorker (TokenNumber, sizeof (UINT8)));\r
-}\r
-\r
-\r
-\r
-UINT16\r
-EFIAPI\r
-DxePcdGet16 (\r
-  IN UINTN                    TokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned16 (GetWorker (TokenNumber, sizeof (UINT16)));\r
-}\r
-\r
-\r
-\r
-UINT32\r
-EFIAPI\r
-DxePcdGet32 (\r
-  IN UINTN                    TokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned32 (GetWorker (TokenNumber, sizeof (UINT32)));\r
-}\r
-\r
-\r
-\r
-UINT64\r
-EFIAPI\r
-DxePcdGet64 (\r
-  IN UINTN                     TokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned64(GetWorker (TokenNumber, sizeof (UINT64)));\r
-}\r
-\r
-\r
-\r
-VOID *\r
-EFIAPI\r
-DxePcdGetPtr (\r
-  IN UINTN                     TokenNumber\r
-  )\r
-{\r
-  return GetWorker (TokenNumber, 0);\r
-}\r
-\r
-\r
-\r
-BOOLEAN\r
-EFIAPI\r
-DxePcdGetBool (\r
-  IN UINTN                     TokenNumber\r
-  )\r
-{\r
-  return *((BOOLEAN *) GetWorker (TokenNumber, sizeof (BOOLEAN)));\r
-}\r
-\r
-\r
-\r
-UINTN\r
-EFIAPI\r
-DxePcdGetSize (\r
-  IN UINTN                     TokenNumber\r
-  )\r
-{\r
-  UINTN   Size;\r
-  UINT32  *LocalTokenNumberTable;\r
-  BOOLEAN IsPeiDb;\r
-  UINTN   MaxSize;\r
-  UINTN   TmpTokenNumber;\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
-  //\r
-  // Backup the TokenNumber passed in as GetPtrTypeSize need the original TokenNumber\r
-  // \r
-  TmpTokenNumber = TokenNumber;\r
-\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 < PCD_TOTAL_TOKEN_NUMBER + 1);\r
-\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
-  IsPeiDb = (BOOLEAN) (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);\r
-  \r
-  TokenNumber = IsPeiDb ? TokenNumber : \r
-                          (TokenNumber - PEI_LOCAL_TOKEN_NUMBER);\r
-\r
-  LocalTokenNumberTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable \r
-                                  : mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;\r
-\r
-  Size = (LocalTokenNumberTable[TokenNumber] & PCD_DATUM_TYPE_ALL_SET) >> PCD_DATUM_TYPE_SHIFT;\r
-\r
-  if (Size == 0) {\r
-    //\r
-    // For pointer type, we need to scan the SIZE_TABLE to get the current size.\r
-    //\r
-    return GetPtrTypeSize (TmpTokenNumber, &MaxSize);\r
-  } else {\r
-    return Size;\r
-  }\r
-\r
-}\r
-\r
-\r
-\r
-UINT8\r
-EFIAPI\r
-DxePcdGet8Ex (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT8)));\r
-}\r
-\r
-\r
-\r
-UINT16\r
-EFIAPI\r
-DxePcdGet16Ex (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                ExTokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT16)));\r
-}\r
-\r
-\r
-\r
-UINT32\r
-EFIAPI\r
-DxePcdGet32Ex (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT32)));\r
-}\r
-\r
-\r
-\r
-UINT64\r
-EFIAPI\r
-DxePcdGet64Ex (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT64)));\r
-}\r
-\r
-\r
-\r
-VOID *\r
-EFIAPI\r
-DxePcdGetPtrEx (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return  ExGetWorker (Guid, ExTokenNumber, 0);\r
-}\r
-\r
-\r
-\r
-BOOLEAN\r
-EFIAPI\r
-DxePcdGetBoolEx (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof(BOOLEAN)));\r
-}\r
-\r
-\r
-\r
-UINTN\r
-EFIAPI\r
-DxePcdGetSizeEx (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN                 ExTokenNumber\r
-  )\r
-{\r
-  return DxePcdGetSize(GetExPcdTokenNumber (Guid, (UINT32) ExTokenNumber));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet8 (\r
-  IN UINTN              TokenNumber,\r
-  IN UINT8              Value\r
-  )\r
-{\r
-  return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet16 (\r
-  IN UINTN              TokenNumber,\r
-  IN UINT16             Value\r
-  )\r
-{\r
-  return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet32 (\r
-  IN UINTN              TokenNumber,\r
-  IN UINT32             Value\r
-  )\r
-{\r
-  return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet64 (\r
-  IN UINTN              TokenNumber,\r
-  IN UINT64             Value\r
-  )\r
-{\r
-  return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSetPtr (\r
-  IN          UINTN              TokenNumber,\r
-  IN OUT      UINTN              *SizeOfBuffer,\r
-  IN          VOID               *Buffer\r
-  )\r
-{\r
-  return SetWorker (TokenNumber, Buffer, SizeOfBuffer, TRUE);\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSetBool (\r
-  IN UINTN              TokenNumber,\r
-  IN BOOLEAN            Value\r
-  )\r
-{\r
-  return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet8Ex (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN UINTN                  ExTokenNumber,\r
-  IN UINT8                  Value\r
-  )\r
-{\r
-  return  ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet16Ex (\r
-  IN CONST EFI_GUID    *Guid,\r
-  IN UINTN             ExTokenNumber,\r
-  IN UINT16            Value\r
-  )\r
-{\r
-  return  ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet32Ex (\r
-  IN CONST EFI_GUID     *Guid,\r
-  IN UINTN              ExTokenNumber,\r
-  IN UINT32             Value\r
-  )\r
-{\r
-  return  ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSet64Ex (\r
-  IN CONST EFI_GUID    *Guid,\r
-  IN UINTN             ExTokenNumber,\r
-  IN UINT64            Value\r
-  )\r
-{\r
-  return  ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSetPtrEx (\r
-  IN            CONST EFI_GUID         *Guid,\r
-  IN            UINTN                  ExTokenNumber,\r
-  IN OUT        UINTN                  *SizeOfBuffer,\r
-  IN            VOID                   *Buffer\r
-  )\r
-{\r
-  return  ExSetWorker(ExTokenNumber, Guid, Buffer, SizeOfBuffer, TRUE);\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdSetBoolEx (\r
-  IN CONST EFI_GUID    *Guid,\r
-  IN UINTN             ExTokenNumber,\r
-  IN BOOLEAN           Value\r
-  )\r
-{\r
-  return  ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
-}\r
-\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxeRegisterCallBackOnSet (\r
-  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
-  IN  UINTN                   TokenNumber,\r
-  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
-  )\r
-{\r
-  EFI_STATUS Status;\r
-  \r
-  ASSERT (CallBackFunction != NULL);\r
-  \r
-  //\r
-  // Aquire lock to prevent reentrance from TPL_CALLBACK level\r
-  //\r
-  EfiAcquireLock (&mPcdDatabaseLock);\r
-\r
-  Status = DxeRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction);\r
-\r
-  EfiReleaseLock (&mPcdDatabaseLock);\r
-  \r
-  return Status;\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxeUnRegisterCallBackOnSet (\r
-  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
-  IN  UINTN                   TokenNumber,\r
-  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
-  )\r
-{\r
-  EFI_STATUS Status;\r
-  \r
-  ASSERT (CallBackFunction != NULL);\r
-\r
-  //\r
-  // Aquire lock to prevent reentrance from TPL_CALLBACK level\r
-  //\r
-  EfiAcquireLock (&mPcdDatabaseLock);\r
-  \r
-  Status = DxeUnRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction);\r
-\r
-  EfiReleaseLock (&mPcdDatabaseLock);\r
-  \r
-  return Status;\r
-}\r
-\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdGetNextToken (\r
-  IN CONST EFI_GUID         *Guid, OPTIONAL\r
-  IN OUT   UINTN            *TokenNumber\r
-  )\r
-{\r
-  EFI_STATUS          Status;\r
-  BOOLEAN             PeiExMapTableEmpty;\r
-  BOOLEAN             DxeExMapTableEmpty;\r
-\r
-  if (!FeaturePcdGet (PcdDxePcdDatabaseTraverseEnabled)) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  Status = EFI_NOT_FOUND;\r
-  PeiExMapTableEmpty = PEI_EXMAP_TABLE_EMPTY;\r
-  DxeExMapTableEmpty = DXE_EXMAP_TABLE_EMPTY;\r
-\r
-  //\r
-  // Scan the local token space\r
-  //\r
-  if (Guid == NULL) {\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
-    if (((*TokenNumber + 1 > PEI_NEX_TOKEN_NUMBER + 1) && (*TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1)) ||\r
-        ((*TokenNumber + 1 > (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER + 1)))) {\r
-        return EFI_NOT_FOUND;\r
-    }\r
-    \r
-    (*TokenNumber)++;\r
-    if ((*TokenNumber + 1 > PEI_NEX_TOKEN_NUMBER + 1) &&\r
-        (*TokenNumber <= PEI_LOCAL_TOKEN_NUMBER)) {\r
-      //\r
-      // The first Non-Ex type Token Number for DXE PCD \r
-      // database is PEI_LOCAL_TOKEN_NUMBER\r
-      //\r
-      *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
-    } else if (*TokenNumber + 1 > DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER + 1) {\r
-      *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
-    }\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  if (PeiExMapTableEmpty && DxeExMapTableEmpty) {\r
-    *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  if (!PeiExMapTableEmpty) {\r
-    Status = ExGetNextTokeNumber (\r
-                        Guid,\r
-                        TokenNumber,\r
-                        mPcdDatabase->PeiDb.Init.GuidTable,\r
-                        sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
-                        mPcdDatabase->PeiDb.Init.ExMapTable,\r
-                        sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)\r
-                        );\r
-  }\r
-\r
-  if (Status == EFI_SUCCESS) {\r
-    return Status;\r
-  }\r
-\r
-  if (!DxeExMapTableEmpty) {\r
-    Status = ExGetNextTokeNumber (\r
-                        Guid,\r
-                        TokenNumber,\r
-                        mPcdDatabase->DxeDb.Init.GuidTable,\r
-                        sizeof(mPcdDatabase->DxeDb.Init.GuidTable),\r
-                        mPcdDatabase->DxeDb.Init.ExMapTable,\r
-                        sizeof(mPcdDatabase->DxeDb.Init.ExMapTable)\r
-                        );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-STATIC\r
-EFI_GUID **\r
-GetDistinctTokenSpace (\r
-  IN OUT    UINTN             *ExMapTableSize,\r
-  IN        DYNAMICEX_MAPPING *ExMapTable,\r
-  IN        EFI_GUID          *GuidTable\r
-  )\r
-{\r
-  EFI_GUID  **DistinctTokenSpace;\r
-  UINTN     OldGuidIndex;\r
-  UINTN     TsIdx;\r
-  UINTN     Idx;\r
-\r
-\r
-  DistinctTokenSpace = AllocateZeroPool (*ExMapTableSize * sizeof (EFI_GUID *));\r
-  ASSERT (DistinctTokenSpace != NULL);\r
-\r
-  TsIdx = 0;\r
-  OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
-  DistinctTokenSpace[TsIdx] = &GuidTable[OldGuidIndex];\r
-  for (Idx = 1; Idx < *ExMapTableSize; Idx++) {\r
-    if (ExMapTable[Idx].ExGuidIndex != OldGuidIndex) {\r
-      OldGuidIndex = ExMapTable[Idx].ExGuidIndex;\r
-      DistinctTokenSpace[++TsIdx] = &GuidTable[OldGuidIndex];\r
-    }\r
-  }\r
-\r
-  //\r
-  // The total number of Distinct Token Space\r
-  // is TsIdx + 1 because we use TsIdx as a index\r
-  // to the DistinctTokenSpace[]\r
-  //\r
-  *ExMapTableSize = TsIdx + 1;\r
-  return DistinctTokenSpace;\r
-    \r
-}\r
-  \r
-//\r
-// Just pre-allocate a memory buffer that is big enough to\r
-// host all distinct TokenSpace guid in both\r
-// PEI ExMap and DXE ExMap.\r
-//\r
-STATIC EFI_GUID *TmpTokenSpaceBuffer[PEI_EXMAPPING_TABLE_SIZE + DXE_EXMAPPING_TABLE_SIZE] = { 0 };\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxePcdGetNextTokenSpace (\r
-  IN OUT CONST EFI_GUID               **Guid\r
-  )\r
-{\r
-  UINTN               Idx;\r
-  UINTN               Idx2;\r
-  UINTN               Idx3;\r
-  UINTN               PeiTokenSpaceTableSize;\r
-  UINTN               DxeTokenSpaceTableSize;\r
-  EFI_GUID            **PeiTokenSpaceTable;\r
-  EFI_GUID            **DxeTokenSpaceTable;\r
-  BOOLEAN             Match;\r
-  BOOLEAN             PeiExMapTableEmpty;\r
-  BOOLEAN             DxeExMapTableEmpty;\r
-\r
-  if (!FeaturePcdGet (PcdDxePcdDatabaseTraverseEnabled)) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  ASSERT (Guid != NULL);\r
-  \r
-  PeiExMapTableEmpty = PEI_EXMAP_TABLE_EMPTY;\r
-  DxeExMapTableEmpty = DXE_EXMAP_TABLE_EMPTY;\r
-\r
-  if (PeiExMapTableEmpty && DxeExMapTableEmpty) {\r
-    if (*Guid != NULL) {\r
-      return EFI_NOT_FOUND;\r
-    } else {\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-  \r
-  \r
-  if (TmpTokenSpaceBuffer[0] == NULL) {\r
-    PeiTokenSpaceTableSize = 0;\r
-\r
-    if (!PeiExMapTableEmpty) {\r
-      PeiTokenSpaceTableSize = PEI_EXMAPPING_TABLE_SIZE;\r
-      PeiTokenSpaceTable = GetDistinctTokenSpace (&PeiTokenSpaceTableSize,\r
-                            mPcdDatabase->PeiDb.Init.ExMapTable,\r
-                            mPcdDatabase->PeiDb.Init.GuidTable\r
-                            );\r
-      CopyMem (TmpTokenSpaceBuffer, PeiTokenSpaceTable, sizeof (EFI_GUID*) * PeiTokenSpaceTableSize);\r
-    }\r
-\r
-    if (!DxeExMapTableEmpty) {\r
-      DxeTokenSpaceTableSize = DXE_EXMAPPING_TABLE_SIZE;\r
-      DxeTokenSpaceTable = GetDistinctTokenSpace (&DxeTokenSpaceTableSize,\r
-                            mPcdDatabase->DxeDb.Init.ExMapTable,\r
-                            mPcdDatabase->DxeDb.Init.GuidTable\r
-                            );\r
-\r
-      //\r
-      // Make sure EFI_GUID in DxeTokenSpaceTable does not exist in PeiTokenSpaceTable\r
-      //\r
-      for (Idx2 = 0, Idx3 = PeiTokenSpaceTableSize; Idx2 < DxeTokenSpaceTableSize; Idx2++) {\r
-        Match = FALSE;\r
-        for (Idx = 0; Idx < PeiTokenSpaceTableSize; Idx++) {\r
-          if (CompareGuid (TmpTokenSpaceBuffer[Idx], DxeTokenSpaceTable[Idx2])) {\r
-            Match = TRUE;\r
-            break;\r
-          }\r
-        }\r
-        if (!Match) {\r
-          TmpTokenSpaceBuffer[Idx3++] = DxeTokenSpaceTable[Idx2];\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  if (*Guid == NULL) {\r
-    *Guid = TmpTokenSpaceBuffer[0];\r
-    return EFI_SUCCESS;\r
-  }\r
-  \r
-  for (Idx = 0; Idx < (PEI_EXMAPPING_TABLE_SIZE + DXE_EXMAPPING_TABLE_SIZE); Idx++) {\r
-    if(CompareGuid (*Guid, TmpTokenSpaceBuffer[Idx])) {\r
-      Idx++;\r
-      *Guid = TmpTokenSpaceBuffer[Idx];\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-\r
-}\r
-\r
-\r