--- /dev/null
+/** @file\r
+ Entry point to the Standalone Mm Core.\r
+\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) Microsoft Corporation.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+\r
+#include <PiMm.h>\r
+\r
+#include <Library/StandaloneMmCoreEntryPoint.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseLib.h>\r
+\r
+//\r
+// Cache copy of HobList pointer.\r
+//\r
+VOID *gHobList = NULL;\r
+\r
+/**\r
+ The entry point of PE/COFF Image for the STANDALONE MM Core.\r
+\r
+ This function is the entry point for the STANDALONE MM Core. This function is required to call\r
+ ProcessModuleEntryPointList() and ProcessModuleEntryPointList() is never expected to return.\r
+ The STANDALONE MM Core is responsible for calling ProcessLibraryConstructorList() as soon as the EFI\r
+ System Table and the image handle for the STANDALONE MM Core itself have been established.\r
+ If ProcessModuleEntryPointList() returns, then ASSERT() and halt the system.\r
+\r
+ @param HobStart Pointer to the beginning of the HOB List passed in from the PEI Phase.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+_ModuleEntryPoint (\r
+ IN VOID *HobStart\r
+ )\r
+{\r
+ //\r
+ // Cache a pointer to the HobList\r
+ //\r
+ gHobList = HobStart;\r
+\r
+ //\r
+ // Call the Standalone MM Core entry point\r
+ //\r
+ ProcessModuleEntryPointList (HobStart);\r
+\r
+ //\r
+ // TODO: Set page table here?? AARCH64 has this step for some reason\r
+ //\r
+}\r
+\r
+\r
+/**\r
+ Required by the EBC compiler and identical in functionality to _ModuleEntryPoint().\r
+\r
+ This function is required to call _ModuleEntryPoint() passing in HobStart.\r
+\r
+ @param HobStart Pointer to the beginning of the HOB List passed in from the PEI Phase.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+EfiMain (\r
+ IN VOID *HobStart\r
+ )\r
+{\r
+ _ModuleEntryPoint (HobStart);\r
+}\r