summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/cpu/armv8/fwcall.c15
-rw-r--r--arch/arm/include/asm/system.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c
index 6bb68f2..b3ef7c0 100644
--- a/arch/arm/cpu/armv8/fwcall.c
+++ b/arch/arm/cpu/armv8/fwcall.c
@@ -97,3 +97,18 @@ void __noreturn psci_system_reset(void)
while (1)
;
}
+
+void __noreturn psci_system_off(void)
+{
+ struct pt_regs regs;
+
+ regs.regs[0] = ARM_PSCI_0_2_FN_SYSTEM_OFF;
+
+ if (use_smc_for_psci)
+ smc_call(&regs);
+ else
+ hvc_call(&regs);
+
+ while (1)
+ ;
+}
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 5166c65..b928bd8 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -116,6 +116,7 @@ void flush_l3_cache(void);
void smc_call(struct pt_regs *args);
void __noreturn psci_system_reset(void);
+void __noreturn psci_system_off(void);
#endif /* __ASSEMBLY__ */