12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * 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
|