X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Fcpu%2Farmv8%2Ffwcall.c;h=c2202675366f37d3853f1ef3e5d4d11d2b4a3e08;hb=90351547ceeb76c1337757c51af0fb5a2c30bd02;hp=64539f9cc61f03022d7114e2f5566dcca654f0b8;hpb=b6575f34e20ddc40baa391c2db0e1e015e942af2;p=oweals%2Fu-boot.git diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c index 64539f9cc6..c220267536 100644 --- a/arch/arm/cpu/armv8/fwcall.c +++ b/arch/arm/cpu/armv8/fwcall.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2014, Cavium Inc. + * (C) Copyright 2017, Xilinx Inc. * * SPDX-License-Identifier: GPL-2.0+ **/ @@ -18,7 +19,7 @@ * x0~x7: input arguments * x0~x3: output arguments */ -static void EFI_RUNTIME_TEXT hvc_call(struct pt_regs *args) +static void __efi_runtime hvc_call(struct pt_regs *args) { asm volatile( "ldr x0, %0\n" @@ -52,7 +53,7 @@ static void EFI_RUNTIME_TEXT hvc_call(struct pt_regs *args) * x0~x3: output arguments */ -void EFI_RUNTIME_TEXT smc_call(struct pt_regs *args) +void __efi_runtime smc_call(struct pt_regs *args) { asm volatile( "ldr x0, %0\n" @@ -82,9 +83,9 @@ void EFI_RUNTIME_TEXT smc_call(struct pt_regs *args) * use PSCI on U-Boot running below a hypervisor, please detect * this and set the flag accordingly. */ -static const EFI_RUNTIME_DATA bool use_smc_for_psci = true; +static const __efi_runtime_data bool use_smc_for_psci = true; -void __noreturn EFI_RUNTIME_TEXT psci_system_reset(void) +void __noreturn __efi_runtime psci_system_reset(void) { struct pt_regs regs; @@ -99,7 +100,7 @@ void __noreturn EFI_RUNTIME_TEXT psci_system_reset(void) ; } -void __noreturn EFI_RUNTIME_TEXT psci_system_off(void) +void __noreturn __efi_runtime psci_system_off(void) { struct pt_regs regs; @@ -114,6 +115,22 @@ void __noreturn EFI_RUNTIME_TEXT psci_system_off(void) ; } +#ifdef CONFIG_CMD_POWEROFF +int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + puts("poweroff ...\n"); + + udelay(50000); /* wait 50 ms */ + + disable_interrupts(); + + psci_system_off(); + + /*NOTREACHED*/ + return 0; +} +#endif + #ifdef CONFIG_PSCI_RESET void reset_misc(void) { @@ -121,7 +138,7 @@ void reset_misc(void) } #ifdef CONFIG_EFI_LOADER -void EFI_RUNTIME_TEXT EFIAPI efi_reset_system( +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)