UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmbase" with PatchInstructionX86()
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / SmramSaveState.c
index 3188d438181ccbed40e9d981e62dd4b8dfe792a9..d34345d5ff8034515165fd782c10402a69f88cea 100644 (file)
@@ -105,11 +105,11 @@ typedef struct {
 ///\r
 /// Variables from SMI Handler\r
 ///\r
-extern UINT32           gSmbase;\r
-extern volatile UINT32  gSmiStack;\r
-extern UINT32           gSmiCr3;\r
-extern volatile UINT8   gcSmiHandlerTemplate[];\r
-extern CONST UINT16     gcSmiHandlerSize;\r
+X86_ASSEMBLY_PATCH_LABEL gPatchSmbase;\r
+extern volatile UINT32   gSmiStack;\r
+extern UINT32            gSmiCr3;\r
+extern volatile UINT8    gcSmiHandlerTemplate[];\r
+extern CONST UINT16      gcSmiHandlerSize;\r
 \r
 //\r
 // Variables used by SMI Handler\r
@@ -718,7 +718,7 @@ InstallSmiHandler (
   //\r
   gSmiStack             = (UINT32)((UINTN)SmiStack + StackSize - sizeof (UINTN));\r
   gSmiCr3               = Cr3;\r
-  gSmbase               = SmBase;\r
+  PatchInstructionX86 (gPatchSmbase, SmBase, 4);\r
   gSmiHandlerIdtr.Base  = IdtBase;\r
   gSmiHandlerIdtr.Limit = (UINT16)(IdtSize - 1);\r
 \r