#include <asm-offsets.h>
#include <config.h>
+#include <efi_loader.h>
#include <version.h>
#include <asm/macro.h>
#include <asm/psci.h>
* x0~x7: input arguments
* x0~x3: output arguments
*/
-static void hvc_call(struct pt_regs *args)
+static void __efi_runtime hvc_call(struct pt_regs *args)
{
asm volatile(
"ldr x0, %0\n"
* x0~x3: output arguments
*/
-void smc_call(struct pt_regs *args)
+void __efi_runtime smc_call(struct pt_regs *args)
{
asm volatile(
"ldr x0, %0\n"
* use PSCI on U-Boot running below a hypervisor, please detect
* this and set the flag accordingly.
*/
-static const bool use_smc_for_psci = true;
+static const __efi_runtime_data bool use_smc_for_psci = true;
-void __noreturn psci_system_reset(void)
+void __noreturn __efi_runtime psci_system_reset(void)
{
struct pt_regs regs;
;
}
-void __noreturn psci_system_off(void)
+void __noreturn __efi_runtime psci_system_off(void)
{
struct pt_regs regs;
{
psci_system_reset();
}
+
+#ifdef CONFIG_EFI_LOADER
+void __efi_runtime EFIAPI efi_reset_system(
+ enum efi_reset_type reset_type,
+ efi_status_t reset_status,
+ unsigned long data_size, void *reset_data)
+{
+ switch (reset_type) {
+ case EFI_RESET_COLD:
+ case EFI_RESET_WARM:
+ psci_system_reset();
+ break;
+ case EFI_RESET_SHUTDOWN:
+ psci_system_off();
+ break;
+ }
+
+ while (1) { }
+}
+#endif /* CONFIG_EFI_LOADER */
#endif /* CONFIG_PSCI_RESET */