\r
## Import Modules\r
#\r
+from __future__ import absolute_import\r
import string\r
import collections\r
import struct\r
from Common import EdkLogger\r
-\r
+from Common import GlobalData\r
from Common.BuildToolError import *\r
from Common.DataType import *\r
from Common.Misc import *\r
from Common.StringUtils import StringToArray\r
-from StrGather import *\r
-from GenPcdDb import CreatePcdDatabaseCode\r
-from IdfClassObject import *\r
+from .StrGather import *\r
+from .GenPcdDb import CreatePcdDatabaseCode\r
+from .IdfClassObject import *\r
\r
## PCD type string\r
gItemTypeStringDatabase = {\r
EFIAPI\r
${Function} (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
);\r
${END}\r
""")\r
EFIAPI\r
ProcessModuleEntryPointList (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
\r
{\r
EFIAPI\r
ProcessModuleEntryPointList (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
\r
{\r
EFIAPI\r
ProcessModuleEntryPointList (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
\r
{\r
EFIAPI\r
${Function} (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
);${END}\r
"""),\r
}\r
EFIAPI\r
ProcessLibrary${Type}List (\r
IN EFI_HANDLE ImageHandle,\r
- IN EFI_SMM_SYSTEM_TABLE2 *MmSystemTable\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
{\r
${BEGIN} EFI_STATUS Status;\r
SUP_MODULE_UEFI_DRIVER : ["Uefi.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/UefiBootServicesTableLib.h", "Library/UefiDriverEntryPoint.h"],\r
SUP_MODULE_UEFI_APPLICATION : ["Uefi.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/UefiBootServicesTableLib.h", "Library/UefiApplicationEntryPoint.h"],\r
SUP_MODULE_SMM_CORE : ["PiDxe.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/UefiDriverEntryPoint.h"],\r
- SUP_MODULE_MM_STANDALONE : ["PiSmm.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/SmmDriverStandaloneEntryPoint.h"],\r
- SUP_MODULE_MM_CORE_STANDALONE : ["PiSmm.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/SmmCoreStandaloneEntryPoint.h"],\r
+ SUP_MODULE_MM_STANDALONE : ["PiMm.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/StandaloneMmDriverEntryPoint.h"],\r
+ SUP_MODULE_MM_CORE_STANDALONE : ["PiMm.h", "Library/BaseLib.h", "Library/DebugLib.h", "Library/StandaloneMmCoreEntryPoint.h"],\r
SUP_MODULE_USER_DEFINED : [gBasicHeaderFile]\r
}\r
\r
if Info.IsLibrary:\r
PcdList = Info.LibraryPcdList\r
else:\r
- PcdList = Info.ModulePcdList\r
+ PcdList = Info.ModulePcdList + Info.LibraryPcdList\r
PcdExCNameTest = 0\r
for PcdModule in PcdList:\r
if PcdModule.Type in PCD_DYNAMIC_EX_TYPE_SET and Pcd.TokenCName == PcdModule.TokenCName:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD value is not valid dec or hex number for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
- if Pcd.DatumType == TAB_UINT64:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x10000000000000000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('ULL'):\r
- Value += 'ULL'\r
- elif Pcd.DatumType == TAB_UINT32:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x100000000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
- elif Pcd.DatumType == TAB_UINT16:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x10000:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
- elif Pcd.DatumType == TAB_UINT8:\r
- if ValueNumber < 0:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- elif ValueNumber >= 0x100:\r
- EdkLogger.error("build", AUTOGEN_ERROR,\r
- "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
- ExtraData="[%s]" % str(Info))\r
- if not Value.endswith('U'):\r
- Value += 'U'\r
+ if ValueNumber < 0:\r
+ EdkLogger.error("build", AUTOGEN_ERROR,\r
+ "PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
+ ExtraData="[%s]" % str(Info))\r
+ elif ValueNumber > MAX_VAL_TYPE[Pcd.DatumType]:\r
+ EdkLogger.error("build", AUTOGEN_ERROR,\r
+ "Too large PCD value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
+ ExtraData="[%s]" % str(Info))\r
+ if Pcd.DatumType == TAB_UINT64 and not Value.endswith('ULL'):\r
+ Value += 'ULL'\r
+ elif Pcd.DatumType != TAB_UINT64 and not Value.endswith('U'):\r
+ Value += 'U'\r
+\r
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if not Pcd.MaxDatumSize:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))\r
AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
if PcdItemType == TAB_PCDS_PATCHABLE_IN_MODULE:\r
- GetModeMaxSizeName = '_PCD_GET_MODE_MAXSIZE' + '_' + TokenCName\r
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[TAB_PCDS_PATCHABLE_IN_MODULE] + '_' + TokenCName\r
if DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if DatumType == TAB_VOID and Array == '[]':\r
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))\r
- AutoGenH.Append('#define %s %s\n' % (GetModeMaxSizeName, PatchPcdMaxSizeVariable))\r
+ AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, PatchPcdMaxSizeVariable))\r
AutoGenH.Append('extern const UINTN %s; \n' % PatchPcdMaxSizeVariable)\r
else:\r
AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))\r
AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)\r
\r
ConstFixedPcd = False\r
- if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and (key in Info.ConstPcd or (Info.IsLibrary and not Info._ReferenceModules)):\r
+ if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and (key in Info.ConstPcd or (Info.IsLibrary and not Info.ReferenceModules)):\r
ConstFixedPcd = True\r
if key in Info.ConstPcd:\r
Pcd.DefaultValue = Info.ConstPcd[key]\r