OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OcResetSystemLib.c
Go to the documentation of this file.
1
9#include <Base.h>
10
11#include <Library/BaseLib.h>
12#include <Library/DebugLib.h>
14#include <Library/ResetSystemLib.h>
15#include <Library/UefiRuntimeServicesTableLib.h>
16
17VOID
18EFIAPI
20 VOID
21 )
22{
23 gRT->ResetSystem (
24 EfiResetCold,
25 EFI_SUCCESS,
26 0,
27 NULL
28 );
29 //
30 // Attempt to perform a cold reset manually if the UEFI call does not work.
31 //
33 CpuDeadLoop ();
34}
35
36VOID
37EFIAPI
39 VOID
40 )
41{
42 //
43 // Warm resets can cause issues, reset cold instead.
44 //
45 ResetCold ();
46}
47
48VOID
49EFIAPI
51 VOID
52 )
53{
54 gRT->ResetSystem (
55 EfiResetShutdown,
56 EFI_SUCCESS,
57 0,
58 NULL
59 );
60 //
61 // Perform cold reset when shutdown fails (e.g. DUET).
62 //
63 ResetCold ();
64}
65
66VOID
67EFIAPI
69 IN EFI_STATUS ResetStatus,
70 IN UINTN DataSize,
71 IN VOID *ResetData
72 )
73{
74 gRT->ResetSystem (
75 EfiResetPlatformSpecific,
76 ResetStatus,
77 DataSize,
78 ResetData
79 );
80 ResetCold ();
81}
82
83VOID
84EFIAPI
86 IN UINTN DataSize,
87 IN VOID *ResetData
88 )
89{
90 InternalResetPlatformSpecific (EFI_SUCCESS, DataSize, ResetData);
91}
92
93VOID
94EFIAPI
96 IN EFI_RESET_TYPE ResetType,
97 IN EFI_STATUS ResetStatus,
98 IN UINTN DataSize,
99 IN VOID *ResetData OPTIONAL
100 )
101{
102 switch (ResetType) {
103 case EfiResetCold:
104 {
105 ResetCold ();
106 break;
107 }
108
109 case EfiResetWarm:
110 {
111 ResetWarm ();
112 break;
113 }
114
115 case EfiResetShutdown:
116 {
117 ResetShutdown ();
118 break;
119 }
120
121 case EfiResetPlatformSpecific:
122 {
123 InternalResetPlatformSpecific (ResetStatus, DataSize, ResetData);
124 break;
125 }
126 }
127
128 ASSERT (FALSE);
129}
VOID DirectResetCold(VOID)
Definition DirectReset.c:16
VOID EFIAPI ResetWarm(VOID)
VOID EFIAPI ResetShutdown(VOID)
VOID EFIAPI ResetSystem(IN EFI_RESET_TYPE ResetType, IN EFI_STATUS ResetStatus, IN UINTN DataSize, IN VOID *ResetData OPTIONAL)
VOID EFIAPI InternalResetPlatformSpecific(IN EFI_STATUS ResetStatus, IN UINTN DataSize, IN VOID *ResetData)
VOID EFIAPI ResetPlatformSpecific(IN UINTN DataSize, IN VOID *ResetData)
VOID EFIAPI ResetCold(VOID)
EFI_RUNTIME_SERVICES * gRT
#define ASSERT(x)
Definition coder.h:55