xref: /arm-trusted-firmware/plat/amlogic/common/aarch64/aml_helpers.S (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu/*
2*91f16700Schasinglulu * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu *
4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu */
6*91f16700Schasinglulu
7*91f16700Schasinglulu#include <arch.h>
8*91f16700Schasinglulu#include <asm_macros.S>
9*91f16700Schasinglulu#include <assert_macros.S>
10*91f16700Schasinglulu#include <platform_def.h>
11*91f16700Schasinglulu
12*91f16700Schasinglulu	.globl	plat_crash_console_flush
13*91f16700Schasinglulu	.globl	plat_crash_console_init
14*91f16700Schasinglulu	.globl	plat_crash_console_putc
15*91f16700Schasinglulu	.globl	platform_mem_init
16*91f16700Schasinglulu	.globl	plat_is_my_cpu_primary
17*91f16700Schasinglulu	.globl	plat_my_core_pos
18*91f16700Schasinglulu	.globl	plat_reset_handler
19*91f16700Schasinglulu	.globl	plat_calc_core_pos
20*91f16700Schasinglulu
21*91f16700Schasinglulu	/* -----------------------------------------------------
22*91f16700Schasinglulu	 * unsigned int plat_my_core_pos(void);
23*91f16700Schasinglulu	 * -----------------------------------------------------
24*91f16700Schasinglulu	 */
25*91f16700Schasinglulufunc plat_my_core_pos
26*91f16700Schasinglulu	mrs	x0, mpidr_el1
27*91f16700Schasinglulu	b	plat_calc_core_pos
28*91f16700Schasingluluendfunc plat_my_core_pos
29*91f16700Schasinglulu
30*91f16700Schasinglulu	/* -----------------------------------------------------
31*91f16700Schasinglulu	 *  unsigned int plat_calc_core_pos(u_register_t mpidr);
32*91f16700Schasinglulu	 * -----------------------------------------------------
33*91f16700Schasinglulu	 */
34*91f16700Schasinglulufunc plat_calc_core_pos
35*91f16700Schasinglulu	and	x0, x0, #MPIDR_CPU_MASK
36*91f16700Schasinglulu	ret
37*91f16700Schasingluluendfunc plat_calc_core_pos
38*91f16700Schasinglulu
39*91f16700Schasinglulu	/* -----------------------------------------------------
40*91f16700Schasinglulu	 * unsigned int plat_is_my_cpu_primary(void);
41*91f16700Schasinglulu	 * -----------------------------------------------------
42*91f16700Schasinglulu	 */
43*91f16700Schasinglulufunc plat_is_my_cpu_primary
44*91f16700Schasinglulu	mrs	x0, mpidr_el1
45*91f16700Schasinglulu	and	x0, x0, #(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK)
46*91f16700Schasinglulu	cmp	x0, #AML_PRIMARY_CPU
47*91f16700Schasinglulu	cset	w0, eq
48*91f16700Schasinglulu	ret
49*91f16700Schasingluluendfunc plat_is_my_cpu_primary
50*91f16700Schasinglulu
51*91f16700Schasinglulu	/* ---------------------------------------------
52*91f16700Schasinglulu	 * void platform_mem_init(void);
53*91f16700Schasinglulu	 * ---------------------------------------------
54*91f16700Schasinglulu	 */
55*91f16700Schasinglulufunc platform_mem_init
56*91f16700Schasinglulu	ret
57*91f16700Schasingluluendfunc platform_mem_init
58*91f16700Schasinglulu
59*91f16700Schasinglulu	/* ---------------------------------------------
60*91f16700Schasinglulu	 * int plat_crash_console_init(void)
61*91f16700Schasinglulu	 * ---------------------------------------------
62*91f16700Schasinglulu	 */
63*91f16700Schasinglulufunc plat_crash_console_init
64*91f16700Schasinglulu	mov_imm	x0, AML_UART0_AO_BASE
65*91f16700Schasinglulu	mov_imm	x1, AML_UART0_AO_CLK_IN_HZ
66*91f16700Schasinglulu	mov_imm	x2, AML_UART_BAUDRATE
67*91f16700Schasinglulu	b	console_meson_init
68*91f16700Schasingluluendfunc plat_crash_console_init
69*91f16700Schasinglulu
70*91f16700Schasinglulu	/* ---------------------------------------------
71*91f16700Schasinglulu	 * int plat_crash_console_putc(int c)
72*91f16700Schasinglulu	 * Clobber list : x1, x2
73*91f16700Schasinglulu	 * ---------------------------------------------
74*91f16700Schasinglulu	 */
75*91f16700Schasinglulufunc plat_crash_console_putc
76*91f16700Schasinglulu	mov_imm	x1, AML_UART0_AO_BASE
77*91f16700Schasinglulu	b	console_meson_core_putc
78*91f16700Schasingluluendfunc plat_crash_console_putc
79*91f16700Schasinglulu
80*91f16700Schasinglulu	/* ---------------------------------------------
81*91f16700Schasinglulu	 * void plat_crash_console_flush()
82*91f16700Schasinglulu	 * Out : void.
83*91f16700Schasinglulu	 * Clobber list : x0, x1
84*91f16700Schasinglulu	 * ---------------------------------------------
85*91f16700Schasinglulu	 */
86*91f16700Schasinglulufunc plat_crash_console_flush
87*91f16700Schasinglulu	mov_imm	x0, AML_UART0_AO_BASE
88*91f16700Schasinglulu	b	console_meson_core_flush
89*91f16700Schasingluluendfunc plat_crash_console_flush
90*91f16700Schasinglulu
91*91f16700Schasinglulu	/* ---------------------------------------------
92*91f16700Schasinglulu	 * void plat_reset_handler(void);
93*91f16700Schasinglulu	 * ---------------------------------------------
94*91f16700Schasinglulu	 */
95*91f16700Schasinglulufunc plat_reset_handler
96*91f16700Schasinglulu	ret
97*91f16700Schasingluluendfunc plat_reset_handler
98