]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/PiSmmCpuDxeSmm/X64/Semaphore.c
UefiCpuPkg/PiSmmCpuDxeSmm: remove DBs from SmmRelocationSemaphoreComplete32()
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / X64 / Semaphore.c
index 6dbcb086aa4dbadcf949ee2f0ff26f4cf589aea5..87f595ddb8c3e432537bd50369cea492a4f169e5 100644 (file)
@@ -15,8 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-extern  UINT32    mSmmRelocationOriginalAddressPtr32;\r
-extern  UINT32    mRebasedFlagAddr32;\r
+X86_ASSEMBLY_PATCH_LABEL gPatchSmmRelocationOriginalAddressPtr32;\r
+X86_ASSEMBLY_PATCH_LABEL gPatchRebasedFlagAddr32;\r
 \r
 UINTN             mSmmRelocationOriginalAddress;\r
 volatile BOOLEAN  *mRebasedFlag;\r
@@ -49,7 +49,11 @@ SemaphoreHook (
   UINTN                 TempValue;\r
 \r
   mRebasedFlag       = RebasedFlag;\r
-  mRebasedFlagAddr32 = (UINT32)(UINTN)mRebasedFlag;\r
+  PatchInstructionX86 (\r
+    gPatchRebasedFlagAddr32,\r
+    (UINT32)(UINTN)mRebasedFlag,\r
+    4\r
+    );\r
 \r
   CpuState = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
   mSmmRelocationOriginalAddress = HookReturnFromSmm (\r
@@ -63,5 +67,9 @@ SemaphoreHook (
   // Use temp value to fix ICC complier warning\r
   //\r
   TempValue = (UINTN)&mSmmRelocationOriginalAddress;\r
-  mSmmRelocationOriginalAddressPtr32 = (UINT32)TempValue;\r
+  PatchInstructionX86 (\r
+    gPatchSmmRelocationOriginalAddressPtr32,\r
+    (UINT32)TempValue,\r
+    4\r
+    );\r
 }\r