Support HII VOID* dynamic/dynamicEx type PCD.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9990 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2
2010-02-11 08:19:29 +00:00
parent 6ddd3af70b
commit 6ac15f7c8a
2 changed files with 66 additions and 29 deletions

View File

@@ -412,6 +412,7 @@ SetWorker (
switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
case PCD_TYPE_VPD:
case PCD_TYPE_HII:
case PCD_TYPE_HII|PCD_TYPE_STRING:
{
ASSERT (FALSE);
return EFI_INVALID_PARAMETER;
@@ -624,6 +625,7 @@ GetWorker (
return (VOID *) (UINTN) (PcdGet32 (PcdVpdBaseAddress) + VpdHead->Offset);
}
case PCD_TYPE_HII|PCD_TYPE_STRING:
case PCD_TYPE_HII:
{
VariableHead = (VARIABLE_HEAD *) ((UINT8 *)PeiPcdDb + Offset);
@@ -639,7 +641,11 @@ GetWorker (
//
// Return the default value specified by Platform Integrator
//
return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);
if ((LocalTokenNumber & PCD_TYPE_ALL_SET) == (PCD_TYPE_HII|PCD_TYPE_STRING)) {
return (VOID*)&StringTable[*(UINT16*)((UINT8*)PeiPcdDb + VariableHead->DefaultValueOffset)];
} else {
return (VOID *) ((UINT8 *) PeiPcdDb + VariableHead->DefaultValueOffset);
}
}
}