ASSERT (mPcdDatabase != NULL);\r
\r
GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);\r
- ASSERT (GuidHob != NULL);\r
\r
- PeiDatabase = (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);\r
- //\r
- // Copy PCD Entries refereneced in PEI phase to PCD DATABASE\r
- //\r
- CopyMem (&mPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));\r
+ if (GuidHob != NULL) {\r
+\r
+ //\r
+ // We will copy over the PEI phase's PCD Database.\r
+ // \r
+ // If no PEIMs use dynamic Pcd Entry, the Pcd Service PEIM\r
+ // should not be included at all. So the GuidHob could\r
+ // be NULL. If it is NULL, we just copy over the DXE Default\r
+ // Value to PCD Database.\r
+ //\r
+ \r
+ PeiDatabase = (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);\r
+ //\r
+ // Copy PCD Entries refereneced in PEI phase to PCD DATABASE\r
+ //\r
+ CopyMem (&mPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));\r
+ }\r
\r
//\r
// Copy PCD Entries with default value to PCD DATABASE\r
private ArrayList<String> alComment;\r
private String phase;\r
private int len;\r
- private int bodyStart;\r
- private int bodyLineNum;\r
\r
public LocalTokenNumberTable (String phase) {\r
this.phase = phase;\r
al = new ArrayList<String>();\r
alComment = new ArrayList<String>();\r
- bodyStart = 0;\r
- bodyLineNum = 0;\r
\r
len = 0;\r
}\r
\r
public String getSizeMacro () {\r
- return String.format(PcdDatabase.LocalTokenNumberTableSizeMacro, phase, getSize());\r
+ return String.format(PcdDatabase.LocalTokenNumberTableSizeMacro, phase, getSize())\r
+ + String.format(PcdDatabase.LocalTokenNumberSizeMacro, phase, al.size());\r
}\r
\r
public int getSize () {\r
\r
output.add("/* LocalTokenNumberTable */");\r
output.add("{");\r
- bodyStart = 2;\r
\r
if (al.size() == 0) {\r
output.add("0");\r
\r
}\r
\r
- bodyLineNum = al.size();\r
-\r
output.add("}");\r
\r
return output;\r
\r
public final static String ExMapTableDeclaration = "DYNAMICEX_MAPPING ExMapTable[%s_EXMAPPING_TABLE_SIZE];\r\n";\r
public final static String GuidTableDeclaration = "EFI_GUID GuidTable[%s_GUID_TABLE_SIZE];\r\n";\r
- public final static String LocalTokenNumberTableDeclaration = "UINT32 LocalTokenNumberTable[%s_LOCAL_TOKEN_NUMBER];\r\n";\r
+ public final static String LocalTokenNumberTableDeclaration = "UINT32 LocalTokenNumberTable[%s_LOCAL_TOKEN_NUMBER_TABLE_SIZE];\r\n";\r
public final static String StringTableDeclaration = "UINT16 StringTable[%s_STRING_TABLE_SIZE];\r\n";\r
- public final static String SizeTableDeclaration = "UINT16 SizeTable[%s_LOCAL_TOKEN_NUMBER];\r\n";\r
+ public final static String SizeTableDeclaration = "UINT16 SizeTable[%s_LOCAL_TOKEN_NUMBER_TABLE_SIZE];\r\n";\r
public final static String SkuIdTableDeclaration = "UINT8 SkuIdTable[%s_SKUID_TABLE_SIZE];\r\n";\r
\r
\r
public final static String ExMapTableSizeMacro = "#define %s_EXMAPPING_TABLE_SIZE %d\r\n";\r
public final static String ExTokenNumber = "#define %s_EX_TOKEN_NUMBER %d\r\n";\r
public final static String GuidTableSizeMacro = "#define %s_GUID_TABLE_SIZE %d\r\n";\r
- public final static String LocalTokenNumberTableSizeMacro = "#define %s_LOCAL_TOKEN_NUMBER %d\r\n";\r
+ public final static String LocalTokenNumberTableSizeMacro = "#define %s_LOCAL_TOKEN_NUMBER_TABLE_SIZE %d\r\n";\r
+ public final static String LocalTokenNumberSizeMacro = "#define %s_LOCAL_TOKEN_NUMBER %d\r\n";\r
public final static String StringTableSizeMacro = "#define %s_STRING_TABLE_SIZE %d\r\n";\r
public final static String SkuIdTableSizeMacro = "#define %s_SKUID_TABLE_SIZE %d\r\n";\r
\r