1/* 2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7#include <arch.h> 8#include <asm_macros.S> 9#include <platform_def.h> 10 11 .globl pmu_cpuson_entrypoint 12 .macro pmusram_entry_func _name 13 .section .pmusram.entry, "ax" 14 .type \_name, %function 15 .cfi_startproc 16 \_name: 17 .endm 18 19pmusram_entry_func pmu_cpuson_entrypoint 20 21#if PSRAM_CHECK_WAKEUP_CPU 22check_wake_cpus: 23 mrs x0, MPIDR_EL1 24 and x1, x0, #MPIDR_CPU_MASK 25 and x0, x0, #MPIDR_CLUSTER_MASK 26 orr x0, x0, x1 27 28 /* primary_cpu */ 29 ldr w1, boot_mpidr 30 cmp w0, w1 31 b.eq sys_wakeup 32 33 /* 34 * If the core is not the primary cpu, 35 * force the core into wfe. 36 */ 37wfe_loop: 38 wfe 39 b wfe_loop 40sys_wakeup: 41#endif 42 43#if PSRAM_DO_DDR_RESUME 44ddr_resume: 45 ldr x2, =__bl31_sram_stack_end 46 mov sp, x2 47 bl dmc_resume 48#endif 49 bl sram_restore 50sys_resume: 51 bl bl31_warm_entrypoint 52endfunc pmu_cpuson_entrypoint 53