Add Feature Flag PcdDxePcdDatabaseTraverseEnabled and PcdPeiPcdDatabaseTraverseEnabled

Add Pcd DXE driver and PEIM to all supported ARCH in EdkModulePkg-All-Archs.fpd

Make Pcd DXE driver and PEIM compilable under EBC, IPF, X64

Fixed a few other bugs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@838 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2006-07-08 14:37:30 +00:00
parent 3c367f9de6
commit 4f914125e8
10 changed files with 5111 additions and 4340 deletions

View File

@@ -52,7 +52,7 @@ PeiRegisterCallBackWorker (
// as the array index.
//
TokenNumber--;
ASSERT (TokenNumber < PEI_NEX_TOKEN_NUMBER);
ASSERT (TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1);
} else {
TokenNumber = GetExPcdTokenNumber (Guid, ExTokenNumber);
@@ -62,7 +62,10 @@ PeiRegisterCallBackWorker (
// as the array index.
//
TokenNumber--;
ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);
// EBC compiler is very choosy. It may report warning about comparison
// between UINTN and 0 . So we add 1 in each size of the
// comparison.
ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
}
@@ -230,19 +233,19 @@ GetSkuEnabledTokenNumber (
switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
case PCD_TYPE_VPD:
Value = (UINT8 *) &(((VPD_HEAD *) Value)[i]);
return ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
case PCD_TYPE_HII:
Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[i]);
return ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
case PCD_TYPE_STRING:
Value = (UINT8 *) &(((STRING_HEAD *) Value)[i]);
return ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
case PCD_TYPE_DATA:
Value += Size * i;
return (Value - (UINT8 *) PeiPcdDb);
return (UINT32) (Value - (UINT8 *) PeiPcdDb);
default:
ASSERT (FALSE);
@@ -259,7 +262,7 @@ GetSkuEnabledTokenNumber (
VOID
InvokeCallbackOnSet (
UINT32 ExTokenNumber,
UINTN ExTokenNumber,
CONST EFI_GUID *Guid, OPTIONAL
UINTN TokenNumber,
VOID *Data,
@@ -277,8 +280,12 @@ InvokeCallbackOnSet (
//
TokenNumber--;
if (Guid == NULL)
ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);
if (Guid == NULL) {
// EBC compiler is very choosy. It may report warning about comparison
// between UINTN and 0 . So we add 1 in each size of the
// comparison.
ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
}
GuidHob = GetFirstGuidHob (&gPcdPeiCallbackFnTableHobGuid);
ASSERT (GuidHob != NULL);
@@ -335,7 +342,10 @@ SetWorker (
//
TokenNumber--;
ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);
// EBC compiler is very choosy. It may report warning about comparison
// between UINTN and 0 . So we add 1 in each size of the
// comparison.
ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
PeiPcdDb = GetPcdDatabase ();
@@ -350,7 +360,7 @@ SetWorker (
// For Dynamic EX PCD entry, we have invoked the callback function for Dynamic EX
// type PCD entry in ExSetWorker.
//
if (TokenNumber < PEI_NEX_TOKEN_NUMBER) {
if (TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1) {
InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, *Size);
}
@@ -500,7 +510,10 @@ GetWorker (
//
TokenNumber--;
ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);
// EBC compiler is very choosy. It may report warning about comparison
// between UINTN and 0 . So we add 1 in each size of the
// comparison.
ASSERT (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);
ASSERT ((GetSize == PeiPcdGetSize(TokenNumber + 1)) || (GetSize == 0));
@@ -525,7 +538,7 @@ GetWorker (
{
VPD_HEAD *VpdHead;
VpdHead = (VPD_HEAD *) ((UINT8 *)PeiPcdDb + Offset);
return (VOID *) (FixedPcdGet32(PcdVpdBaseAddress) + VpdHead->Offset);
return (VOID *) (UINTN) (FixedPcdGet32(PcdVpdBaseAddress) + VpdHead->Offset);
}
case PCD_TYPE_HII:
@@ -570,7 +583,7 @@ GetWorker (
UINTN
GetExPcdTokenNumber (
IN CONST EFI_GUID *Guid,
IN UINT32 ExTokenNumber
IN UINTN ExTokenNumber
)
{
UINT32 i;