\r
@param[in] SupportedFeatureMask The pointer to CPU feature bits mask buffer\r
@param[in] OrFeatureBitMask The feature bit mask to do OR operation\r
+ @param[in] BitMaskSize The CPU feature bits mask buffer size.\r
+\r
**/\r
VOID\r
SupportedMaskOr (\r
IN UINT8 *SupportedFeatureMask,\r
- IN UINT8 *OrFeatureBitMask\r
+ IN UINT8 *OrFeatureBitMask,\r
+ IN UINT32 BitMaskSize\r
)\r
{\r
UINTN Index;\r
- UINTN BitMaskSize;\r
UINT8 *Data1;\r
UINT8 *Data2;\r
\r
- BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);\r
Data1 = SupportedFeatureMask;\r
Data2 = OrFeatureBitMask;\r
for (Index = 0; Index < BitMaskSize; Index++) {\r
//\r
SupportedMaskOr (\r
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,\r
- CpuFeature->FeatureMask\r
+ CpuFeature->FeatureMask,\r
+ CpuFeaturesData->BitMaskSize\r
);\r
} else if (CpuFeature->SupportFunc (ProcessorNumber, CpuInfo, CpuFeature->ConfigData)) {\r
SupportedMaskOr (\r
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,\r
- CpuFeature->FeatureMask\r
+ CpuFeature->FeatureMask,\r
+ CpuFeaturesData->BitMaskSize\r
);\r
}\r
Entry = Entry->ForwardLink;\r
InitializeListHead (&CpuFeaturesData->FeatureList);\r
InitializeSpinLock (&CpuFeaturesData->CpuFlags.MemoryMappedLock);\r
InitializeSpinLock (&CpuFeaturesData->CpuFlags.ConsoleLogLock);\r
+ //\r
+ // Driver has assumption that these three PCD should has same buffer size.\r
+ //\r
+ ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesCapability));\r
+ ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesSupport));\r
CpuFeaturesData->BitMaskSize = (UINT32) BitMaskSize;\r
}\r
ASSERT (CpuFeaturesData->BitMaskSize == BitMaskSize);\r