/* * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include .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