X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=UefiCpuPkg%2FPiSmmCpuDxeSmm%2FX64%2FSmmProfileArch.c;h=b3cd629f5576e3633f7b80d56fbbb649d843773c;hp=c4ec12debb1c444555564dde20b63ab077afa54b;hb=8e496a7abcb78c36b0af47ed473096ef7f171606;hpb=427e3573426fe425141e413d17cf3ff65452fdb8 diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c index c4ec12debb..b3cd629f55 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c @@ -51,7 +51,7 @@ InitSmmS3Cr3 ( // Fill Page-Table-Level4 (PML4) entry // PTEntry = (UINT64*)(UINTN)(Pages - EFI_PAGES_TO_SIZE (1)); - *PTEntry = Pages + IA32_PG_P; + *PTEntry = Pages | PAGE_ATTRIBUTE_BITS; ZeroMem (PTEntry + 1, EFI_PAGE_SIZE - sizeof (*PTEntry)); // @@ -117,7 +117,7 @@ AcquirePage ( // // Link & Record the current uplink // - *Uplink = Address | IA32_PG_P | IA32_PG_RW; + *Uplink = Address | PAGE_ATTRIBUTE_BITS; mPFPageUplink[mPFPageIndex] = Uplink; mPFPageIndex = (mPFPageIndex + 1) % MAX_PF_PAGE_COUNT; @@ -242,9 +242,9 @@ RestorePageTableAbove4G ( // PTE PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK); for (Index = 0; Index < 512; Index++) { - PageTable[Index] = Address | IA32_PG_RW | IA32_PG_P; + PageTable[Index] = Address | PAGE_ATTRIBUTE_BITS; if (!IsAddressValid (Address, &Nx)) { - PageTable[Index] = PageTable[Index] & (INTN)(INT32)(~(IA32_PG_RW | IA32_PG_P)); + PageTable[Index] = PageTable[Index] & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS); } if (Nx && mXdSupported) { PageTable[Index] = PageTable[Index] | IA32_PG_NX; @@ -262,7 +262,7 @@ RestorePageTableAbove4G ( // // Patch to remove present flag and rw flag. // - PageTable[PTIndex] = PageTable[PTIndex] & (INTN)(INT32)(~(IA32_PG_RW | IA32_PG_P)); + PageTable[PTIndex] = PageTable[PTIndex] & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS); } // // Set XD bit to 1 @@ -289,7 +289,7 @@ RestorePageTableAbove4G ( // // Add present flag or clear XD flag to make page fault handler succeed. // - PageTable[PTIndex] |= (UINT64)(IA32_PG_RW | IA32_PG_P); + PageTable[PTIndex] |= (UINT64)(PAGE_ATTRIBUTE_BITS); if ((ErrorCode & IA32_PF_EC_ID) != 0) { // // If page fault is caused by instruction fetch, clear XD bit in the entry.