Add volatile qualifier to page table related variable to prevent compiler from optimizing away the variables which may lead to unexpected result.
Signed-off-by: Zhou Jianfeng <jianfeng.z...@intel.com> Cc: Ray Ni <ray...@intel.com> Cc: Laszlo Ersek <ler...@redhat.com> Cc: Rahul Kumar <rahul1.ku...@intel.com> Cc: Gerd Hoffmann <kra...@redhat.com> Cc: Pedro Falcato <pedro.falc...@gmail.com> Cc: Zhang Di <di.zh...@intel.com> Cc: Tan Dun <dun....@intel.com> --- .../Library/CpuPageTableLib/CpuPageTableMap.c | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c index 2ea40666cc..996e4001fa 100644 --- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c +++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c @@ -20,13 +20,13 @@ **/ VOID PageTableLibSetPte4K ( - IN OUT IA32_PTE_4K *Pte4K, - IN UINT64 Offset, - IN IA32_MAP_ATTRIBUTE *Attribute, - IN IA32_MAP_ATTRIBUTE *Mask + IN OUT volatile IA32_PTE_4K *Pte4K, + IN UINT64 Offset, + IN IA32_MAP_ATTRIBUTE *Attribute, + IN IA32_MAP_ATTRIBUTE *Mask ) { - IA32_PTE_4K LocalPte4K; + volatile IA32_PTE_4K LocalPte4K; LocalPte4K.Uint64 = Pte4K->Uint64; if (Mask->Bits.PageTableBaseAddressLow || Mask->Bits.PageTableBaseAddressHigh) { @@ -94,13 +94,13 @@ PageTableLibSetPte4K ( **/ VOID PageTableLibSetPleB ( - IN OUT IA32_PAGE_LEAF_ENTRY_BIG_PAGESIZE *PleB, - IN UINT64 Offset, - IN IA32_MAP_ATTRIBUTE *Attribute, - IN IA32_MAP_ATTRIBUTE *Mask + IN OUT volatile IA32_PAGE_LEAF_ENTRY_BIG_PAGESIZE *PleB, + IN UINT64 Offset, + IN IA32_MAP_ATTRIBUTE *Attribute, + IN IA32_MAP_ATTRIBUTE *Mask ) { - IA32_PAGE_LEAF_ENTRY_BIG_PAGESIZE LocalPleB; + volatile IA32_PAGE_LEAF_ENTRY_BIG_PAGESIZE LocalPleB; LocalPleB.Uint64 = PleB->Uint64; if (Mask->Bits.PageTableBaseAddressLow || Mask->Bits.PageTableBaseAddressHigh) { @@ -171,11 +171,11 @@ PageTableLibSetPleB ( **/ VOID PageTableLibSetPle ( - IN UINTN Level, - IN OUT IA32_PAGING_ENTRY *Ple, - IN UINT64 Offset, - IN IA32_MAP_ATTRIBUTE *Attribute, - IN IA32_MAP_ATTRIBUTE *Mask + IN UINTN Level, + IN OUT volatile IA32_PAGING_ENTRY *Ple, + IN UINT64 Offset, + IN IA32_MAP_ATTRIBUTE *Attribute, + IN IA32_MAP_ATTRIBUTE *Mask ) { if (Level == 1) { @@ -195,12 +195,12 @@ PageTableLibSetPle ( **/ VOID PageTableLibSetPnle ( - IN OUT IA32_PAGE_NON_LEAF_ENTRY *Pnle, - IN IA32_MAP_ATTRIBUTE *Attribute, - IN IA32_MAP_ATTRIBUTE *Mask + IN OUT volatile IA32_PAGE_NON_LEAF_ENTRY *Pnle, + IN IA32_MAP_ATTRIBUTE *Attribute, + IN IA32_MAP_ATTRIBUTE *Mask ) { - IA32_PAGE_NON_LEAF_ENTRY LocalPnle; + volatile IA32_PAGE_NON_LEAF_ENTRY LocalPnle; LocalPnle.Uint64 = Pnle->Uint64; if (Mask->Bits.Present) { -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115873): https://edk2.groups.io/g/devel/message/115873 Mute This Topic: https://groups.io/mt/104524857/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-