xref: /rk3399_ARM-atf/plat/rockchip/common/pmusram/cpus_on_fixed_addr.S (revision 0cc1e68a85051f34f030541cf71f7fe5b6734055)
1*010d6ae3SXiaoDong Huang/*
2*010d6ae3SXiaoDong Huang * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3*010d6ae3SXiaoDong Huang *
4*010d6ae3SXiaoDong Huang * SPDX-License-Identifier: BSD-3-Clause
5*010d6ae3SXiaoDong Huang */
6*010d6ae3SXiaoDong Huang
7*010d6ae3SXiaoDong Huang#include <arch.h>
8*010d6ae3SXiaoDong Huang#include <asm_macros.S>
9*010d6ae3SXiaoDong Huang#include <platform_def.h>
10*010d6ae3SXiaoDong Huang#include <cpus_on_fixed_addr.h>
11*010d6ae3SXiaoDong Huang
12*010d6ae3SXiaoDong Huang	.globl sys_sleep_flag_sram
13*010d6ae3SXiaoDong Huang	.globl pmu_cpuson_entrypoint
14*010d6ae3SXiaoDong Huang
15*010d6ae3SXiaoDong Huang	.macro pmusram_entry_func _name
16*010d6ae3SXiaoDong Huang	.section .pmusram.entry, "ax"
17*010d6ae3SXiaoDong Huang	.type \_name, %function
18*010d6ae3SXiaoDong Huang	.cfi_startproc
19*010d6ae3SXiaoDong Huang	\_name:
20*010d6ae3SXiaoDong Huang	.endm
21*010d6ae3SXiaoDong Huang
22*010d6ae3SXiaoDong Huangpmusram_entry_func pmu_cpuson_entrypoint
23*010d6ae3SXiaoDong Huang	adr	x5, sys_sleep_flag_sram
24*010d6ae3SXiaoDong Huang	ldr	w2, [x5, #PSRAM_DT_PM_FLAG]
25*010d6ae3SXiaoDong Huang
26*010d6ae3SXiaoDong Huang	tbz	w2, #PM_WARM_BOOT_SHT, sys_resume_sp
27*010d6ae3SXiaoDong Huang	ldr	x1, =platform_cpu_warmboot
28*010d6ae3SXiaoDong Huang	br	x1
29*010d6ae3SXiaoDong Huangsys_resume_sp:
30*010d6ae3SXiaoDong Huang	adr	x5, sys_sleep_flag_sram
31*010d6ae3SXiaoDong Huang	ldr	x1, [x5, #PSRAM_DT_SP]
32*010d6ae3SXiaoDong Huang	mov	sp, x1
33*010d6ae3SXiaoDong Huangddr_resume:
34*010d6ae3SXiaoDong Huang	ldr	x1, [x5, #PSRAM_DT_DDR_FUNC]
35*010d6ae3SXiaoDong Huang	cmp	x1, #0
36*010d6ae3SXiaoDong Huang	b.eq	sys_resume
37*010d6ae3SXiaoDong Huang	blr	x1
38*010d6ae3SXiaoDong Huangsys_resume:
39*010d6ae3SXiaoDong Huang	ldr	x1, =bl31_warm_entrypoint
40*010d6ae3SXiaoDong Huang	br	x1
41*010d6ae3SXiaoDong Huangendfunc pmu_cpuson_entrypoint
42*010d6ae3SXiaoDong Huang
43*010d6ae3SXiaoDong Huang	.section .pmusram.data, "a"
44*010d6ae3SXiaoDong Huang	.align  3
45*010d6ae3SXiaoDong Huangsys_sleep_flag_sram:
46*010d6ae3SXiaoDong Huang	.rept	PSRAM_DT_SIZE_WORDS
47*010d6ae3SXiaoDong Huang	.word	0
48*010d6ae3SXiaoDong Huang	.endr
49