if not self.__GetNextWord():\r
return True\r
\r
- if not self.__Token in ("SET", "FV", "FILE", "DATA"):\r
+ if not self.__Token in ("SET", "FV", "FILE", "DATA", "CAPSULE"):\r
self.__UndoToken()\r
RegionObj.PcdOffset = self.__GetNextPcdName()\r
self.Profile.PcdDict[RegionObj.PcdOffset] = RegionObj.Offset + long(Fd.BaseAddress, 0)\r
if not self.__GetNextWord():\r
return True\r
\r
- if self.__Token == "FV":\r
+ elif self.__Token == "FV":\r
self.__UndoToken()\r
self.__GetRegionFvType( RegionObj)\r
\r
+ elif self.__Token == "CAPSULE":\r
+ self.__UndoToken()\r
+ self.__GetRegionCapType( RegionObj)\r
+\r
elif self.__Token == "FILE":\r
self.__UndoToken()\r
self.__GetRegionFileType( RegionObj)\r
raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
\r
RegionObj.RegionDataList.append(self.__Token)\r
- \r
+\r
+ ## __GetRegionCapType() method\r
+ #\r
+ # Get region capsule data for region\r
+ #\r
+ # @param self The object pointer\r
+ # @param RegionObj for whom region data is got\r
+ #\r
+ def __GetRegionCapType(self, RegionObj):\r
+\r
+ if not self.__IsKeyword("CAPSULE"):\r
+ raise Warning("expected Keyword 'CAPSULE' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+ if not self.__IsToken("="):\r
+ raise Warning("expected '=' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+ if not self.__GetNextToken():\r
+ raise Warning("expected CAPSULE name at line", self.FileName, self.CurrentLineNumber)\r
+\r
+ RegionObj.RegionType = "CAPSULE"\r
+ RegionObj.RegionDataList.append(self.__Token)\r
+\r
+ while self.__IsKeyword("CAPSULE"):\r
+\r
+ if not self.__IsToken("="):\r
+ raise Warning("expected '=' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+ if not self.__GetNextToken():\r
+ raise Warning("expected CAPSULE name at line", self.FileName, self.CurrentLineNumber)\r
+\r
+ RegionObj.RegionDataList.append(self.__Token)\r
+\r
## __GetRegionFileType() method\r
#\r
# Get region file data for region\r
\r
Arch = self.__SkippedChars.rstrip(".")\r
if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "ARM", "COMMON"):\r
- raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
+ raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
\r
ModuleType = self.__GetModuleType()\r
\r
"DXE_SMM_DRIVER", "DXE_RUNTIME_DRIVER", \\r
"UEFI_DRIVER", "UEFI_APPLICATION", "USER_DEFINED", "DEFAULT", "BASE", \\r
"SECURITY_CORE", "COMBINED_PEIM_DRIVER", "PIC_PEIM", "RELOCATABLE_PEIM", \\r
- "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION"):\r
+ "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION", "ACPITABLE", "SMM_DRIVER", "SMM_CORE"):\r
raise Warning("Unknown Module type At line ", self.FileName, self.CurrentLineNumber)\r
return self.__Token\r
\r
raise Warning("expected FILE At Line ", self.FileName, self.CurrentLineNumber)\r
\r
if not self.__GetNextWord():\r
- raise Warning("expected FV type At Line ", self.FileName, self.CurrentLineNumber)\r
+ raise Warning("expected FFS type At Line ", self.FileName, self.CurrentLineNumber)\r
\r
Type = self.__Token.strip().upper()\r
if Type not in ("RAW", "FREEFORM", "SEC", "PEI_CORE", "PEIM",\\r
- "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE"):\r
+ "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE", "SMM_DXE_COMBO", "SMM", "SMM_CORE"):\r
raise Warning("Unknown FV type At line ", self.FileName, self.CurrentLineNumber)\r
\r
if not self.__IsToken("="):\r