///\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
//\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