\r
Copyright (c) 2017 - 2018, Linaro Ltd. All rights reserved.<BR>\r
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2022, Arm Limited. All rights reserved.<BR>\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
VOID\r
)\r
{\r
- // Map a warm reset into a cold reset\r
- ResetCold ();\r
+ UINTN Arg1;\r
+ UINTN Ret;\r
+\r
+ Arg1 = ARM_SMC_ID_PSCI_SYSTEM_RESET2_AARCH64;\r
+\r
+ // Is SYSTEM_RESET2 supported?\r
+ Ret = ArmCallSmc0 (ARM_SMC_ID_PSCI_FEATURES, &Arg1, NULL, NULL);\r
+ if (Ret == ARM_SMC_PSCI_RET_SUCCESS) {\r
+ // Send PSCI SYSTEM_RESET2 command\r
+ ArmCallSmc0 (Arg1, NULL, NULL, NULL);\r
+ } else {\r
+ // Map a warm reset into a cold reset\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "Warm reboot not supported by platform, issuing cold reboot\n"\r
+ ));\r
+ ResetCold ();\r
+ }\r
}\r
\r
/**\r