]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/Library/ResetSystemLib/ResetSystemLib.c
Nt32Pkg: Add the ResetSystemLib in Nt32 Platform.
[mirror_edk2.git] / Nt32Pkg / Library / ResetSystemLib / ResetSystemLib.c
diff --git a/Nt32Pkg/Library/ResetSystemLib/ResetSystemLib.c b/Nt32Pkg/Library/ResetSystemLib/ResetSystemLib.c
new file mode 100644 (file)
index 0000000..743b61c
--- /dev/null
@@ -0,0 +1,98 @@
+/** @file\r
+  \r
+  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
+  This program and the accompanying materials\r
+  are licensed and made available under the terms and conditions of the BSD License\r
+  which accompanies this distribution.  The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+#include <Uefi.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/WinNtLib.h>\r
+\r
+/**\r
+  This function causes a system-wide reset (cold reset), in which\r
+  all circuitry within the system returns to its initial state. This type of reset \r
+  is asynchronous to system operation and operates without regard to\r
+  cycle boundaries.\r
+\r
+  If this function returns, it means that the system does not support cold reset. \r
+**/\r
+VOID\r
+EFIAPI\r
+ResetCold (\r
+  VOID\r
+  )\r
+{\r
+  gWinNt->ExitProcess (0);\r
+  ASSERT (FALSE);\r
+}\r
+\r
+/**\r
+  This function causes a system-wide initialization (warm reset), in which all processors \r
+  are set to their initial state. Pending cycles are not corrupted.\r
+\r
+  If this function returns, it means that the system does not support warm reset.\r
+**/\r
+VOID\r
+EFIAPI\r
+ResetWarm (\r
+  VOID\r
+  )\r
+{\r
+  ResetCold ();\r
+}\r
+\r
+/**\r
+  This function causes the system to enter a power state equivalent \r
+  to the ACPI G2/S5 or G3 states.\r
+\r
+  If this function returns, it means that the system does not support shut down reset.\r
+**/\r
+VOID\r
+EFIAPI\r
+ResetShutdown (\r
+  VOID\r
+  )\r
+{\r
+  ResetCold ();\r
+}\r
+\r
+/**\r
+  This function causes the system to enter S3 and then wake up immediately.\r
+\r
+  If this function returns, it means that the system does not support S3 feature.\r
+**/\r
+VOID\r
+EFIAPI\r
+EnterS3WithImmediateWake (\r
+  VOID\r
+  )\r
+{\r
+  ResetCold ();\r
+}\r
+\r
+/**\r
+  This function causes a systemwide reset. The exact type of the reset is\r
+  defined by the EFI_GUID that follows the Null-terminated Unicode string passed\r
+  into ResetData. If the platform does not recognize the EFI_GUID in ResetData\r
+  the platform must pick a supported reset type to perform.The platform may\r
+  optionally log the parameters from any non-normal reset that occurs.\r
+\r
+  @param[in]  DataSize   The size, in bytes, of ResetData.\r
+  @param[in]  ResetData  The data buffer starts with a Null-terminated string,\r
+                         followed by the EFI_GUID.\r
+**/\r
+VOID\r
+EFIAPI\r
+ResetPlatformSpecific (\r
+  IN UINTN   DataSize,\r
+  IN VOID    *ResetData\r
+  )\r
+{\r
+  ResetCold ();\r
+}\r