xref: /rk3399_ARM-atf/lib/cpus/aarch64/generic.S (revision 35b2bbf4942689fd52fa741ac7d93bc7f1d4c230)
11994e562SJavier Almansa Sobrino/*
2*89dba82dSBoyan Karatotev * Copyright (c) 2020-2025, Arm Limited. All rights reserved.
31994e562SJavier Almansa Sobrino *
41994e562SJavier Almansa Sobrino * SPDX-License-Identifier: BSD-3-Clause
51994e562SJavier Almansa Sobrino */
61994e562SJavier Almansa Sobrino
71994e562SJavier Almansa Sobrino#include <arch.h>
81994e562SJavier Almansa Sobrino#include <asm_macros.S>
91994e562SJavier Almansa Sobrino#include <common/bl_common.h>
101994e562SJavier Almansa Sobrino#include <generic.h>
111994e562SJavier Almansa Sobrino#include <cpu_macros.S>
121994e562SJavier Almansa Sobrino#include <plat_macros.S>
131994e562SJavier Almansa Sobrino
14*89dba82dSBoyan Karatotevcpu_reset_prologue generic
15*89dba82dSBoyan Karatotev
161994e562SJavier Almansa Sobrinofunc generic_core_pwr_dwn
171994e562SJavier Almansa Sobrino	mov	x18, x30
181994e562SJavier Almansa Sobrino
191994e562SJavier Almansa Sobrino	/* ---------------------------------------------
201994e562SJavier Almansa Sobrino	 * Flush L1 caches.
211994e562SJavier Almansa Sobrino	 * ---------------------------------------------
221994e562SJavier Almansa Sobrino	 */
231994e562SJavier Almansa Sobrino	mov	x0, #DCCISW
241994e562SJavier Almansa Sobrino	bl	dcsw_op_level1
251994e562SJavier Almansa Sobrino
261994e562SJavier Almansa Sobrino	ret	x18
271994e562SJavier Almansa Sobrinoendfunc generic_core_pwr_dwn
281994e562SJavier Almansa Sobrino
291994e562SJavier Almansa Sobrinofunc generic_cluster_pwr_dwn
301994e562SJavier Almansa Sobrino	mov	x18, x30
311994e562SJavier Almansa Sobrino
321994e562SJavier Almansa Sobrino	/* ---------------------------------------------
331994e562SJavier Almansa Sobrino	 * Flush L1 caches.
341994e562SJavier Almansa Sobrino	 * ---------------------------------------------
351994e562SJavier Almansa Sobrino	 */
361994e562SJavier Almansa Sobrino	mov	x0, #DCCISW
371994e562SJavier Almansa Sobrino	bl	dcsw_op_level1
381994e562SJavier Almansa Sobrino
391994e562SJavier Almansa Sobrino	/* ---------------------------------------------
401994e562SJavier Almansa Sobrino	 * Disable the optional ACP.
411994e562SJavier Almansa Sobrino	 * ---------------------------------------------
421994e562SJavier Almansa Sobrino	 */
431994e562SJavier Almansa Sobrino	bl	plat_disable_acp
441994e562SJavier Almansa Sobrino
451994e562SJavier Almansa Sobrino	/* ---------------------------------------------
461994e562SJavier Almansa Sobrino	 * Flush L2 caches.
471994e562SJavier Almansa Sobrino	 * ---------------------------------------------
481994e562SJavier Almansa Sobrino	 */
491994e562SJavier Almansa Sobrino	mov	x0, #DCCISW
501994e562SJavier Almansa Sobrino	bl	dcsw_op_level2
511994e562SJavier Almansa Sobrino
521994e562SJavier Almansa Sobrino	ret	x18
531994e562SJavier Almansa Sobrino
541994e562SJavier Almansa Sobrinoendfunc generic_cluster_pwr_dwn
551994e562SJavier Almansa Sobrino
561994e562SJavier Almansa Sobrino/* ---------------------------------------------
571994e562SJavier Almansa Sobrino * Unimplemented functions.
581994e562SJavier Almansa Sobrino * ---------------------------------------------
591994e562SJavier Almansa Sobrino */
601994e562SJavier Almansa Sobrino.equ	generic_cpu_reg_dump,		0
610d020822SBoyan Karatotev
620d020822SBoyan Karatotevcpu_reset_func_start generic
630d020822SBoyan Karatotevcpu_reset_func_end generic
641994e562SJavier Almansa Sobrino
651994e562SJavier Almansa Sobrinodeclare_cpu_ops generic, AARCH64_GENERIC_MIDR, \
661994e562SJavier Almansa Sobrino	generic_reset_func, \
671994e562SJavier Almansa Sobrino	generic_core_pwr_dwn, \
681994e562SJavier Almansa Sobrino	generic_cluster_pwr_dwn
69