]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update this module from DXE_DRIVER to DXE_RUNTIME_DRIVER and convert mSmmControl...
authorhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Mar 2010 07:15:40 +0000 (07:15 +0000)
committerhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 10 Mar 2010 07:15:40 +0000 (07:15 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10227 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/SmmControl2OnSmmControlThunk/SmmControl2OnSmmControlThunk.c
EdkCompatibilityPkg/Compatibility/SmmControl2OnSmmControlThunk/SmmControl2OnSmmControlThunk.h
EdkCompatibilityPkg/Compatibility/SmmControl2OnSmmControlThunk/SmmControl2OnSmmControlThunk.inf

index 8abd56ecd6cfef3c9c00b6082652c9ccec17c857..d9ae25c7b928e718d44acd919e411f58793d0f38 100644 (file)
@@ -84,6 +84,26 @@ SmmControl2Clear (
   return mSmmControl->Clear (mSmmControl, Periodic);\r
 }\r
 \r
+/**\r
+  Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.\r
+\r
+  This is a notification function registered on EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event.\r
+  It convers pointer to new virtual address.\r
+\r
+  @param[in]  Event        Event whose notification function is being invoked.\r
+  @param[in]  Context      Pointer to the notification function's context.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+SetVirtualAddressNotify (\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
+  )\r
+{\r
+  EfiConvertPointer (0x0, (VOID **)&mSmmControl);\r
+}\r
+\r
 /**\r
   Entry Point for this thunk driver.\r
 \r
@@ -101,6 +121,7 @@ SmmControl2ThunkMain (
   )\r
 {\r
   EFI_STATUS               Status;\r
+  EFI_EVENT                Event;\r
   EFI_SMM_CONTROL_REGISTER RegisterInfo;\r
 \r
   ///\r
@@ -115,6 +136,20 @@ SmmControl2ThunkMain (
   ASSERT_EFI_ERROR (Status);\r
   mDataPort = RegisterInfo.SmiDataRegister;\r
 \r
+  ///\r
+  /// Create event on SetVirtualAddressMap() to convert mSmmControl from a physical address to a virtual address\r
+  ///\r
+  Status = gBS->CreateEventEx (\r
+                  EVT_NOTIFY_SIGNAL,\r
+                  TPL_NOTIFY,\r
+                  SetVirtualAddressNotify,\r
+                  NULL,\r
+                  &gEfiEventVirtualAddressChangeGuid,\r
+                  &Event\r
+                  );\r
+                  \r
+  ASSERT_EFI_ERROR (Status);\r
+\r
   ///\r
   /// Publish framework SMM Control Protocol\r
   ///\r
index a74b8299c19779461798660341881566d0001fd0..6493731e88dd1b5ddde68d17f7396d087f1d3acf 100644 (file)
 \r
 #include <PiDxe.h>\r
 #include <FrameworkSmm.h>\r
+\r
+#include <Protocol/SmmControl2.h>\r
+#include <Protocol/SmmControl.h>\r
+\r
+#include <Guid/EventGroup.h>\r
+\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiRuntimeLib.h>\r
 #include <Library/IoLib.h>\r
-#include <Protocol/SmmControl2.h>\r
-#include <Protocol/SmmControl.h>\r
 \r
 /**\r
   Invokes SMI activation from either the preboot or runtime environment.\r
index fd780297e7a5be9e601a86ea6274bad2ec16545b..4f770e75b72925970f3f98ce9001f19d2a0d6745 100644 (file)
@@ -17,7 +17,7 @@
   INF_VERSION                    = 0x00010005\r
   BASE_NAME                      = SmmControl2OnSmmControlThunk\r
   FILE_GUID                      = B55A4515-5895-4ea8-845B-75B7480F6502\r
-  MODULE_TYPE                    = DXE_DRIVER\r
+  MODULE_TYPE                    = DXE_RUNTIME_DRIVER\r
   VERSION_STRING                 = 1.0\r
   ENTRY_POINT                    = SmmControl2ThunkMain\r
 \r
@@ -39,6 +39,7 @@
 [LibraryClasses]\r
   UefiDriverEntryPoint\r
   UefiBootServicesTableLib\r
+  UefiRuntimeLib\r
   DebugLib\r
   IoLib\r
 \r
@@ -46,6 +47,9 @@
   gEfiSmmControlProtocolGuid            # PROTOCOL ALWAYS_CONSUMED\r
   gEfiSmmControl2ProtocolGuid           # PROTOCOL ALWAYS_PRODUCED\r
 \r
+[Guids]\r
+  gEfiEventVirtualAddressChangeGuid     # GUID ALWAYS_CONSUMED\r
+\r
 [Depex]\r
   gEfiSmmControlProtocolGuid\r
 \r