//\r
InitializeSpinLock (mPFLock);\r
\r
+ mPhysicalAddressBits = 32;\r
+\r
if (FeaturePcdGet (PcdCpuSmmProfileEnable)) {\r
//\r
// Set own Page Fault entry instead of the default one, because SMM Profile\r
}\r
}\r
\r
+ //\r
+ // If NULL pointer was just accessed\r
+ //\r
+ if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0 &&\r
+ (PFAddress < EFI_PAGE_SIZE)) {\r
+ DEBUG ((DEBUG_ERROR, "!!! NULL pointer access !!!\n"));\r
+ DEBUG_CODE (\r
+ DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextIa32->Eip);\r
+ );\r
+ CpuDeadLoop ();\r
+ }\r
+\r
if (FeaturePcdGet (PcdCpuSmmProfileEnable)) {\r
SmmProfilePFHandler (\r
SystemContext.SystemContextIa32->Eip,\r
BOOLEAN IsSplitted;\r
BOOLEAN PageTableSplitted;\r
\r
+ //\r
+ // Don't mark page table as read-only if heap guard is enabled.\r
+ //\r
+ // BIT2: SMM page guard enabled\r
+ // BIT3: SMM pool guard enabled\r
+ //\r
+ if ((PcdGet8 (PcdHeapGuardPropertyMask) & (BIT3 | BIT2)) != 0) {\r
+ return ;\r
+ }\r
+\r
DEBUG ((DEBUG_INFO, "SetPageTableAttributes\n"));\r
\r
//\r