1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu#include <arch.h> 8*91f16700Schasinglulu#include <asm_macros.S> 9*91f16700Schasinglulu#include <platform_def.h> 10*91f16700Schasinglulu 11*91f16700Schasinglulu .globl pmu_cpuson_entrypoint 12*91f16700Schasinglulu .macro pmusram_entry_func _name 13*91f16700Schasinglulu .section .pmusram.entry, "ax" 14*91f16700Schasinglulu .type \_name, %function 15*91f16700Schasinglulu .cfi_startproc 16*91f16700Schasinglulu \_name: 17*91f16700Schasinglulu .endm 18*91f16700Schasinglulu 19*91f16700Schasinglulupmusram_entry_func pmu_cpuson_entrypoint 20*91f16700Schasinglulu 21*91f16700Schasinglulu#if PSRAM_CHECK_WAKEUP_CPU 22*91f16700Schasinglulucheck_wake_cpus: 23*91f16700Schasinglulu ldcopr r0, MPIDR 24*91f16700Schasinglulu and r1, r0, #MPIDR_CPU_MASK 25*91f16700Schasinglulu#ifdef PLAT_RK_MPIDR_CLUSTER_MASK 26*91f16700Schasinglulu and r0, r0, #PLAT_RK_MPIDR_CLUSTER_MASK 27*91f16700Schasinglulu#else 28*91f16700Schasinglulu and r0, r0, #MPIDR_CLUSTER_MASK 29*91f16700Schasinglulu#endif 30*91f16700Schasinglulu orr r0, r0, r1 31*91f16700Schasinglulu 32*91f16700Schasinglulu /* primary_cpu */ 33*91f16700Schasinglulu ldr r1, boot_mpidr 34*91f16700Schasinglulu cmp r0, r1 35*91f16700Schasinglulu beq sys_wakeup 36*91f16700Schasinglulu 37*91f16700Schasinglulu /* 38*91f16700Schasinglulu * If the core is not the primary cpu, 39*91f16700Schasinglulu * force the core into wfe. 40*91f16700Schasinglulu */ 41*91f16700Schasingluluwfe_loop: 42*91f16700Schasinglulu wfe 43*91f16700Schasinglulu b wfe_loop 44*91f16700Schasinglulusys_wakeup: 45*91f16700Schasinglulu#endif 46*91f16700Schasinglulu 47*91f16700Schasinglulu#if PSRAM_DO_DDR_RESUME 48*91f16700Schasingluluddr_resume: 49*91f16700Schasinglulu ldr r2, =__bl32_sram_stack_end 50*91f16700Schasinglulu mov sp, r2 51*91f16700Schasinglulu bl dmc_resume 52*91f16700Schasinglulu#endif 53*91f16700Schasinglulu bl sram_restore 54*91f16700Schasinglulusys_resume: 55*91f16700Schasinglulu bl sp_min_warm_entrypoint 56*91f16700Schasingluluendfunc pmu_cpuson_entrypoint 57