53 lines
915 B
ArmAsm
53 lines
915 B
ArmAsm
/*
|
|
* Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <arch.h>
|
|
#include <asm_macros.S>
|
|
#include <platform_def.h>
|
|
|
|
.globl pmu_cpuson_entrypoint
|
|
.macro pmusram_entry_func _name
|
|
.section .pmusram.entry, "ax"
|
|
.type \_name, %function
|
|
.cfi_startproc
|
|
\_name:
|
|
.endm
|
|
|
|
pmusram_entry_func pmu_cpuson_entrypoint
|
|
|
|
#if PSRAM_CHECK_WAKEUP_CPU
|
|
check_wake_cpus:
|
|
mrs x0, MPIDR_EL1
|
|
and x1, x0, #MPIDR_CPU_MASK
|
|
and x0, x0, #MPIDR_CLUSTER_MASK
|
|
orr x0, x0, x1
|
|
|
|
/* primary_cpu */
|
|
ldr w1, boot_mpidr
|
|
cmp w0, w1
|
|
b.eq sys_wakeup
|
|
|
|
/*
|
|
* If the core is not the primary cpu,
|
|
* force the core into wfe.
|
|
*/
|
|
wfe_loop:
|
|
wfe
|
|
b wfe_loop
|
|
sys_wakeup:
|
|
#endif
|
|
|
|
#if PSRAM_DO_DDR_RESUME
|
|
ddr_resume:
|
|
ldr x2, =__bl31_sram_stack_end
|
|
mov sp, x2
|
|
bl dmc_resume
|
|
#endif
|
|
bl sram_restore
|
|
sys_resume:
|
|
bl bl31_warm_entrypoint
|
|
endfunc pmu_cpuson_entrypoint
|